Kubernetes 1.9已經發布,可以開始考慮將團隊線上環境的Kubernetes集群從1.7升級到1.8了。 本文記錄了在測試環境中的演練過程。
從 [github release](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG.md) 頁面,下載最新版本。
# 準備
當前Kubernetes 1.8的小版本是1.8.7。 在升級之前一定要多讀幾遍官方的升級須知Kubernetes 1.8 - Action Required Before Upgrading。其中和我們相關的:
- 從Kubernetes 1.8開始如果Node上開啟了swap,kubelet會啟動失敗。所以如果服務器是專門用作k8s Node節點的話需要將系統的swap關閉。因為我們測試環境中k8s的Node上還部署了一些遺留服務,為了穩定性,這里不會關閉Swap,需要kubelet加上啟動參數--fail-swap-on=false。這個需要在我們的ansible role中做更新。
- CronJob API進入beta階段,現在的版本是v1beta1,但v2alpha1在Kubernetes 1.8中仍然可用。可以在完成集群的升級后,將集群中部署的CronJob統一修改到v1beta1。最后才可以移除apiserver的--runtime-config=batch/v2alpha1=true。
- rbac/v1alpha1, settings/v1alpha1, and scheduling/v1alpha1 APIs在Kubernetes 1.8中默認被禁用。
- 在Kubernetes 1.8中工作負載API版本升級到了apps/v1beta2,可以在集群升級到1.8后對集群中部署的DaemonSet,Deployment,ReplicaSet做修改。
### 使用ansible升級Kubernetes核心組件
接下來嘗試使用ansible將Kubernetes的核心組件從1.7升級到1.8。 直接使用二進制包覆蓋原有路徑。
ansible kube-node -m unarchive -a 'src=/root/k8s/k8s-v1.8.7/kubernetes-server-linux-amd64.tar.gz dest=/usr/local/'
### 生產使用建議關閉 swap
Kubernetes 1.8開始要求關閉系統的Swap,如果不關閉,默認配置下kubelet將無法啟動。可以通過kubelet的啟動參數--fail-swap-on=false更改這個限制。 我們這里關閉系統的Swap:
swapoff -a
修改 /etc/fstab 文件,注釋掉 SWAP 的自動掛載,使用free -m確認swap已經關閉。
swappiness參數調整,修改/etc/sysctl.d/k8s.conf添加下面一行:
vm.swappiness=0
### 重啟kubelet服務
systemctl restart kubelet.service
### 檢查node 是否升級成功
[root@cd-k8s-master k8s-v1.8.7]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
172.16.200.206 Ready <none> 121d v1.8.7
172.16.200.209 Ready <none> 171d v1.8.7
172.16.200.216 Ready <none> 126d v1.8.7
- 第一章 kubernetes 功能介紹
- 第二章 在CentOS上部署kubernetes1.7.6集群
- 第三章 創建TLS證書和秘鑰
- 第四章 安裝kubectl命令行工具
- 第五章 創建kubeconfig 文件
- 第六章 etcd 集群部署
- 第七章 部署k8s-master-v1.7.6節點
- 第八章 部署k8s-v1.7.6 node 節點
- 第九章 kubectl 操作示例
- 第十章 在kubernetes 部署第一個應用
- 第十一章 kubernetes之pod 調度
- 第十二章 K8S服務組件之kube-dns&Dashboard
- 第十三章 Kubernetes中的角色訪問控制機制(RBAC)支持
- 第十四章 部署nginx ingress
- 第十五章 使用Prometheus監控Kubernetes集群和應用
- 第十六章 使用helm 應用部署工具
- 第十七章 kubernetes 從1.7 到1.8升級記錄
- 第十八章 在kubernetes 使用ceph
- 第十九章 基于 Jenkins 的 CI/CD(一)
- 第二十章 基于jenkins的CI/CD(二)
- 第二十一章 基于prometheus自定指標HPA彈性伸縮