【Kubernetes】使用 kubeadm 分步构建 K8s 控制面
·
在 Kubernetes 集群的部署实践中,
kubeadm init往往是我们的起点。一条长命令敲下去,几分钟后,一个崭新的控制面就运行起来了。当初始化卡在wait-control-plane,或是证书意外过期时,这种方式就会让排错变得困难。本文将带你跳出单条命令的束缚,通过分步执行kubeadm init phase,像调试程序一样去拆解和掌控集群的初始化流程。
1、长命令初始化
# 长命令初始化
kubeadm init --apiserver-advertise-address=192.168.140.130 --image-repository=registry.cn-hangzhou.aliyuncs.com/google_containers --kubernetes-version=v1.34.3 --service-cidr=10.96.0.0/16 --pod-network-cidr=10.244.0.0/16
# 参数介绍
## --apiserver-advertise-address:API Server 对外暴露的 IP
## --image-repository:拉镜像的前缀
## --kubernetes-version:明确锁定版本
## --service-cidr:Service 的 VIP 网段(kube-proxy / kube-apiserver 用)
## --pod-network-cidr:Pod 网段(CNI 插件必须匹配)

2、命令行参数转换为 YAML 文件
# 命令行参数
kubeadm init \
--apiserver-advertise-address=192.168.140.130 \
--image-repository=registry.cn-hangzhou.aliyuncs.com/google_containers \
--kubernetes-version=v1.34.3 \
--service-cidr=10.96.0.0/16 \
--pod-network-cidr=10.244.0.0/16
# YAML 文件
## 生成默认配置文件
kubeadm config print init-defaults > kubeadm-init.yaml
## 进行参数修改(具体见截图)

3、分步初始化
# 1) 跑预检
sudo kubeadm init phase preflight --config=kubeadm-init.yaml
# 2) 生成证书
sudo kubeadm init phase certs all --config=kubeadm-init.yaml
# 3) 生成 kubeconfig
sudo kubeadm init phase kubeconfig all --config=kubeadm-init.yaml
# 4) 写 etcd / 控制面 静态 Pod 清单
sudo kubeadm init phase etcd local --config=kubeadm-init.yaml
sudo kubeadm init phase control-plane all --config=kubeadm-init.yaml
# 5) 启动 kubelet 并等控制面起来
sudo kubeadm init phase kubelet-start --config=kubeadm-init.yaml
sudo kubeadm init phase wait-control-plane
# 6) 后续收尾
sudo kubeadm init phase upload-config all --config=kubeadm-init.yaml
sudo kubeadm init phase mark-control-plane --config=kubeadm-init.yaml
sudo kubeadm init phase bootstrap-token --config=kubeadm-init.yaml
sudo kubeadm init phase kubelet-finalize all --config=kubeadm-init.yaml
sudo kubeadm init phase addon all --config=kubeadm-init.yaml
# 7)配置 kubectl 命令
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
export KUBECONFIG=/etc/kubernetes/admin.conf



更多推荐
所有评论(0)