随笔 - 331  文章 - 0  评论 - 5  阅读 - 5050

k8s相关的核心概念

Kubernetes核心概念全景解析:从入门到精通的钥匙

一、工作负载管理核心

1.1 Pod:最小的调度单元

  • 架构特性
    • 共享网络栈:同一Pod内容器通过localhost通信
    • 共享存储卷:emptyDir实现容器间数据共享
    • 生命周期管理:探针机制保证业务就绪
  • 典型场景
    # 多容器Pod示例(主容器+日志收集Sidecar)
    apiVersion: v1
    kind: Pod
    metadata:
      name: web-logger
    spec:
      containers:
      - name: web
        image: nginx
        volumeMounts:
        - name: log-volume
          mountPath: /var/log/nginx
      - name: log-collector
        image: fluentd
        volumeMounts:
        - name: log-volume
          mountPath: /var/log
      volumes:
      - name: log-volume
        emptyDir: {}
    

1.2 Deployment:应用部署指挥官

  • 核心能力
    • 滚动更新策略
    strategy:
      type: RollingUpdate
      rollingUpdate:
        maxSurge: 25%
        maxUnavailable: 25%
    
    • 版本回滚机制
    kubectl rollout undo deployment/myapp --to-revision=2
    
  • 最佳实践
    • 始终指定资源限制
    • 使用PodDisruptionBudget保障可用性

1.3 StatefulSet:有状态应用管家

  • 核心特性
    • 稳定网络标识:web-0.web.default.svc.cluster.local
    • 有序部署策略:按序扩缩容
    • 持久存储绑定:PVC模板自动创建
  • 典型应用
    StatefulSet
    PersistentVolume
    StorageClass
    云盘
    本地SSD

二、网络与存储体系

2.1 Service:服务发现中枢

  • 类型对比
类型 暴露方式 适用场景 示例
ClusterIP 集群内部IP 内部服务通信 数据库服务
NodePort 节点端口 开发测试环境 临时对外暴露
LoadBalancer 云厂商LB 生产环境对外服务 Web前端
Headless 无ClusterIP 有状态服务发现 StatefulSet通信
  • 流量调度原理
    Service流量转发

2.2 Volume:持久化存储基石

  • 存储类型矩阵
类型 生命周期 适用场景 示例
emptyDir Pod级别 临时数据交换 容器间共享缓存
hostPath 节点级别 开发调试 访问宿主机目录
PersistentVolume 集群级别 生产持久化存储 数据库数据目录
CSI Volume 动态供给 云原生存储 AWS EBS/Google PD
  • PV/PVC工作流
    # 创建PVC示例
    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: mysql-pvc
    spec:
      accessModes:
        - ReadWriteOnce
      resources:
        requests:
          storage: 10Gi
      storageClassName: ssd
    

三、配置与安全管理

3.1 ConfigMap:配置管理中心

  • 使用模式
    env:
      - name: LOG_LEVEL
        valueFrom:
          configMapKeyRef:
            name: app-config
            key: log_level
    volumes:
      - name: config-volume
        configMap:
          name: app-config
    
  • 热更新策略
    • 文件挂载方式支持实时更新
    • 环境变量注入需要重启Pod

3.2 Secret:敏感信息保险箱

  • 加密存储实践
    # 创建Secret示例
    echo -n 'admin' | base64
    kubectl create secret generic db-creds \
      --from-literal=username=produser \
      --from-literal=password='S!B\*d$zDsb='
    
  • 安全建议
    • 开启Secret加密存储(KMS集成)
    • 使用RBAC限制访问权限

3.3 Namespace:资源隔离舱

  • 多租户方案
    apiVersion: v1
    kind: Namespace
    metadata:
      name: team-alpha
      labels:
        environment: production
    
  • 资源配额管理
    apiVersion: v1
    kind: ResourceQuota
    metadata:
      name: compute-quota
    spec:
      hard:
        requests.cpu: "20"
        requests.memory: 100Gi
        limits.cpu: "40"
        limits.memory: 200Gi
    

四、高级工作负载控制器

4.1 DaemonSet:节点守护者

  • 典型用例
    • 日志收集组件(Filebeat)
    • 节点监控代理(Node Exporter)
    • 网络插件(Calico CNI)
  • 调度控制
    tolerations:
    - key: node-role.kubernetes.io/master
      effect: NoSchedule
    

4.2 Job/CronJob:批处理引擎

  • 任务管理对比
特性 Job CronJob
触发方式 手动触发 定时计划
任务类型 一次性 周期性
完成策略 .spec.completions
并行控制 .spec.parallelism 依赖ConcurrencyPolicy
  • 示例配置
    apiVersion: batch/v1beta1
    kind: CronJob
    metadata:
      name: daily-report
    spec:
      schedule: "0 3 * * *"
      jobTemplate:
        spec:
          template:
            spec:
              containers:
              - name: report-generator
                image: report:latest
              restartPolicy: OnFailure
    

五、集群架构全景图

Control Plane
API Server
Controller Manager
Scheduler
etcd
Worker Node
Kubelet
Kube Proxy
Container Runtime

六、最佳实践指南

6.1 资源管理原则

  • 请求与限制设置
    resources:
      requests:
        cpu: "500m"
        memory: "1Gi"
      limits:
        cpu: "1"
        memory: "2Gi"
    
  • QoS等级分类
    • Guaranteed(完全保证)
    • Burstable(可超卖)
    • BestEffort(尽力而为)

6.2 故障排查工具箱

  • 诊断命令速查
    # 查看Pod事件
    kubectl describe pod <pod-name>
    
    # 容器日志查看
    kubectl logs -f <pod-name> -c <container-name>
    
    # 进入容器调试
    kubectl exec -it <pod-name> -- /bin/sh
    
    # 资源使用情况
    kubectl top pod --containers
    

七、学习路线图

阶段 目标 推荐实践
入门 掌握基础概念 使用Minikube部署简单应用
进阶 理解控制器原理 实现蓝绿部署/金丝雀发布
精通 集群调优与排障 处理生产环境OOMKilled问题
专家 定制K8s生态 开发CRD/Operator

架构师建议:理解这些核心概念只是Kubernetes之旅的起点。建议通过以下步骤深化学习:

  1. 使用kind快速搭建实验环境
  2. 通过Kubernetes the Hard Way理解底层机制
  3. 参与CNCF生态项目贡献

互动实验

# 快速体验Pod部署
kubectl create deployment nginx --image=nginx:alpine
kubectl expose deployment nginx --port=80 --type=NodePort

配图建议

  1. Pod生命周期状态图
  2. Service流量转发示意图
  3. 集群架构分层图
  4. 存储体系关系图

延伸阅读

posted on   Leo-Yide  阅读(11)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示