網(wǎng)站構(gòu)建的友情鏈接怎么做營銷的方法和技巧
隨著 Kubernetes 社區(qū)的不斷發(fā)展,即將迎來 Kubernetes 1.30 版本的迭代。在早先的 1.24 版本中,社區(qū)作出一個重要決策:不再默認(rèn)集成 Docker 作為容器運(yùn)行時,即取消了對 Docker 的默認(rèn)支持。這就像咱們家廚房換了個新灶頭,雖然廚藝的本質(zhì)沒變,但用起來感覺肯定不一樣。這篇文章就帶你摸透這個變化,直擊 Kubernetes 1.24+ 版本拋棄 Docker 后的影響,同時手把手教你如何借助 KubeKey 這個神器,讓你在給 Kubernetes “裝修升級” 的過程中既穩(wěn)又順,還能把 Docker 那些貼心好用的功能保留下來。
Docker 移除帶來的潛在風(fēng)險分析
工具鏈與生態(tài)兼容性
- 對于大量使用 Jenkins 等 CI/CD 工具的企業(yè)而言,原先基于 Docker 的鏡像構(gòu)建、推送和拉取流程可能需要重構(gòu)。Jenkinsfile 中的 Docker 構(gòu)建步驟需調(diào)整為兼容 containerd 的方式進(jìn)行,否則可能造成流水線中斷。
- 監(jiān)控系統(tǒng)和其他依賴于 Docker API 的周邊工具需要進(jìn)行改造或更換,以適應(yīng)新的容器運(yùn)行時環(huán)境,這涉及到了大量的驗(yàn)證工作和可能的二次開發(fā)成本。
開發(fā)環(huán)境一致性
開發(fā)者們習(xí)慣了在本地使用 Docker 進(jìn)行快速迭代和測試,移除 Docker 后,需要重新適應(yīng) containerd 或?qū)ふ壹嫒?Docker API 的替代方案,以保持開發(fā)環(huán)境與生產(chǎn)環(huán)境的一致性。
現(xiàn)有運(yùn)維腳本失效
許多自動化腳本、運(yùn)維命令和 Helm Chart 等資源文件可能直接引用了 Docker 命令或依賴于 Docker 的特定行為,這些都需要逐步審查和適配。
升集群時手動保留 Docker 特性的成本分析
運(yùn)維復(fù)雜度增加
- 需要在 Kubernetes 集群中手動集成第三方插件或其他兼容方案以模擬 Docker 的運(yùn)行時環(huán)境,這要求運(yùn)維團(tuán)隊具備更高的技術(shù)水平和對 Kubernetes 內(nèi)部機(jī)制的深入了解。
- 需要密切關(guān)注 Kubernetes 更新與 Docker 兼容性之間的差異,每次升級 Kubernetes 都可能導(dǎo)致與 Docker 集成的部分出現(xiàn)問題,需要額外的時間和精力進(jìn)行維護(hù)和調(diào)試。
集群規(guī)模操作成本劇增
- 假設(shè)面臨如 100 個節(jié)點(diǎn)的集群時,每個節(jié)點(diǎn)上的容器運(yùn)行時切換都需要單獨(dú)進(jìn)行,這意味著至少需要分別在 100 個節(jié)點(diǎn)上執(zhí)行啟停容器運(yùn)行時的操作,耗費(fèi)巨大的人力和時間成本。
- 對于大型集群,這種逐一操作的管理模式極其低效且容易出錯,可能需要編寫復(fù)雜的腳本或者使用批量管理工具,進(jìn)一步增加實(shí)施難度。
測試驗(yàn)證與恢復(fù)預(yù)案
若操作過程中遇到問題,需要有完備的回滾策略和恢復(fù)預(yù)案,準(zhǔn)備應(yīng)對可能發(fā)生的各類異常狀況,以防業(yè)務(wù)長時間受到影響。
總結(jié):?因此,在 Kubernetes 1.24 之后,手動保留 Docker 特性并進(jìn)行大規(guī)模節(jié)點(diǎn)運(yùn)行時切換是一項極具挑戰(zhàn)的任務(wù),不僅會導(dǎo)致高昂的操作成本,還可能帶來較大的業(yè)務(wù)風(fēng)險。相比之下,尋求平滑過渡和兼容方案(如 KubeKey)成為更具性價比的選擇。
什么是 Kubekey
KubeKey 是一個開源的輕量級工具,用于部署 Kubernetes 集群。它提供了一種靈活、快速、方便的方式來安裝 Kubernetes/K3s、Kubernetes/K3s 和 KubeSphere,以及相關(guān)的云原生附加組件。它也是擴(kuò)展和升級集群的有效工具。此外,KubeKey 還支持定制離線包(artifact),方便用戶在離線環(huán)境下快速部署集群。
為什么選擇 Kubekey?
KubeKey 由 Go 語言開發(fā),使用便捷、輕量,支持多種主流 Linux 發(fā)行版。KubeKey 支持多種集群部署模式,例如 All-in-One、多節(jié)點(diǎn)、高可用以及離線集群部署。KubeKey 也支持支持快速構(gòu)建離線安裝包,加速離線交付場景下的集群交付效率。KubeKey 實(shí)現(xiàn)多節(jié)點(diǎn)并行安裝,且利用 Kubeadm 對集群和節(jié)點(diǎn)進(jìn)行初始化,極大地節(jié)省了集群部署時間,同時也遵循了 Kubernetes 社區(qū)主流集群部署方法。KubeKey 提供內(nèi)置高可用模式,支持一鍵部署高可用 Kubernetes 集群。
升級實(shí)操
etcd 數(shù)據(jù)備份
ETCDCTL_API=3 etcdctl --endpoints=https://127.0.0.1:2379 \--cacert=<trusted-ca-file> --cert=<cert-file> --key=<key-file> \snapshot save <backup-file-location>
下載 Kubekey 工具
版本:v3.1.0-rc.2 (這個版本當(dāng)前是穩(wěn)定已測,即將發(fā)布 v3.1.0)。
export KKZONE=cn
支持手動下載:https://github.com/kubesphere/kubekey/releases。
curl -sfL https://get-kk.kubesphere.io | sh -
檢查當(dāng)前集群狀態(tài)
kubectl get node -o wide
準(zhǔn)備集群配置文件
如果創(chuàng)建集群時的配置文件存在,本步驟可跳過。
- 創(chuàng)建當(dāng)前集群配置
./kk create config [--with-kubernetes version] [(-f | --filename) path]
- 填入真實(shí)集群信息
修改 configmap
- 修改 kubeadm-config
注意:確保配置中的 featuregate 在新版本中沒有被移除。
kubectl -n kube-system edit cm kubeadm-config
- 修改 kubelet-config-1.23
注意:確保配置中的 featuregate 在新版本中沒有被移除。
kubectl -n kube-system edit cm kubelet-config-1.23
開始升級
./kk upgrade -f sample.yaml --with-kubernetes v1.24.17 --skip-dependency-check
驗(yàn)證集群版本
kubectl get node -A -o wide
驗(yàn)證容器運(yùn)行時
kubectl get nodes -o json | jq '.items[].status.nodeInfo.containerRuntimeVersion'