Kubernetes 是升級一個(gè)開(kāi)源的容器編排系統,用于自動(dòng)化部署、版本擴展和ヽ(′?`)ノ管理容器化應用程序,升級隨著(zhù)時(shí)間的版本推移,Kubernetes 不斷地更新和升級,升級以提供新功能、版本修復漏洞(′?ω?`)和提高性能,升級本文將介紹如何將 Kubernetes 集群升級至 1.18 版本。版本 在升級 Kubernetes 之前,升級需要確保已經(jīng)完成了以下準備工作: 1、版本確保所有的升級節點(diǎn)都已經(jīng)安裝了最新版本的 kubelet、kubectl 和 kubeadm,版本(T_T)這些組件是升級運行 Kubernetes 集群的基礎(chu)。 2、版本為所有節點(diǎn)生成并分發(fā) ca 證書(shū)和 kubeconfig 文件,升級ca 證書(shū)用于??建立(li)信任關(guān)系,而 kubeconfig 文件包含了訪(fǎng)問(wèn)集群所需的信息。 3、在升級之前,建議先備份當前的集群狀態(tài),可以使用 1、更新控制平面組件 需要更新控制平面組件,包括 etcd、API Server 和 Controll??er Manager,可以(′;ω;`)通過(guò)以下命令進(jìn)行升級: 注意:請根據實(shí)際情況替換 2、更新工作??負載組件 接下來(lái),需要更新工作負載組件,包括 kubelet、kube-proxy 和 cni,可以通過(guò)以下命令進(jìn)行升級: 注意:請根據實(shí)際情況替換 ‘ ‘ ‘ | sed ‘s/ //g’) ‘ R(O_O)16; ‘ | sed ‘s/ //g’) 3、驗(yan)證升級結果 完成上述步驟后,可以通過(guò)以下命令驗證升級是否成功: 4、可能遇到的問(wèn)題及解答 Q: 為什么在升級過(guò)程中會(huì )遇到權限問(wèn)題? A: 這可能是因為當前用戶(hù)沒(méi)有足夠的權限執行升級操作,可以嘗試使用 root 或者具有相應(?????)權限的用戶(hù)進(jìn)行升級,還可以檢查 準備工作
kubec┐(′ー`)┌tl get nodes、kubectl get pods --ヽ(′?`)ノall-namespaces 和 kubectl get deployments --all-namespaces 等命令進(jìn)行備份。升級步驟
停止 API Servers??udo systemc??tl stop kube-apiserver停止 etcdsudoヽ(′▽?zhuān)?/ systemctl stop etcd停止 Controller Ma(′ω`)nagersudo systemctl stop kube-controller-manager下載新的 etcd 鏡像(如果使用的是 kubeadm)sudo kubeadm config images pull etcd --config=/etc/kubernetes/admin.conf --manifest-dir=/etc/kubernetes/manifests使用 kubeadm upgrade apiserver 將 API Server 升級到最新的穩定版本sudo kubeadm upgrade api??serv(′_`)er --to-version=v1.18.0 --config=/etc/kubernetes/admin.conf --manifest-dir=/etc/kubernetes/manifests使用 kubeadm upgrade controll(′?_?`)er-manager 將 Controller Manager 升級到最新的??穩定版本sudo kubeadm upgrade controller-manager --to-version=v1.18.0 --config=/etc/kubernetes/admin.conf --manifest-dir=/etc/kubernetes/manifests啟動(dòng)新的 etcd 實(shí)例(如果使用的是 ku??beadm)sudo kubeadm init --control-plane-endpoint "LOAD_BALANCER_DNS:LOAD_BALANCER_PORT" --upload-certs(′?`*) --config=/etc/kubernetes/admin.conf --image-repos??itory registry.aliyuncs.com/google_containers --kubernetes-version v1.18.0 --control-plane-name my-control-plane --service-cidr=10.100.0.0/16 --node-cidr=10.100.0(′?`*).0/16 --networking calico || true
LOAD_BALANCER_DNS、LOAD_BALANCER_POR(′▽?zhuān)?T、registry.aliyuncs.com/google_containers、--control-plane-name、--service-cidr、--node-cidr 和 --networking 等參數。下載新的 kubelet 鏡像(如果使用的是 kubeadm)sudo kubeadm config images pull kubelet --config=/etc/kubernetes/admin.c(′;д;`)onf --manifest-dir=/etc/ku??bernetes/(╬?益?)manife??sts根據操作系統類(lèi)型選擇相應的升級腳本進(jìn)行升級(對于 Ubuntu,可以使用以下命令)s(′?_?`)udo apt update && sudo apt install -y apt-transport-https curl > /dev/null && curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add > /dev/null &&ヽ(′ー`)ノ; echo "deb http://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /et(O_O)c/apt/sources.list.d/kubernetes.list > /dev/null && sudo apt update && sudo apt install -y kub(′▽?zhuān)?)elet=1.18.0-00 kubelet-cimprov=1.18.0-00 kubelet-tools=1.18.0-00 > /dev/nuヽ(′ー`)ノll && sudo apt clean > /dev/null &&(T_T) sudo apt autoremove > /dev/(′?_?`)null && sudo?? apt purge > /dev/null && sudo apt update > /dev/null && sudo apt install kubelet=1.18.0-00 kubelet-cimprov=1.18.0-00 kubelet-tools=1.18.0-00 > /dev/(??ヮ?)?*:???null && sudo systemctl restart kubelet > /dev/null && sudo systemctl?? enable kubelet > /dev/null
kubernetes-xenial 為實(shí)際使用的 Linux 發(fā)行版對應的版本,根據實(shí)際需求調整 --install-cni(′▽?zhuān)?)、--(′_`)cni-bin-dir、--cni-conf-dir、--cni-plugin-dir、--cni-lib-dir、--cni-bin-dir、--ne???twork-plugin=cn??i、--attacha(′?_?`)ble-volumes、--pods-infrastructure=cni、--e(T_T)nable-hostpaths、--hostpath??-path=/opt/cni/bin、--hostpath-type=hostpath:hostPath:bareHostPath:ro,relatime,mode:755,uid:root:0,gid:root:0,si??zヽ(′▽?zhuān)?ノe:1G,requestDir:true,blockStorage:true,mounter:cifs,--mo???unter=cifs,--fstyp??e=cifs,--volumePluginClassName=csi.azureDisk.csiDriver:CSIAzureDiskVolumePlugin,--st(′?_?`)orageClassName=standard,--registry-mirror=$(cat REGISTRY_MIRROR),`–allowPrivilegedContainerRegistryAcces???s=$(echo $ALLOWPRIVILEGEDCONTAINERREGISTRYACCESS | base64 | tr ‘,–experimentalMounterPathOverride=$(echo $EXPERIMENTALMOUNTERPATHOVERRIDE | base64 | tr ‘,以及 ヽ(′▽?zhuān)?/211;node-ip=$(hostname)`,可以??根據實(shí)際情況進(jìn)行調整。查看 API Server 版本kubectl version --client=true | grep "Server version: v" | cut -d' ' -f3 | xargs echo "API Server version: " && echo "v$(cut -d' ' -f3)" || true
~/.kube/config 文件中的認證信息是否正確。





