前言
k8s集群在Node节点数量少的情况下,逐台去维护是可行的,但是如果Node节点数量多的情况下,再去想着我大不了一台一台来维护可能就不现实了。而且k8s的每个版本都差不多只有14个月的支持时间。可能还没稳定下来,一个新的版本已经更新了。这样一来版本升级的工作就变的会比较多一些。为了能够保证k8s集群维护的便利性和完整性,使用kubeadm工具是一个比较好的选择。
安装前的准备
- https://developer.aliyun.com/mirror/kubernetes 参考此页面安装kubeadm
- https://developer.aliyun.com/mirror/docker-ce 参考此页面安装containerd,不是安装docker-ce
- https://kubernetes.io/zh-cn/docs/setup/production-environment/container-runtimes/ 转发ipv4并让iptables看到桥接流量
- 禁用swap
- 禁用selinux
- 在hosts文件中配置主机名解析
使用kubeadm创建集群
- kubeadm init
--apiserver-advertise-address=0.0.0.0
--image-repository registry.aliyuncs.com/google_containers
--service-cidr=10.1.0.0/16
--pod-network-cidr=10.244.0.0/16 - ctr -n k8s.io i tag registry.aliyuncs.com/google_containers/pause:3.6 registry.k8s.io/pause:3.6
- kubectl apply -f https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml
创建集群时过程概述
- falling back to the local client version: v1.28.2 出现此提示是因为安装参数中没有指定k8s集群的版本,同时又访问不了dl.k8s.io网站,最后使用和本地的版本一致的k8s版本。
- detected that the sandbox image 检测pause镜像
- preflight 预检,就是对安装环境进行预检
- certs 证书创建过程,这个过程如果手工去创建很麻烦。因为要创建很多证书。
- kubeconfig 通过kubeconfig创建认证文件的过程,即创建kubectl连接apiserver、scheduler连接apiserver时的kubeconfig文件等。
建议
如果各位是想要学习K8S的部署安装,那推荐使用二进制手工编译的方式,因为二进制编译安装的话会遇到很多问题,解决问题的过程就是学习K8S的过程。kubeadm只不过是将这个过程直接自动化部署了,标准化了安装过程。