Kubernetes 1.16 - 如何在不破壞任何內容的情況下升級

Kubernetes 1.16 - 如何在不破壞任何內容的情況下升級

今天,18 月 1.16 日,Kubernetes 的下一個版本發布了 - XNUMX。 一如既往,許多改進和新產品都等著我們。 但我想提請您注意該文件的“所需操作”部分 變更日誌-1.16.md。 這些部分發布的變更可能會破壞您的應用程式、叢集維護工具或需要變更設定檔。

一般來說,它們需要手動幹預......

讓我們立即開始一項更改,該更改很可能會影響每個長期使用 kubernetes 的人。 Kubernetes API 不再支援舊資源 API 版本。

如果有人不知道或忘記了...資源的 API 版本在清單中的欄位中指示 apiVersion: apps/v1

亦即

資源類型
舊版
應該用什麼代替

所有資源
應用程式/v1beta1
應用程式/v1beta2
應用程式/v1

部署
守護程式集
複製集
擴充/v1beta1
應用程式/v1

網路政策
擴充/v1beta1
網路.k8s.io/v1

Pod 安全策略
擴充/v1beta1
政策/v1beta1

我還想提請您注意以下事實:類型的對象 Ingress 也改變了 apiVersionnetworking.k8s.io/v1beta1。 舊義 extensions/v1beta1 仍然受支持,但有充分的理由在清單中同時更新此版本。

節點上安裝的各種系統標籤(節點標籤)有相當多的變化。

Kubelet 被禁止設定任意標籤(以前可以透過啟動鍵設定 kubelet --node-labels),他們只留下了這個列表 允許的:

kubernetes.io/hostname
kubernetes.io/instance-type
kubernetes.io/os
kubernetes.io/arch

beta.kubernetes.io/instance-type
beta.kubernetes.io/os
beta.kubernetes.io/arch

failure-domain.beta.kubernetes.io/zone
failure-domain.beta.kubernetes.io/region

failure-domain.kubernetes.io/zone
failure-domain.kubernetes.io/region

[*.]kubelet.kubernetes.io/*
[*.]node.kubernetes.io/*

標籤 beta.kubernetes.io/metadata-proxy-ready, beta.kubernetes.io/metadata-proxy-ready 和beta.kubernetes.io/kube-proxy-ds-ready 不再添加到新節點中,並且各種附加元件已開始使用略有不同的標籤作為節點選擇器:

部件
舊標籤
目前標籤

kube-代理
beta.kubernetes.io/kube-proxy-ds-ready
node.kubernetes.io/kube-proxy-ds-ready

IP 遮罩代理
beta.kubernetes.io/masq-agent-ds-ready
node.kubernetes.io/masq-agent-ds-ready

元數據代理
beta.kubernetes.io/元資料代理就緒
cloud.google.com/metadata-proxy-ready

kubeadm 現在刪除其後面的初始 kublet 設定文件 bootstrap-kubelet.conf。 如果您的工具正在存取此文件,則切換到使用 kubelet.conf,它儲存當前的存取設定。

Cadvisor 不再提供指標 pod_name и container_name如果您在 Prometheus 中使用過它們,請前往指標 pod и container 分別

使用 line 指令刪除鍵:

部件
縮回鑰匙

超級庫貝
--make-符號鏈接

kube-代理
--資源容器

調度程序開始使用事件 API v1beta1 版本。 如果您使用第三方工具與Event API交互,請切換到最新版本。

幽默的一刻。 在 1.16 版本的準備過程中,進行了以下更改:

  • 刪除了註釋 scheduler.alpha.kubernetes.io/critical-pod 在版本 v1.16.0-alpha.1 中
  • 回傳了註釋 scheduler.alpha.kubernetes.io/critical-pod 在版本 v1.16.0-alpha.2 中
  • 刪除了註釋 scheduler.alpha.kubernetes.io/critical-pod 在版本 v1.16.0-beta.1 中

使用字段 spec.priorityClassName 來表明 pod 的重要性。

來源: www.habr.com

添加評論