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