以下是 kubeadm init 分阶段命令的完整列表及详细说明,适用于 精准控制集群初始化流程(如调试、自定义证书、高可用部署等场景)
验证系统环境是否满足 Kubernetes 要求。
kubeadm init phase preflight [–config kubeadm.yaml] [–ignore-preflight-errors=…]
Swap 已禁用
容器运行时(Docker/Containerd)正常运行
端口 6443、2379-2380、10250 未被占用
内核参数(如 net.ipv4.ip_forward=1)
生成集群核心组件的 TLS 证书。
子阶段 命令示例 生成文件
根证书 (CA) kubeadm init phase certs ca [--config kubeadm.yaml] /etc/kubernetes/pki/ca.crt, /etc/kubernetes/pki/ca.key
API Server 证书 kubeadm init phase certs apiserver [--config kubeadm.yaml] /etc/kubernetes/pki/apiserver.crt, /etc/kubernetes/pki/apiserver.key
API Server 访问 kubelet 证书 kubeadm init phase certs apiserver-kubelet-client [--config kubeadm.yaml] /etc/kubernetes/pki/apiserver-kubelet-client.crt
前端代理 CA kubeadm init phase certs front-proxy-ca [--config kubeadm.yaml] /etc/kubernetes/pki/front-proxy-ca.crt, /etc/kubernetes/pki/front-proxy-ca.key
前端代理客户端证书 kubeadm init phase certs front-proxy-client [--config kubeadm.yaml] /etc/kubernetes/pki/front-proxy-client.crt
etcd CA kubeadm init phase certs etcd-ca [--config kubeadm.yaml] /etc/kubernetes/pki/etcd/ca.crt, /etc/kubernetes/pki/etcd/ca.key
etcd Server 证书 kubeadm init phase certs etcd-server [--config kubeadm.yaml] /etc/kubernetes/pki/etcd/server.crt
etctl Peer 证书 kubeadm init phase certs etcd-peer [--config kubeadm.yaml] /etc/kubernetes/pki/etcd/peer.crt
etcd 健康检查客户端证书 kubeadm init phase certs etcd-healthcheck-client [--config kubeadm.yaml] /etc/kubernetes/pki/etcd/healthcheck-client.crt
API Server 访问 etcd 证书 kubeadm init phase certs apiserver-etcd-client [--config kubeadm.yaml] /etc/kubernetes/pki/apiserver-etcd-client.crt
服务账户密钥 kubeadm init phase certs sa [--config kubeadm.yaml] /etc/kubernetes/pki/sa.pub, /etc/kubernetes/pki/sa.key
kubeadm init phase certs all --config kubeadm-config .yaml
创建集群通信所需的配置文件。
子阶段 命令示例 生成文件
管理员 kubeconfig kubeadm init phase kubeconfig admin [--config kubeadm.yaml] /etc/kubernetes/admin.conf
kubelet 引导 kubeconfig kubeadm init phase kubeconfig kubelet [--config kubeadm.yaml] /etc/kubernetes/kubelet.conf
Controller Manager kubeadm init phase kubeconfig controller-manager [--config kubeadm.yaml] /etc/kubernetes/controller-manager.conf
Scheduler kubeadm init phase kubeconfig scheduler [--config kubeadm.yaml] /etc/kubernetes/scheduler.conf
kubeadm init phase kubeconfig all --config kubeadm.yaml
在本地节点部署 etcd 集群(单节点模式)。
kubeadm init phase etcd local [--config kubeadm.yaml]
生成文件:etcd 静态 Pod 清单:/etc/kubernetes/manifests/etcd.yaml
生成控制平面组件的静态 Pod 清单(API Server、Controller Manager、Scheduler)
kubeadm init phase control-plane all [--config kubeadm.yaml]
API Server:/etc/kubernetes/manifests/kube-apiserver.yaml
Controller Manager:/etc/kubernetes/manifests/kube-controller-manager.yaml
Scheduler:/etc/kubernetes/manifests/kube-scheduler.yaml
将证书加密后存储为 Secret,供其他控制平面节点加入时使用。
kubeadm init phase upload-certs [--config kubeadm.yaml] --upload-certs
[upload-certs] Using certificate key: 6d0a3b1c4e5f7a8b9c0d2e1f
记录 certificate-key:后续其他控制平面节点需使用此密钥。
为节点添加标签和污点,标识其角色为控制平面。
kubeadm init phase mark-control-plane [--config kubeadm.yaml]
kubectl --kubeconfig /etc/kubernetes/admin.conf describe node <节点名> | grep -E "Roles|Taints"
添加标签:node-role.kubernetes.io/control-plane
添加污点:node-role.kubernetes.io/control-plane:NoSchedule
生成 kubelet 配置并启动服务。
kubeadm init phase kubelet-start [--config kubeadm.yaml]
生成文件: kubelet 配置:/var/lib/kubelet/config.yaml
验证 systemctl status kubelet
kubeadm config images pull --config /opt/kubeadm-init-config.yaml
作用:提前拉取所有依赖镜像,避免初始化时因网络问题失败
kubeadm init phase preflight --config /opt/kubeadm-init-config.yaml
检查项:Swap 禁用、端口占用、内核参数、容器运行时状态
kubeadm init phase certs all --config /opt/kubeadm-init-config.yaml
关键文件:/etc/kubernetes/pki/ca.crt(根证书)/etc/kubernetes/pki/apiserver-etcd-client.crt(API Server 访问 etcd 证书)
kubeadm init phase kubeconfig all --config /opt/kubeadm-init-config.yaml
关键文件:admin.conf(管理员凭证)kubelet.conf(kubelet 启动配置)
kubeadm init phase etcd local --config /opt/kubeadm-init-config.yaml
验证 etcd 健康
kubectl --kubeconfig /etc/kubernetes/admin.conf -n kube-system exec etcd-$(hostname) -- \
etcdctl --cert /etc/kubernetes/pki/etcd/peer.crt \
--key /etc/kubernetes/pki/etcd/peer.key \
--cacert /etc/kubernetes/pki/etcd/ca.crt endpoint health
kubeadm init phase control-plane all --config /opt/kubeadm-init-config.yaml
验证组件状态
kubectl --kubeconfig /etc/kubernetes/admin.conf get pods -n kube-system -l tier=control-plane
kubeadm init phase kubelet-start --config /opt/kubeadm-init-config.yaml
systemctl enable kubelet && systemctl restart kubelet
kubeadm init phase upload-config all --config /opt/kubeadm-init-config.yaml
作用:将 kubeadm 和 kubelet 配置同步到集群,供其他节点读取。
kubeadm init phase upload-certs --upload-certs --config /opt/kubeadm-init-config.yaml
kubeadm init phase mark-control-plane --config /opt/kubeadm-init-config.yaml
kubeadm init phase bootstrap-token --config /opt/kubeadm-init-config.yaml
作用:创建默认的 24 小时有效令牌,允许工作节点加入。
kubeadm init phase kubelet-finalize enable-client-cert-rotation --config /opt/kubeadm-init-config.yaml
生产必选项:避免因证书过期导致节点失联。
kubeadm init phase addon all --config /opt/kubeadm-init-config.yaml
显示控制平面和工作节点加入集群的命令。
kubeadm init phase upload-certs --upload-certs --config /opt/kubeadm-init-config.yaml
kubeadm token create --print-join-command --certificate-key a2698911f2676ce7378c3213954a3f7f0b3b32eae43cd42d4c4533f670bef514
kubeadm token create --print-join-command --config /opt/kubeadm-init-config.yaml
kubectl --kubeconfig /etc/kubernetes/admin.conf apply -f https://raw.githubusercontent.com/projectcalico/calico/v3.26.1/manifests/calico.yaml
作用:未安装 CNI 插件会导致 Pod 网络不可用,CoreDNS 无法启动!