上一章主要安装容器运行环境,这一章讲使用kubeadm来创建k8s集群
1.安装kubeadm, kubelet and kubectl
在所有计算机上安装这些软件包
- kubeadm:用来引导集群的命令
- kubelet:在群集中的所有计算机上运行的组件,并执行诸如启动pod和容器之类的操作。
- kubectl:用于与群集通信的命令工具
kubeadm不会安装或者管理kubelet和kubectl,因此,您需要确保它们与kubeadm安装的Kubernetes control plane的版本相匹配。如果不这样做,则存在版本偏差的风险,这可能导致意外的错误行为。但是kubelet和control plane之间的一个小版本是相互支持的,不过kubelet版本永远不会超过API server版本。例如,运行1.7.0的kubelet应该与1.8.0 API服务器完全兼容,但不能相反。
#允许apt使用https方式下载安装秘钥。
apt-get update && apt-get install -y apt-transport-https curl
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -
cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
deb https://apt.kubernetes.io/ kubernetes-xenial main
EOF
apt-get update
#通过apt安装kubelet kubeadm kubectl
apt-get install -y kubelet kubeadm kubectl
#标记kubelet kubeadm kubectl不自动更新
apt-mark hold kubelet kubeadm kubectl
现在kubelet没几秒钟会重启一次直到kubeadm告诉它做什么。
2.配置control plane节点上的kubelet使用cgroup驱动程序
使用Docker时,kubeadm会自动检测kubelet的cgroup驱动程序并在运行时将其设置在
/var/lib/kubelet/kubeadm-flags.env
文件里。如果你用其他的容器运行环境,你需要将
/etc/default/kubelet
文件修改成你的cgroup-driver值。比如:
KUBELET_EXTRA_ARGS=--cgroup-driver=<value>
这个文件会被
kubeadm init
和
kubeadm join
命令用来为kubelet提供额外的用户定义参数。
请注意,当你的容器运行环境的cgroup驱动不是cgroupfs才这样做。因为它的默认值在kubelet中的已经有了。
需要重启kubelet
systemctl daemon-reload
systemctl restart kubelet
cgroup驱动会在运行中会自动发现其他像CRI-O的容器运行环境