用途
kubeadm-init 是一份面向 Kubernetes 集群搭建与排障的技术参考,聚焦 kubeadm init 命令如何引导(bootstrap)控制平面。其核心原则是:先理解每个阶段,再进行故障排查;证书、网络和 kubelet 问题都可以追溯到具体阶段。适用于初始化新集群、排查控制平面引导失败、理解证书生成与静态 Pod 部署,以及规划高可用(HA)控制平面。
主要能力
文档将 kubeadm init 拆解为 14 个顺序阶段:preflight(系统要求检查)、certs(CA 与组件证书)、kubeconfig(组件 kubeconfig 文件)、etcd(etcd 静态 Pod 清单)、control-plane(API server、controller-manager、scheduler 静态 Pod)、kubelet-start(kubelet 配置与启动)、wait-control-plane(等待组件健康)、upload-config(将配置存入 ConfigMap)、upload-certs(--upload-certs 时将证书存入 Secret 以供 HA)、mark-control-plane(添加标签与污点)、bootstrap-token(创建 join 令牌与 RBAC)、kubelet-finalize(完成 kubelet TLS 引导)、addon(安装 CoreDNS 与 kube-proxy)、show-join-command(显示 join 命令)。并给出各阶段输出位置与关键文件,如 certs 对应 /etc/kubernetes/pki/、kubeconfig 对应 /etc/kubernetes/ 等。
使用方式
文档提供两种配置方式:命令行选项(如 --apiserver-advertise-address、--pod-network-cidr、--service-cidr、--kubernetes-version)和配置文件(推荐),后者包含 InitConfiguration 与 ClusterConfiguration 两个文档,示例使用 kubeadm.k8s.io/v1beta4 API,涵盖 bootstrapTokens、nodeRegistration(kubeletExtraArgs、criSocket)、localAPIEndpoint、networking 等字段。关键选项表格说明 --apiserver-advertise-address(多网卡环境)、--control-plane-endpoint(HA 端点,必须在 init 时设置)、--pod-network-cidr(Flannel 默认 10.244.0.0/16,Calico 192.168.0.0/16)、--apiserver-cert-extra-sans(自定义域名、外部 LB IP)的用途与必需场景。需要定制时可单独运行阶段,例如只生成证书或先生成清单再编辑,并用 --skip-phases 在全量 init 中跳过该阶段。预检方面可使用 kubeadm config images list 查看所需镜像、kubeadm config images pull 预拉取镜像、--dry-run 试运行。
初始化后与验证
初始化后需配置 kubectl(复制 admin.conf 到 $HOME/.kube/config 并修改属主)、安装 CNI(如 Flannel 或 Calico 的线上清单),然后验证节点状态与 kube-system 中 Pod。文档还列出证书目录结构(集群 CA、apiserver、front-proxy、sa 密钥以及独立的 etcd CA 等)、HA 注意事项(--control-plane-endpoint 与 --upload-certs 必须在首次 init 时设置,端点可先用指向单节点的 DNS 名称)、重置重试方法(kubeadm reset -f 并清理相关目录与 iptables)以及验证清单(cluster-info、静态 Pod、证书、kubeconfig、kubelet 状态、join 命令)。
适用场景与限制
适用于 Kubernetes 控制平面的初始化、定制与故障排查,尤其是希望理解各阶段内部行为而非仅执行命令的场景。文档中的具体版本号、镜像列表和配置字段以示例形式给出,实际使用时应以对应 Kubernetes 版本的官方文档为准;文中未提供图形界面、托管服务或收费相关信息。