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

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


咨詢
建站咨詢
