3. 核心组件参数概览:kube-apiserver、kube-controller-manager、kube-scheduler、kubelet、kube-proxy 的核心启动参数

Kubernetes 控制面与数据面各组件的启动参数直接决定了集群的安全性、性能与稳定性。本章逐一梳理五大核心组件的关键启动参数,按功能分类说明其作用、默认值与推荐配置,帮助运维人员在集成测试阶段快速定位参数问题。

参数传递方式:所有组件均支持 --flag=value 命令行参数、环境变量(如 KUBE_API_SERVER_ARGS)以及配置文件(--config)三种方式。静态 Pod 场景下推荐使用 /etc/kubernetes/manifests/ 中的 YAML 文件传递参数。

3.1 kube-apiserver:集群网关与认证授权中心

kube-apiserver 是 Kubernetes 控制面的前端,所有 REST 请求均经过此组件。其参数直接影响集群的访问控制、资源配额与审计能力。

参数名 功能分类 典型值 / 说明
--advertise-address 网络 API Server 对外广播的 IP,通常设为节点主 IP
--secure-port 安全 默认 6443,HTTPS 监听端口
--etcd-servers 存储 etcd 集群地址列表,如 https://10.0.0.1:2379,https://10.0.0.2:2379
--service-cluster-ip-range 网络 Service CIDR,如 10.96.0.0/12
--authorization-mode 授权 推荐 Node,RBAC,按顺序生效
--enable-admission-plugins 准入 推荐 NodeRestriction,PodSecurity,NamespaceLifecycle
--audit-log-path 审计 审计日志文件路径,如 /var/log/kubernetes/audit.log
--max-requests-inflight 限流 默认 400,高并发集群建议提升至 800~1200
集成测试关注点:检查 --etcd-servers 是否指向正确的 etcd 成员;验证 --authorization-mode 是否包含 RBAC;确认 --enable-admission-plugins 中已启用 PodSecurity 以实施 Pod 安全标准。
kube-apiserver 请求处理流程与关键参数 客户端 (kubectl) 认证 (TLS/Token) 授权 (RBAC/Node) 准入控制 etcd 存储 关键参数映射: --authorization-mode=Node,RBAC → 授权阶段 --enable-admission-plugins=NodeRestriction,PodSecurity → 准入控制阶段 --etcd-servers → 存储阶段 --secure-port=6443, --tls-cert-file, --tls-private-key-file → 认证阶段

3.2 kube-controller-manager:集群状态调节器

kube-controller-manager 运行多个控制器循环,确保集群实际状态与期望状态一致。其参数主要控制控制器行为、节点监控周期与资源限制。

参数名 功能分类 典型值 / 说明
--controllers 控制器选择 默认启用所有控制器;可指定 --controllers=*,-namespace 排除特定控制器
--node-monitor-period 节点监控 默认 5s,控制 NodeController 检查节点状态的频率
--node-monitor-grace-period 节点故障 默认 40s,节点失联后标记为 Unknown 的等待时间
--pod-eviction-timeout Pod 驱逐 默认 5m,节点 NotReady 后驱逐 Pod 的超时时间
--cluster-cidr 网络 Pod CIDR,如 10.244.0.0/16,用于路由控制器
--service-account-private-key-file 安全 ServiceAccount Token 签名私钥路径
--horizontal-pod-autoscaler-sync-period HPA 默认 15s,HPA 控制器同步周期
参数联动风险:--node-monitor-grace-period 与 --pod-eviction-timeout 之和决定了节点故障后 Pod 被驱逐的总时间。若设置过短,网络抖动可能导致大量 Pod 被误驱逐;若设置过长,故障恢复延迟增加。建议生产环境保持默认值或按集群规模微调。

3.3 kube-scheduler:Pod 调度决策引擎

kube-scheduler 负责为新创建的 Pod 选择最优节点。其参数影响调度策略、性能与扩展性。

参数名 功能分类 典型值 / 说明
--config 配置 指向 KubeSchedulerConfiguration YAML 文件,推荐使用
--policy-config-file 策略 自定义调度策略文件(已弃用,建议使用 --config)
--algorithm-provider 算法 默认 DefaultProvider,可选 ClusterAutoscalerProvider
--kubeconfig 连接 连接 API Server 的 kubeconfig 路径
--leader-elect 高可用 默认 true,多副本场景下启用选主
--profiling 调试 默认 true,生产环境建议关闭
集成测试检查项:验证 --leader-elect=true 确保调度器高可用;检查 --config 中是否配置了 percentageOfNodesToScore(默认 50%),大集群可适当降低以提升调度性能。

