在上一篇文章中(国内快速部署kubernetes集群的最佳实践——官方教程+阿里镜像源),已经说明了如何使用kubeadm安装最新稳定版k8s
本文探讨如何在上一篇教程的基础上,修改一些步骤,实现安装指定版本的k8s,并在这里提供两个示例:安装k8s v1.16和k8s v1.14。
项目github仓库:https://github.com/usualheart/install_k8s_official
安装指定版本k8s需要注意的三个地方:
- docker版本需要兼容下面就是docker过新而要安装的k8s比较旧导致的结果root@k8s0:~/install_k8s_official$ sudo ./init-master.sh [init] Using Kubernetes version: v1.16.2 [preflight] Running pre-flight checks [WARNING SystemVerification]: this Docker version is not on the list of validated versions: 19.03.11. Latest validated version: 18.09 error execution phase preflight: [preflight] Some fatal errors occurred: [ERROR NumCPU]: the number of available CPUs 1 is less than the required 2 [preflight] If you know what you are doing, you can make a check non-fatal with `--ignore-preflight-errors=...` To see the stack trace of this error execute with --v=5 or higher
- kubeadm、kubelet、kubectl需要兼容
- kubeadm init的时候可能需要额外指定一些参数。这个可以查阅k8s kubeadm的官方文档
apt查询/安装指定版本的方法
通过网站搜索
https://packages.ubuntu.com/
apt查询
apt-cache madison
列出所有版本
apt-show-versions -a <>
通过apt-get安装指定版本
apt-get install <>=<>
下边给出部署k8s v1.16和v1.14的示例。
部署k8s v1.16
安装与k8s v1.16兼容的docker版本:
sudo apt-get install docker-ce=5:18.09.0~3-0~ubuntu-xenial docker-ce-cli=5:18.09.0~3-0~ubuntu-xenial containerd.io=1.2.0-1
安装指定版本的kubeadm kubectl kubelet
# 列出apt可以安装哪些版本apt-cache madison kubeadm kubectl kubelet# 安装指定版本 可以根据需要进行修改sudo apt-get install kubeadm=1.16.10-00 kubelet=1.16.10-00 kubectl=1.16.10-00
初始化k8s集群master时需要指定kubernetes版本
使用kubeadm初始化一个master 可以通过修改kubernetes-version来指定kubernetes版本 也可以编写一个yaml配置文件来实现更复杂的自定义
sudo kubeadm init --apiserver-advertise-address 192.168.56.101 --kubernetes-version=v1.16.2 --image-repository=registry.aliyuncs.com/google_containers
--image-repository选项指定了自定义的镜像仓库来代替gcr.io 避免国内无法下载的问题--kubernetes-version=v1.16.2设置了kubernetes的版本 需要注意这里的版本要与docker兼容
更多细节可以参考k8s官方文档对kubeadm init的说明
部署k8s v1.14
k8s v1.14版本依赖
软件版本docker-ce17.03.0ce-0ubuntu-xenialdocker-ce-cliV17 docker只需要安装docker-cecontainerd.ioV17 docker只需要安装docker-cekubeadmv1.14.10kubeletv1.14.10kubectlv1.14.10kubernetesv1.14.10
参考v1.16中的安装语法安装即可。
kubeadm初始化集群
kubeadm init --apiserver-advertise-address 172.16.4.100 --pod-network-cidr=192.168.100.0/24 --kubernetes-version=v1.14.10 --image-repository=registry.aliyuncs.com/google_containers
注意
--pod-network-cidr=192.168.100.0/24 是安装v1.14特有的,如果不指定,之后安装pod网络插件会失败