新聞中心
Kubernetes 是一個(gè)開源的容器編排系統(tǒng),用于自動(dòng)化部署、擴(kuò)展和管理容器化應(yīng)用程序,隨著時(shí)間的推移,Kubernetes 不斷地更新和升級(jí),以提供新功能、修復(fù)漏洞和提高性能,本文將介紹如何將 Kubernetes 集群升級(jí)至 1.18 版本。

創(chuàng)新互聯(lián)建站專注于華寧企業(yè)網(wǎng)站建設(shè),成都響應(yīng)式網(wǎng)站建設(shè)公司,成都商城網(wǎng)站開發(fā)。華寧網(wǎng)站建設(shè)公司,為華寧等地區(qū)提供建站服務(wù)。全流程定制網(wǎng)站,專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)建站專業(yè)和態(tài)度為您提供的服務(wù)
準(zhǔn)備工作
在升級(jí) Kubernetes 之前,需要確保已經(jīng)完成了以下準(zhǔn)備工作:
1、確保所有的節(jié)點(diǎn)都已經(jīng)安裝了最新版本的 kubelet、kubectl 和 kubeadm,這些組件是運(yùn)行 Kubernetes 集群的基礎(chǔ)。
2、為所有節(jié)點(diǎn)生成并分發(fā) ca 證書和 kubeconfig 文件,ca 證書用于建立信任關(guān)系,而 kubeconfig 文件包含了訪問集群所需的信息。
3、在升級(jí)之前,建議先備份當(dāng)前的集群狀態(tài),可以使用 kubectl get nodes、kubectl get pods --all-namespaces 和 kubectl get deployments --all-namespaces 等命令進(jìn)行備份。
升級(jí)步驟
1、更新控制平面組件
需要更新控制平面組件,包括 etcd、API Server 和 Controller Manager,可以通過以下命令進(jìn)行升級(jí):
停止 API Server sudo systemctl stop kube-apiserver 停止 etcd sudo systemctl stop etcd 停止 Controller Manager sudo 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 升級(jí)到最新的穩(wěn)定版本 sudo kubeadm upgrade apiserver --to-version=v1.18.0 --config=/etc/kubernetes/admin.conf --manifest-dir=/etc/kubernetes/manifests 使用 kubeadm upgrade controller-manager 將 Controller Manager 升級(jí)到最新的穩(wěn)定版本 sudo kubeadm upgrade controller-manager --to-version=v1.18.0 --config=/etc/kubernetes/admin.conf --manifest-dir=/etc/kubernetes/manifests 啟動(dòng)新的 etcd 實(shí)例(如果使用的是 kubeadm) sudo kubeadm init --control-plane-endpoint "LOAD_BALANCER_DNS:LOAD_BALANCER_PORT" --upload-certs --config=/etc/kubernetes/admin.conf --image-repository 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
注意:請(qǐng)根據(jù)實(shí)際情況替換 LOAD_BALANCER_DNS、LOAD_BALANCER_PORT、registry.aliyuncs.com/google_containers、--control-plane-name、--service-cidr、--node-cidr 和 --networking 等參數(shù)。
2、更新工作負(fù)載組件
接下來,需要更新工作負(fù)載組件,包括 kubelet、kube-proxy 和 cni,可以通過以下命令進(jìn)行升級(jí):
下載新的 kubelet 鏡像(如果使用的是 kubeadm) sudo kubeadm config images pull kubelet --config=/etc/kubernetes/admin.conf --manifest-dir=/etc/kubernetes/manifests 根據(jù)操作系統(tǒng)類型選擇相應(yīng)的升級(jí)腳本進(jìn)行升級(jí)(對(duì)于 Ubuntu,可以使用以下命令) sudo 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 /etc/apt/sources.list.d/kubernetes.list > /dev/null && sudo apt update && sudo apt install -y kubelet=1.18.0-00 kubelet-cimprov=1.18.0-00 kubelet-tools=1.18.0-00 > /dev/null && sudo apt clean > /dev/null && 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
注意:請(qǐng)根據(jù)實(shí)際情況替換 kubernetes-xenial 為實(shí)際使用的 Linux 發(fā)行版對(duì)應(yīng)的版本,根據(jù)實(shí)際需求調(diào)整 --install-cni、--cni-bin-dir、--cni-conf-dir、--cni-plugin-dir、--cni-lib-dir、--cni-bin-dir、--network-plugin=cni、--attachable-volumes、--pods-infrastructure=cni、--enable-hostpaths、--hostpath-path=/opt/cni/bin、--hostpath-type=hostpath:hostPath:bareHostPath:ro,relatime,mode:755,uid:root:0,gid:root:0,size:1G,requestDir:true,blockStorage:true,mounter:cifs,--mounter=cifs,--fstype=cifs,--volumePluginClassName=csi.azureDisk.csiDriver:CSIAzureDiskVolumePlugin,--storageClassName=standard,--registry-mirror=$(cat REGISTRY_MIRROR),`–allowPrivilegedContainerRegistryAccess=$(echo $ALLOWPRIVILEGEDCONTAINERREGISTRYACCESS | base64 | tr ‘
‘ ‘ ‘ | sed ‘s/ //g’),–experimentalMounterPathOverride=$(echo $EXPERIMENTALMOUNTERPATHOVERRIDE | base64 | tr ‘
‘ ‘ ‘ | sed ‘s/ //g’),以及 –node-ip=$(hostname)`,可以根據(jù)實(shí)際情況進(jìn)行調(diào)整。
3、驗(yàn)證升級(jí)結(jié)果
完成上述步驟后,可以通過以下命令驗(yàn)證升級(jí)是否成功:
查看 API Server 版本 kubectl version --client=true | grep "Server version: v" | cut -d' ' -f3 | xargs echo "API Server version: " && echo "v$(cut -d' ' -f3)" || true
4、可能遇到的問題及解答
Q: 為什么在升級(jí)過程中會(huì)遇到權(quán)限問題?
A: 這可能是因?yàn)楫?dāng)前用戶沒有足夠的權(quán)限執(zhí)行升級(jí)操作,可以嘗試使用 root 或者具有相應(yīng)權(quán)限的用戶進(jìn)行升級(jí),還可以檢查 ~/.kube/config 文件中的認(rèn)證信息是否正確。
網(wǎng)站欄目:怎樣將升級(jí)Kubernetes版本至1.18
網(wǎng)站鏈接:http://m.fisionsoft.com.cn/article/dpeidgo.html


咨詢
建站咨詢
