Kubernetes 版本鎖定到1.12.3

今天對集羣節點的操做系統一升級,不少服務都不能用了。shell

使用 kubectl version檢查,發現是kubeadm自動升級到1.13.0了,可是kubelet服務仍是1.12.3 。由於kubernetes 1.13的變化比較大,尤爲是etcd使用了版本3的接口,必須對全部集羣數據升級才能用,問題就出在這兒了。ssh

目前升級整個集羣到1.13 工做量比較大,暫時沒有時間,仍是須要繼續使用1.12系列。準備將全部節點降級到原來的1.12.3版本,而且阻止之後的自動升級。spa

ansible 命令以下:操作系統

echo "Install Kubernetes 1.12.3 & Hold the version."

ansible all -f 8 -i hosts_ansible -m shell -a " \ 
apt install kubeadm=1.12.3-00 kubectl=1.12.3-00 kubelet=1.12.3-00 -y --allow-downgrades --allow-change-held-packages && \ 
echo 'kubeadm hold' | dpkg --set-selections && \
echo 'kubectl hold' | dpkg --set-selections && \
echo 'kubelet hold' | dpkg --set-selections \
" --ask-sudo-pass --become --become-method=sudo

其中,hosts_ansible爲宿主機的定義清單文件,參考下面的格式:.net

[local]
10.1.1.201 ansible_ssh_port=22 ansible_ssh_host=10.1.1.201 ansible_ssh_user=supermap ansible_ssh_pass=SuperMap
10.1.1.202 ansible_ssh_port=22 ansible_ssh_host=10.1.1.202 ansible_ssh_user=supermap ansible_ssh_pass=SuperMap
10.1.1.203 ansible_ssh_port=22 ansible_ssh_host=10.1.1.203 ansible_ssh_user=supermap ansible_ssh_pass=SuperMap
10.1.1.142 ansible_ssh_port=22 ansible_ssh_host=10.1.1.142 ansible_ssh_user=supermap ansible_ssh_pass=SuperMap

運行以後,整個集羣的版本被鎖定爲1.12.3,服務已經自動恢復。code

  • 注意,若是沒有足夠的冗餘節點,這一過程會形成服務中斷

參考:blog

相關文章
相關標籤/搜索