kubespray部署升級K8S方案手冊


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
  1. cd kubespray-2.10
  2. 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
  1. cd kubespray-2.12
  2. 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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM