使用kubeadm部署一套高可用k8s 1.26集群 for AlmaLinux9
基于AlmaLinux9使用kubeadm搭建集群, ubuntu部署文档, 有疑问的地方可以看官方文档
准备机器
我的机器详情如下, 配置至少为4C4G
hostname | IP | 作用 |
---|---|---|
public | 10.0.0.3 | ingress和apiserver的负载均衡,nfs存储 |
master1 | 10.0.0.11 | k8s master节点 |
master2 | 10.0.0.12 | k8s master节点 |
master3 | 10.0.0.13 | k8s master节点 |
worker1 | 10.0.0.21 | k8s worker节点 |
worker2 | 10.0.0.22 | k8s worker节点 |
每台机器都做域名解析,或者绑定hosts(直接使用ip地址会有警告)
1 | vim /etc/hosts |
每台机器都关闭防火墙和SELinux
负载均衡机器必须要关闭,因为6443不是nginx的标准端口,会被selinux拦截, 防火墙也需要放行6443端口, 可以考虑直接关闭防火墙
1 | sudo systemctl disable --now firewalld |
基础环境配置
基础环境是不管master还是worker都需要的环境
- 禁用swap
- 确保每个节点上 MAC 地址和 product_uuid 的唯一性
sudo cat /sys/class/dmi/id/product_uuid
- 修改hostname
安装runtime
先决条件
1 | # 设置必需的 sysctl 参数,这些参数在重新启动后仍然存在。 |
安装
1 | cat <<EOF | sudo tee /etc/modules-load.d/containerd.conf |
配置
从yum源安装的containerd默认禁用了cri,可以使用命令重新生成默认配置
1 | containerd config default | sudo tee /etc/containerd/config.toml |
结合 runc 使用 systemd cgroup 驱动,在 /etc/containerd/config.toml
中设置
1 | [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc] |
1 | sudo systemctl enable containerd |
crictl 配置
之前使用docker的时候,docker给我们做了很多好用的工具,现在用了containerd,管理容器我们用cri管理工具crictl,创建配置文件
vim /etc/crictl.yaml
1 | runtime-endpoint: unix:///run/containerd/containerd.sock |
安装kubeadm、kubelet 和 kubectl
1 | cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo |
准备高可用方案
创建集群
kubeadm init
在master1上执行
1 | sudo kubeadm init \ |
也可以用
kubeadm config print init-defaults > init.yaml
生成kubeadm的配置,并用kubeadm init --config=init.yaml
来创建集群。
安装网络插件
1 | kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml |
1 | 待补充 |
获取join命令, 增加新的节点
node
kubeadm init 后会把加入master节点和加入worker节点的命令输出在终端上, 有效期2小时, 如果超时,可以重新生成
生成添加命令:
1 | kubeadm token create --print-join-command |
master
生成证书, 记录
certificate key
1
kubeadm init phase upload-certs --upload-certs
获取加入命令
1
kubeadm token create --print-join-command
上面两步可以简化成
1
echo "$(kubeadm token create --print-join-command) --control-plane --certificate-key $(kubeadm init phase upload-certs --upload-certs | tail -1)"
常见问题
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 杂烩饭!
评论