Kubespray
1. Kubespray版本介紹
1.1 版本區別
Kubespray版本 |
默認支持最低K8S版本 |
默認支持最高K8S版本 |
kubernetes二進制文件 |
release-2.12 |
v1.15.0 |
v1.17.0 |
Kubeadm,kubelet,kubectl |
release-2.11 |
v1.14.0 |
v1.15.11 |
Hyperkube,kubeadm |
release-2.10 |
v1.12.0 |
v1.14.6 |
Hyperkube,kubeadm |
release-2.9 |
v1.12.0 |
v1.14.0 |
Hyperkube,kubeadm |
release-2.8 |
v1.10.0 |
v1.12.7 |
Hyperkube,kubeadm |
release-2.7 |
v1.10.0 |
v1.11.3 |
Hyperkube,kubeadm |
1.2 總結
Kubespray release-2.12 以下版本均需要下載hyperkube二進制文件。
2. Kubespray國內在線部署K8S升級方案
2.1 修改docker-ce Yum源
目標部署主機上設置 docker-ce yum源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
2.2 kubespray配置修改
2.2.1 修改鏡像下載與二進制文件下載地址
由於鏡像和二進制資源均為國外的資源,我們需要修改download下的資源地址。
文件路徑為:/root/kubespray/roles/download/defaults/main.yml
2.2.1.1 修改鏡像地址為Azure中國鏡像
原文件:
修改后:
2.2.2.2 修改二進制文件地址為本地HTTP服務器地址
原文件:
修改后:
2.2.2 ETCD高可用配置修改
yml文件路徑:
~/kubespray/roles/kubernetes/preinstall/tasks/0020-verify-settings.yml
2.2.3 docker 本地yum安裝源文件拷貝
待處理
2.3 K8S默認部署配置修改
根據實際情況修改
/root/kubespray/roles/kubespray-defaults/defaults/main.yml
如kube_service_addresses,kube_pods_subnet
2.4 配置inventory文件
2.4.1 拷貝inventory.ini模板文件
cp –r /root/kubespray/inventory/sample/inventory.ini /root/kubespray/
2.4.2 根據要求修改inventory.ini文件
2.5 Ansible主機上設置免密碼操作其它主機
2.5.1生成ssh公鑰和私鑰
ssh-keygen
2.5.2建立ssh通道,將秘鑰分發給主機
ssh-copy-id root@192.168.56.20
2.6 k8s集群部署
目標版本:v1.13.1
Kubespray版本:2.10
2.6.1 進入kubespray目錄
cd kubespray
2.6.2 執行部署命令
ansible-playbook cluster.yml -b -i inventory.ini -e kube_version=v1.13.1 -vvv
2.7 k8s集群升級
Kubespray 升級k8s是利用kubeadm進行升級,kubeadm目前支持跨越一個版本的,如1.13的只支持升到1.14,1.14只能升到1.15。
可升級列表:
a) Docker
b) Etcd
c) kubelet and kube-proxy
d) network_plugin (Calico 或flannel)
e) kube-apiserver, kube-scheduler, and kube-controller-manager
f) Add-ons (KubeDNS)
2.7.1 組件升級
2.7.1.1 升級 docker
ansible-playbook -b -i inventory/sample/hosts.ini cluster.yml --tags=docker
2.7.1.2 升級 etcd
ansible-playbook -b -i inventory/sample/hosts.ini cluster.yml --tags=etcd
2.7.1.3 升級 vault
ansible-playbook -b -i inventory/sample/hosts.ini cluster.yml --tags=vault
2.7.1.4 升級 kubelet
ansible-playbook -b -i inventory/sample/hosts.ini cluster.yml --tags=node --skip-tags=k8s-gen-certs,k8s-gen-tokens
2.7.1.5 升級 Kubernetes master 組件
ansible-playbook -b -i inventory/sample/hosts.ini cluster.yml --tags=master
2.7.1.6 升級 network plugins
ansible-playbook -b -i inventory/sample/hosts.ini cluster.yml --tags=network
2.7.1.7 升級 all add-ons:
ansible-playbook -b -i inventory/sample/hosts.ini cluster.yml --tags=apps
2.7.2 k8s集群整體版本升級
2.7.2.1 升級背景
版本變化:v1.13.1 -> v1.15.3
原始版本:v1.13.1 部署環境:kubespray2.12版本以下部署
目標版本:v1.15.3 部署環境:kubespray所有版本應均可以部署(暫測試2.10,2.12)
升級計划:使用kubespray2.10 將k8s v1.13.1 升至 v1.14.3
使用kubespray2.12 將k8s v1.14.3 升至 v1.15.3
2.7.2.2 具體步驟
2.7.2.2.1 配置kubespray 2.10
參考步驟2.2~2.4
2.7.2.2.2 將K8S升級至v1.14.3
- cd kubespray-2.10
- ansible-playbook upgrade-cluster.yml -b -i inventory.ini -e kube_version=v1.14.3 –vvv
2.7.2.2.3 配置kubespray 2.12
參考步驟2.2~2.4
2.7.2.2.4 將K8S升級至v1.15.3
- cd kubespray-2.12
- ansible-playbook upgrade-cluster.yml -b -i inventory.ini -e kube_version=v1.15.3 –vvv
3. Kubespray內網部署升級K8S方案
3.1 docker-ce 本地yum源配置
部署主機上配置本地的yum源
3.2 kubespray配置修改
參考2.2將各地址配置成本地docker鏡像倉庫,及本地的http文件下載服務器的地址
3.2.1 目標部署主機配置docker鏡像源
vim /etc/docker/daemon.json
3.2.2 ETCD高可用配置修改
參考2.2.2
3.3 K8S默認部署配置修改
參考2.3
3.4 配置inventory文件
參考2.4
3.5 Ansible主機上設置免密碼操作其它主機
參考2.5
3.6 k8s集群部署
參考2.6
3.7 k8s集群升級
參考2.7