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

原文地址:https://www.cnblogs.com/EthanSun/p/13652336.html