Kubernetes作为容器编排的事实标准,其架构设计遵循了"控制平面(大脑)"与"工作节点(手脚)"的协同模式。这种分离式架构使得系统既具备强大的调度决策能力,又能保持高效的执行性能。
API Server:作为整个系统的唯一入口,采用RESTful接口设计。我们团队在生产环境中发现,其默认的500并发连接数限制经常成为性能瓶颈,需要通过--max-requests-inflight参数调整。典型配置示例:
yaml复制apiServer:
extraArgs:
max-requests-inflight: "1000"
max-mutating-requests-inflight: "500"
etcd:这个分布式键值存储库承载着集群的所有状态数据。在金融级部署中,我们采用以下优化方案:
etcdctl defrag防止存储碎片化Controller Manager:包含节点控制器、端点控制器等30多种内置控制器。曾经在节点大规模故障时,我们通过调整--node-monitor-period参数(默认5s)将检测间隔缩短到2秒,显著加快了故障恢复速度。
Scheduler:负责Pod的节点分配决策。我们扩展调度器时发现,预选(Predicates)和优选(Priorities)阶段的时间消耗比约为3:7,合理配置percentageOfNodesToScore可以优化调度性能。
kubelet:这个节点代理实际管理着Pod生命周期。在容器密度超过50Pod/节点的场景下,必须调整--max-pods参数并监控kubelet_runtime_operations指标,我们曾因此避免了OOM引发的雪崩。
kube-proxy:实现Service的IPVS/iptables转发。当集群Service超过5000个时,建议切换为IPVS模式并配置--ipvs-scheduler,我们测试显示rr(轮询)算法在电商流量下表现最优。
容器运行时:从Docker转向containerd时,我们发现镜像拉取效率提升约15%,但需要特别注意配置/etc/containerd/config.toml中的镜像加速器。
当用户提交一个Deployment配置时,系统会经历以下协同过程:
我们在运维中总结出关键指标监控点:
控制平面与工作节点间的通信采用双向认证的HTTPS连接。在安全加固方案中,我们实施了:
东西向流量方面,Calico的BGP模式在大规模集群中表现出色。通过调整ASNumber和nodeToNodeMeshEnabled,我们将跨可用区流量成本降低了40%。
我们采用的多活方案包含:
yaml复制apiVersion: kubeadm.k8s.io/v1beta3
kind: ClusterConfiguration
controlPlaneEndpoint: "k8s-api.example.com:6443"
apiServer:
extraArgs:
etcd-servers: "https://etcd1:2379,https://etcd2:2379,https://etcd3:2379"
关键经验:
针对计算密集型负载,我们的节点配置模板:
yaml复制kubelet:
cpuManagerPolicy: "static"
topologyManagerPolicy: "best-effort"
reservedSystemCPUs: "0-3"
systemReserved:
cpu: "500m"
memory: "1Gi"
当网络分区导致控制平面分裂时:
kubectl get --raw=/readyz检查各API Server状态etcdctl member listbash复制# 检查kubelet状态
journalctl -u kubelet -n 100
# 验证证书有效性
openssl x509 -in /var/lib/kubelet/pki/kubelet-client-current.pem -noout -dates
# 测试API Server连通性
curl -k https://localhost:10250/healthz
yaml复制apiServer:
extraArgs:
default-not-ready-toleration-seconds: "30"
default-unreachable-toleration-seconds: "30"
event-ttl: "1h"
针对Java应用密集的场景:
yaml复制kubelet:
evictionHard:
memory.available: "200Mi"
evictionMinimumReclaim:
memory.available: "100Mi"
在万级Pod的集群中,这套配置将OOM发生率从日均5次降至每月1-2次。