3.4 kubelet:节点代理与 Pod 生命周期管理者

kubelet 是运行在每个节点上的主要代理,负责管理 Pod 及其容器的生命周期。其参数直接影响节点注册、资源管理与健康检查。

参数名 功能分类 典型值 / 说明
--node-ip 网络 节点 IP 地址,多网卡场景必须显式指定
--cluster-dns DNS 集群 DNS Service IP,如 10.96.0.10
--cluster-domain DNS 集群域名后缀,默认 cluster.local
--kubeconfig 连接 kubelet 用于连接 API Server 的 kubeconfig 文件
--register-node 注册 默认 true,自动向集群注册节点
--max-pods 容量 默认 110,根据节点规格调整
--eviction-hard 驱逐 如 memory.available<100Mi,nodefs.available<10%
--container-runtime-endpoint 运行时 CRI 端点,如 unix:///run/containerd/containerd.sock
常见配置陷阱:--node-ip 未指定时,kubelet 可能选择错误的网络接口,导致节点注册 IP 与 CNI 插件期望 IP 不一致,引发 Pod 网络连通性问题。集成测试阶段务必确认 kubectl get nodes -o wide 输出的 INTERNAL-IP 与实际节点 IP 匹配。

3.5 kube-proxy:服务负载均衡与网络规则

kube-proxy 负责维护节点上的网络规则,实现 Service 的负载均衡与集群内通信。其参数决定代理模式与性能特征。

参数名 功能分类 典型值 / 说明
--proxy-mode 代理模式 iptables(默认)、ipvs(推荐)、userspace(已弃用)
--cluster-cidr 网络 Pod CIDR,用于 IPVS 模式下的流量转发
--bind-address 监听 默认 0.0.0.0,建议指定节点 IP
--healthz-bind-address 健康检查 健康检查监听地址,如 0.0.0.0:10256
--conntrack-max-per-core 性能 默认 32768,连接跟踪表大小,大流量集群需调大
--iptables-sync-period 同步 默认 30s,iptables 规则同步周期
模式选择建议:iptables 模式适用于中小规模集群(节点 < 500),规则更新时存在全量刷新开销;ipvs 模式使用哈希表,规则更新效率更高,适合大规模集群与高频 Service 变更场景。集成测试时建议先验证 iptables 模式,确认 Service 连通性后再切换至 ipvs。
kube-proxy 代理模式对比与参数映射 iptables 模式 --proxy-mode=iptables 规则全量刷新,适合小集群 ipvs 模式 --proxy-mode=ipvs 哈希表,高性能,推荐大规模集群 userspace 模式 --proxy-mode=userspace 已弃用,性能最差 关键参数映射: --cluster-cidr → 仅在 ipvs 模式下用于流量转发 --conntrack-max-per-core → 连接跟踪表大小,iptables 与 ipvs 均生效

3.6 组件参数集成测试清单

在集成测试阶段,建议按以下清单逐项验证各组件的参数配置是否正确生效:

  1. API Server 可达性测试:使用 curl -k https://<apiserver-ip>:6443/healthz 验证 HTTPS 端口与证书。
  2. Controller Manager 控制器状态:检查 kubectl get componentstatuses 输出,确认 controller-manager 与 scheduler 状态为 Healthy。
  3. Scheduler 调度验证:创建测试 Pod 并检查 kubectl describe pod 中的 Events 字段,确认调度器已成功绑定节点。
  4. Kubelet 节点注册:确认 kubectl get nodes 显示所有预期节点,且 Ready 状态为 True。
  5. Kube-proxy 规则验证:在节点上执行 iptables-save | grep KUBE 或 ipvsadm -Ln,确认 Service 规则已生成。
  6. 参数一致性检查:对比各组件 --cluster-cidr、--service-cluster-ip-range 等网络参数,确保无冲突。
自动化测试建议:将上述检查项编写为 Shell 脚本或 Ansible Playbook,集成测试时一键执行。重点关注参数值是否与集群规划一致,避免因参数拼写错误或 CIDR 重叠导致网络故障。