新聞中心
重新配置 kubeadm 集群
kubeadm 不支持自動重新配置部署在托管節(jié)點上的組件的方式。 一種自動化的方法是使用自定義的 operator。

創(chuàng)新互聯(lián)建站主營三穗網(wǎng)站建設的網(wǎng)絡公司,主營網(wǎng)站建設方案,成都APP應用開發(fā),三穗h5微信小程序開發(fā)搭建,三穗網(wǎng)站營銷推廣歡迎三穗等地區(qū)企業(yè)咨詢
要修改組件配置,你必須手動編輯磁盤上關聯(lián)的集群對象和文件。 本指南展示了實現(xiàn) kubeadm 集群重新配置所需執(zhí)行的正確步驟順序。
在開始之前
- 你需要一個使用 kubeadm 部署的集群
- 擁有管理員憑據(jù)(?
/etc/Kubernetes/admin.conf?) 和從安裝了 kubectl 的主機到集群中正在運行的 kube-apiserver 的網(wǎng)絡連接 - 在所有主機上安裝文本編輯器
重新配置集群
kubeadm 在 ConfigMap 和其他對象中寫入了一組集群范圍的組件配置選項。 這些對象必須手動編輯,可以使用命令 ?kubectl edit?。
?kubectl edit? 命令將打開一個文本編輯器,你可以在其中直接編輯和保存對象。 你可以使用環(huán)境變量 ?KUBECONFIG ?和 ?KUBE_EDITOR ?來指定 kubectl 使用的 kubeconfig 文件和首選文本編輯器的位置。
例如:
KUBECONFIG=/etc/kubernetes/admin.conf KUBE_EDITOR=nano kubectl edit
Note:
保存對這些集群對象的任何更改后,節(jié)點上運行的組件可能不會自動更新。 以下步驟將指導你如何手動執(zhí)行該操作。
Warning:
ConfigMaps 中的組件配置存儲為非結構化數(shù)據(jù)(YAML 字符串)。 這意味著在更新 ConfigMap 的內容時不會執(zhí)行驗證。 你必須小心遵循特定組件配置的文檔化 API 格式, 并避免引入拼寫錯誤和 YAML 縮進錯誤。
應用集群配置更改
更新 ClusterConfiguration
在集群創(chuàng)建和升級期間,kubeadm 將其 ?ClusterConfiguration ?寫入 ?kube-system? 命名空間中名為 ?kubeadm-config? 的 ConfigMap。
要更改 ?ClusterConfiguration ?中的特定選項,你可以使用以下命令編輯 ConfigMap:
kubectl edit cm -n kube-system kubeadm-config
配置位于 ?data.ClusterConfiguration? 鍵下。
Note:
?
ClusterConfiguration?包括各種影響單個組件配置的選項, 例如 kube-apiserver、kube-scheduler、kube-controller-manager、 CoreDNS、etcd 和 kube-proxy。 對配置的更改必須手動反映在節(jié)點組件上。
在控制平面節(jié)點上反映 ClusterConfiguration 更改
kubeadm 將控制平面組件作為位于 ?/etc/kubernetes/manifests? 目錄中的靜態(tài) Pod 清單進行管理。 對 ?apiServer?、?controllerManager?、?scheduler ?或 ?etcd?鍵下的 ?ClusterConfiguration ?的任何更改都必須反映在控制平面節(jié)點上清單目錄中的關聯(lián)文件中。
此類更改可能包括:
- ?
extraArgs?- 需要更新傳遞給組件容器的標志列表 - ?
extraMounts?- 需要更新組件容器的卷掛載 - ?
*SANs? - 需要使用更新的主題備用名稱編寫新證書
在繼續(xù)進行這些更改之前,請確保你已備份目錄 ?/etc/kubernetes/?。
要編寫新證書,你可以使用:
kubeadm init phase certs --config
要在 ?/etc/kubernetes/manifests? 中編寫新的清單文件,你可以使用:
kubeadm init phase control-plane --config
?? 內容必須與更新后的 ?ClusterConfiguration ?匹配。 ?? 值必須是組件的名稱。
Note:
更新 ?
/etc/kubernetes/manifests? 中的文件將告訴 kubelet 重新啟動相應組件的靜態(tài) Pod。 嘗試一次對一個節(jié)點進行這些更改,以在不停機的情況下離開集群。
應用 kubelet 配置更改
更新 KubeletConfiguration
在集群創(chuàng)建和升級期間,kubeadm 將其 ?KubeletConfiguration ?寫入 ?kube-system? 命名空間中名為 ?kubelet-config? 的 ConfigMap。 你可以使用以下命令編輯 ConfigMap:
kubectl edit cm -n kube-system kubelet-config
配置位于 ?data.kubelet? 鍵下。
反映 kubelet 的更改
要反映 kubeadm 節(jié)點上的更改,你必須執(zhí)行以下操作:
- 登錄到 kubeadm 節(jié)點
- 運行 ?
kubeadm upgrade node phase kubelet-config? 下載最新的 ?kubelet-config? ConfigMap 內容到本地文件 ?/var/lib/kubelet/config.conf? - 編輯文件 ?
/var/lib/kubelet/kubeadm-flags.env? 以使用標志來應用額外的配置 - 使用 ?
systemctl restart kubelet? 重啟 kubelet 服務
Note:
一次執(zhí)行一個節(jié)點的這些更改,以允許正確地重新安排工作負載。
Note:
在 ?
kubeadm upgrade? 期間,kubeadm 從 ?
kubelet-config? ConfigMap 下載 ?
KubeletConfiguration?并覆蓋 ?
/var/lib/kubelet/config.conf? 的內容。 這意味著節(jié)點本地配置必須通過?
/var/lib/kubelet/kubeadm-flags.env?中的標志或在 kubeadm upgrade 后手動更新/var/lib/kubelet/config.conf`的內容來應用,然后重新啟動 kubelet。
應用 kube-proxy 配置更改
更新 KubeProxyConfiguration
在集群創(chuàng)建和升級期間,kubeadm 將其寫入 ?KubeProxyConfiguration ?在名為 ?kube-proxy? 的 ?kube-system? 命名空間中的 ConfigMap 中。
此 ConfigMap 由 ?kube-system? 命名空間中的 ?kube-proxy? DaemonSet 使用。
要更改 ?KubeProxyConfiguration ?中的特定選項,你可以使用以下命令編輯 ConfigMap:
kubectl edit cm -n kube-system kube-proxy
配置位于 ?data.config.conf? 鍵下。
反映 kube-proxy 的更改
更新 ?kube-proxy? ConfigMap 后,你可以重新啟動所有 kube-proxy Pod:
獲取 Pod 名稱:
kubectl get po -n kube-system | grep kube-proxy
使用以下命令刪除 Pod:
kubectl delete po -n kube-system
將創(chuàng)建使用更新的 ConfigMap 的新 Pod。
Note:
由于 kubeadm 將 kube-proxy 部署為 DaemonSet,因此不支持特定于節(jié)點的配置。
應用 CoreDNS 配置更改
更新 CoreDNS 的 Deployment 和 Service
kubeadm 將 CoreDNS 部署為名為 ?coredns ?的 Deployment,并使用 Service ?kube-dns?, 兩者都在 ?kube-system? 命名空間中。
要更新任何 CoreDNS 設置,你可以編輯 Deployment 和 Service:
kubectl edit deployment -n kube-system coredns
kubectl edit service -n kube-system kube-dns反映 CoreDNS 的更改
應用 CoreDNS 更改后,你可以刪除 CoreDNS Pod。
獲取 Pod 名稱:
kubectl get po -n kube-system | grep coredns
使用以下命令刪除 Pod:
kubectl delete po -n kube-system
將創(chuàng)建具有更新的 CoreDNS 配置的新 Pod。
Note:
kubeadm 不允許在集群創(chuàng)建和升級期間配置 CoreDNS。 這意味著如果執(zhí)行了 ?
kubeadm upgrade apply?,你對 CoreDNS 對象的更改將丟失并且必須重新應用。
持久化重新配置
在受管節(jié)點上執(zhí)行 ?kubeadm upgrade? 期間,kubeadm 可能會覆蓋在創(chuàng)建集群(重新配置)后應用的配置。
持久化 Node 對象重新配置
kubeadm 在特定 Kubernetes 節(jié)點的 Node 對象上寫入標簽、污點、CRI 套接字和其他信息。要更改此 Node 對象的任何內容,你可以使用:
kubectl edit no
在 ?kubeadm upgrade? 期間,此類節(jié)點的內容可能會被覆蓋。 如果你想在升級后保留對 Node 對象的修改,你可以準備一個 kubectl patch 并將其應用到 Node 對象:
kubectl patch no --patch-file
持久化控制平面組件重新配置
控制平面配置的主要來源是存儲在集群中的 ?ClusterConfiguration ?對象。 要擴展靜態(tài) Pod 清單配置,可以使用 patches。
這些補丁文件必須作為文件保留在控制平面節(jié)點上,以確保它們可以被 ?kubeadm upgrade ... --patches ? 使用。
如果對 ?ClusterConfiguration ?和磁盤上的靜態(tài) Pod 清單進行了重新配置,則必須相應地更新節(jié)點特定補丁集。
持久化 kubelet 重新配置
對存儲在 ?/var/lib/kubelet/config.conf? 中的 ?KubeletConfiguration ?所做的任何更改都將在 ?kubeadm upgrade? 時因為下載集群范圍內的 ?kubelet-config? ConfigMap 的內容而被覆蓋。 要持久保存 kubelet 節(jié)點特定的配置,文件?/var/lib/kubelet/config.conf? 必須在升級后手動更新,或者文件?/var/lib/kubelet/kubeadm-flags.env? 可以包含標志。 kubelet 標志會覆蓋相關的 ?KubeletConfiguration ?選項,但請注意,有些標志已被棄用。
更改 ?/var/lib/kubelet/config.conf? 或 ?/var/lib/kubelet/kubeadm-flags.env? 后需要重啟 kubelet。
文章標題:創(chuàng)新互聯(lián)kubernetes教程:Kubernetes重新配置kubeadm集群
瀏覽路徑:http://www.dlmjj.cn/article/cooscoh.html


咨詢
建站咨詢
