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网络

调度机制

调度流程分为:

  1. 过滤(Predicate):排除不满足条件的节点
  2. 打分(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)工作流程:

  1. 定期从Metrics Server获取指标
  2. 计算期望副本数:
    期望副本数 = ceil[当前副本数 × (当前指标值 / 目标指标值)]
    
  3. 更新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

#牛客AI配图神器#

全部评论

相关推荐

不愿透露姓名的神秘牛友
昨天 10:05
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务