Kubernetes架构与核心原理详解
Kubernetes 核心架构
Kubernetes(K8s)采用主从架构,由控制平面(Control Plane)和工作节点(Node)组成。控制平面负责集群状态管理,工作节点运行容器化应用。
控制平面组件包括:
- API Server:集群操作的唯一入口,处理REST请求
- etcd:分布式键值存储,保存集群状态
- Controller Manager:运行控制器进程(如Deployment控制器)
- Scheduler:将Pod分配到合适节点
工作节点组件包含:
- kubelet:节点代理,管理Pod生命周期
- kube-proxy:维护网络规则
- 容器运行时:如Docker/containerd
Pod 设计原理
Pod是K8s最小调度单元,特点包括:
- 一个或多个共享资源的容器
- 共享UTS/IPC/Network命名空间
- 通过
pause容器维持网络命名空间 - 支持临时存储卷(ephemeral volume)
Pod生命周期状态:
Pending → Running → Succeeded/Failed
控制器模式
Kubernetes通过控制器实现声明式API:
- Deployment:管理无状态应用,支持滚动更新
apiVersion: apps/v1 kind: Deployment spec: replicas: 3 strategy: rollingUpdate: maxSurge: 1 maxUnavailable: 0 - StatefulSet:管理有状态应用,提供稳定网络标识
- DaemonSet:确保每个节点运行指定Pod
- Job/CronJob:运行一次性或定时任务
服务发现与负载均衡
Service抽象实现服务发现:
- ClusterIP:默认类型,集群内部访问
- NodePort:通过节点端口暴露服务
- LoadBalancer:云提供商负载均衡器
- Headless Service:直接返回Pod IP
DNS解析规则:
<service>.<namespace>.svc.cluster.local
存储管理
存储抽象机制:
- Volume:Pod级别存储,生命周期与Pod绑定
- PersistentVolume(PV):集群资源
- PersistentVolumeClaim(PVC):用户存储请求
动态供应示例:
apiVersion: storage.k8s.io/v1
kind: StorageClass
provisioner: kubernetes.io/aws-ebs
parameters:
type: gp2
网络模型
Kubernetes网络要求:
- 所有Pod可以不通过NAT相互通信
- 所有节点可以与所有Pod通信
- Pod看到的自身IP与其它Pod看到的IP一致
CNI插件实现方案:
- Flannel:Overlay网络
- Calico:BGP路由
- Cilium:eBPF-based网络
调度机制
调度流程分为:
- 过滤(Predicate):排除不满足条件的节点
- 打分(Priority):评估节点得分
自定义调度策略示例:
apiVersion: v1
kind: Pod
spec:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: gpu
operator: In
values: ["true"]
安全模型
安全控制维度:
- RBAC:基于角色的访问控制
kind: Role rules: - apiGroups: [""] resources: ["pods"] verbs: ["get", "watch", "list"] - NetworkPolicy:控制Pod间网络流量
- PodSecurityPolicy:限制Pod安全设置(已弃用,替代为Pod Security Admission)
自动扩缩容
HPA(Horizontal Pod Autoscaler)工作流程:
- 定期从Metrics Server获取指标
- 计算期望副本数:
期望副本数 = ceil[当前副本数 × (当前指标值 / 目标指标值)] - 更新Deployment副本数配置
示例配置:
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
spec:
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 50
运维监控
核心监控组件:
- Metrics Server:集群资源指标
- kube-state-metrics:K8s对象状态
- Prometheus Operator:完整监控方案
常用诊断命令:
kubectl describe pod <pod-name> # 查看Pod详情
kubectl logs <pod-name> -c <container> # 查看容器日志
kubectl top pod # 查看资源使用
BbS.okacop050.info/PoSt/1120_039691.HtM
BbS.okacop051.info/PoSt/1120_844216.HtM
BbS.okacop052.info/PoSt/1120_928221.HtM
BbS.okacop053.info/PoSt/1120_348706.HtM
BbS.okacop054.info/PoSt/1120_657336.HtM
BbS.okacop055.info/PoSt/1120_243212.HtM
BbS.okacop056.info/PoSt/1120_930505.HtM
BbS.okacop057.info/PoSt/1120_196608.HtM
BbS.okacop058.info/PoSt/1120_892708.HtM
BbS.okacop059.info/PoSt/1120_781020.HtM
BbS.okacop050.info/PoSt/1120_477926.HtM
BbS.okacop051.info/PoSt/1120_862169.HtM
BbS.okacop052.info/PoSt/1120_910176.HtM
BbS.okacop053.info/PoSt/1120_218025.HtM
BbS.okacop054.info/PoSt/1120_018144.HtM
BbS.okacop055.info/PoSt/1120_796599.HtM
BbS.okacop056.info/PoSt/1120_186648.HtM
BbS.okacop057.info/PoSt/1120_077428.HtM
BbS.okacop058.info/PoSt/1120_385398.HtM
BbS.okacop059.info/PoSt/1120_360836.HtM
BbS.okacop050.info/PoSt/1120_078438.HtM
BbS.okacop051.info/PoSt/1120_088977.HtM
BbS.okacop052.info/PoSt/1120_305152.HtM
BbS.okacop053.info/PoSt/1120_462339.HtM
BbS.okacop054.info/PoSt/1120_520174.HtM
BbS.okacop055.info/PoSt/1120_083795.HtM
BbS.okacop056.info/PoSt/1120_957619.HtM
BbS.okacop057.info/PoSt/1120_863308.HtM
BbS.okacop058.info/PoSt/1120_021219.HtM
BbS.okacop059.info/PoSt/1120_000671.HtM
BbS.okacop050.info/PoSt/1120_826668.HtM
BbS.okacop051.info/PoSt/1120_834052.HtM
BbS.okacop052.info/PoSt/1120_918753.HtM
BbS.okacop053.info/PoSt/1120_732772.HtM
BbS.okacop054.info/PoSt/1120_501014.HtM
BbS.okacop055.info/PoSt/1120_845496.HtM
BbS.okacop056.info/PoSt/1120_416901.HtM
BbS.okacop057.info/PoSt/1120_463799.HtM
BbS.okacop058.info/PoSt/1120_426923.HtM
BbS.okacop059.info/PoSt/1120_004067.HtM
BbS.okacop050.info/PoSt/1120_960716.HtM
BbS.okacop051.info/PoSt/1120_159940.HtM
BbS.okacop052.info/PoSt/1120_166761.HtM
BbS.okacop053.info/PoSt/1120_201837.HtM
BbS.okacop054.info/PoSt/1120_595213.HtM
BbS.okacop055.info/PoSt/1120_149868.HtM
BbS.okacop056.info/PoSt/1120_548622.HtM
BbS.okacop057.info/PoSt/1120_651108.HtM
BbS.okacop058.info/PoSt/1120_612081.HtM
BbS.okacop059.info/PoSt/1120_421323.HtM
BbS.okacop050.info/PoSt/1120_171520.HtM
BbS.okacop051.info/PoSt/1120_523812.HtM
BbS.okacop052.info/PoSt/1120_450263.HtM
BbS.okacop053.info/PoSt/1120_483549.HtM
BbS.okacop054.info/PoSt/1120_355176.HtM
BbS.okacop055.info/PoSt/1120_330803.HtM
BbS.okacop056.info/PoSt/1120_249747.HtM
BbS.okacop057.info/PoSt/1120_109043.HtM
BbS.okacop058.info/PoSt/1120_604804.HtM
BbS.okacop059.info/PoSt/1120_843486.HtM
BbS.okacop050.info/PoSt/1120_729629.HtM
BbS.okacop051.info/PoSt/1120_325242.HtM
BbS.okacop052.info/PoSt/1120_536533.HtM
BbS.okacop053.info/PoSt/1120_392570.HtM
BbS.okacop054.info/PoSt/1120_065731.HtM
BbS.okacop055.info/PoSt/1120_640466.HtM
BbS.okacop056.info/PoSt/1120_900029.HtM
BbS.okacop057.info/PoSt/1120_040702.HtM
BbS.okacop058.info/PoSt/1120_126016.HtM
BbS.okacop059.info/PoSt/1120_574475.HtM
BbS.okacop050.info/PoSt/1120_380611.HtM
BbS.okacop051.info/PoSt/1120_207590.HtM
BbS.okacop052.info/PoSt/1120_411287.HtM
BbS.okacop053.info/PoSt/1120_900721.HtM
BbS.okacop054.info/PoSt/1120_841907.HtM
BbS.okacop055.info/PoSt/1120_646375.HtM
BbS.okacop056.info/PoSt/1120_636668.HtM
BbS.okacop057.info/PoSt/1120_393641.HtM
BbS.okacop058.info/PoSt/1120_389014.HtM
BbS.okacop059.info/PoSt/1120_817794.HtM
查看7道真题和解析