本文将通过 kubeadm 实现单 master 节点模式和集群模式两种部署方式。
所有节点均需初始化操作
所有节点均需做的操作。
主机准备
1 | cat > /etc/sysctl.d/kubernets.conf <<EOF |
安装containerd
由于 dockerd 从 k8s 1.24 版本开始不再支持,这里选择 containerd。
手工安装
安装 containerd
1 | wget https://github.com/containerd/containerd/releases/download/v1.6.11/containerd-1.6.11-linux-amd64.tar.gz |
安装 runc
1 | wget https://github.com/opencontainers/runc/releases/download/v1.1.4/runc.amd64 |
yum 源安装
1 | yum install -y yum-utils |
通过 yum 安装的containerd 没有启用 cri,在其配置文件 /etc/containerd/config.toml 中包含了 disabled_plugins = ["cri"]
配置,需要将配置信息注释后并重启 containerd。
1 | sed -i 's/disabled_plugins/#disabled_plugins/' /etc/containerd/config.toml |
安装 kubeadm/kubelet/kubectl
1 | cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo |
单 master 节点模式
节点 | 角色 |
---|---|
172.21.115.190 |
master 节点 |
172.21.115.191 | 普通节点 |
kubeadm 初始化
创建文件 kubeadm-config.yaml
1 | apiVersion: kubeadm.k8s.io/v1beta3 |
kubeadm init –config kubeadm-config.yaml
1 | kubeadm config print init-defaults --component-configs KubeletConfiguration > cluster.yaml |
接下来初始化 kubeconfig 文件,这样即可通过 kubectl 命令来访问 k8s 了。
1 | mkdir -p $HOME/.kube |
安装网络插件
刚部署完成的节点处于NotReady 的状态,原因是因为还没有安装网络插件。本文直接使用 cilim 网络插件。
1 | # 安装 cilium 客户端 |
在安装完网络插件后,node 节点即可变为 ready 状态。
查看环境中包含如下的 pod:
1 | $ kubectl get pod -A |
添加其他节点
1 | kubeadm join 172.21.115.189:6443 --token abcdef.0123456789abcdef \ |
此时即可以将节点添加到 k8s 集群中
1 | $ kubectl get node |
节点清理
清理普通节点
1 | kubectl drain <node name> --delete-emptydir-data --force --ignore-daemonsets |
清理 control plan 节点
1 | kubeadm reset |
集群模式部署
待补充,参考文档:Creating Highly Available Clusters with kubeadm | Kubernetes