跳转到内容

Kubernetes架构和核心概念

课程目标

通过本课程的学习,你将能够:

  • 理解Kubernetes的核心架构和组件交互
  • 掌握Pod、Service、Deployment等核心资源对象
  • 熟练使用kubectl命令行工具管理集群
  • 理解Kubernetes的网络和存储模型
  • 能够部署和管理简单的K8S应用

前置要求:已完成《K8S学习环境搭建与初体验》课程,拥有可用的K8S集群环境

1. 从Docker到Kubernetes

1.1 为什么需要Kubernetes

在上一门课程中,你已经成功搭建了自己的K8S学习环境。现在让我们思考一个问题:为什么有了Docker还需要Kubernetes?

Docker的局限性

  • 单机管理:Docker只能在单台机器上管理容器
  • 无自动恢复:容器崩溃后不会自动重启
  • 无负载均衡:无法自动分配流量到多个容器
  • 无滚动更新:更新应用需要停机

Kubernetes的价值

  • 跨主机管理:管理多台机器上的容器
  • 自动恢复:容器失败自动重启和重新调度
  • 负载均衡:自动分配流量,支持高并发
  • 滚动更新:零停机更新应用版本
  • 资源调度:根据资源需求智能分配容器到节点

1.2 Kubernetes是什么

Kubernetes(简称K8s)是一个开源的容器编排平台,用于自动化容器的部署、扩展和管理。

核心理念

  • 声明式配置:你描述期望状态,K8S负责实现
  • 自我修复:自动检测和修复故障
  • 水平扩展:根据负载自动扩缩容
  • 服务发现和负载均衡:内置服务发现和流量分发

1.3 Kubernetes的应用场景

场景说明示例
微服务架构管理大量微服务容器电商平台(订单、支付、库存服务)
DevOps自动化部署和运维CI/CD流水线
弹性伸缩根据流量自动扩缩容双11大促场景
混合云部署跨云厂商统一管理同时部署在阿里云和AWS
边缘计算管理边缘设备容器IoT设备管理

2. Kubernetes架构

2.1 集群架构概览

Kubernetes集群由**控制平面(Control Plane)工作节点(Worker Nodes)**组成:

  • 控制平面:集群的"大脑",负责管理和决策
  • 工作节点:运行实际应用容器的地方
┌─────────────────────────────────────────────────────────────┐
│                    Kubernetes Cluster                       │
├─────────────────────────────────────────────────────────────┤
│  ┌─────────────────────────────────────────────────────┐   │
│  │              Control Plane (Master)                  │   │
│  │  ┌──────────────┐  ┌──────────────┐                │   │
│  │  │ kube-apiserver│  │   etcd       │                │   │
│  │  └──────────────┘  └──────────────┘                │   │
│  │  ┌──────────────┐  ┌──────────────┐                │   │
│  │  │kube-scheduler│  │controller-mgr│                │   │
│  │  └──────────────┘  └──────────────┘                │   │
│  └─────────────────────────────────────────────────────┘   │
│                           │                                 │
│  ┌────────────────────────┼─────────────────────────────┐  │
│  │                        ▼                             │  │
│  │  ┌────────────────────────────────────────────────┐  │  │
│  │  │              Worker Node 1                      │  │  │
│  │  │  ┌──────────┐  ┌──────────┐  ┌──────────────┐  │  │  │
│  │  │  │ kubelet  │  │kube-proxy│  │   Runtime    │  │  │  │
│  │  │  └──────────┘  └──────────┘  └──────────────┘  │  │  │
│  │  │  ┌──────────────────────────────────────────┐  │  │  │
│  │  │  │              Pods                        │  │  │  │
│  │  │  │  ┌────────┐  ┌────────┐  ┌────────┐     │  │  │  │
│  │  │  │  │Container│  │Container│  │Container│     │  │  │  │
│  │  │  │  └────────┘  └────────┘  └────────┘     │  │  │  │
│  │  │  └──────────────────────────────────────────┘  │  │  │
│  │  └────────────────────────────────────────────────┘  │  │
│  └──────────────────────────────────────────────────────┘  │
└─────────────────────────────────────────────────────────────┘

架构特点

  • 控制平面可以部署在单节点或多节点(高可用)
  • 工作节点可以水平扩展,支持数千个节点
  • 所有组件通过API Server进行通信

2.2 控制平面组件(集群大脑)

控制平面组件负责集群的全局决策和事件响应。

2.2.1 kube-apiserver(API服务器)

作用:集群的统一入口,所有操作都通过API Server进行

核心功能

  • 暴露Kubernetes API(RESTful接口)
  • 接收并处理所有请求(kubectl、其他组件)
  • 认证、授权、准入控制
  • 与etcd交互,读写集群状态

类比:就像公司的前台,所有人员进出都要经过这里

bash
# 查看API Server信息
kubectl cluster-info

2.2.2 etcd(数据存储)

作用:集群的"数据库",存储所有配置和状态

核心特性

  • 分布式键值存储
  • 高可用、强一致性
  • 只与API Server通信

存储内容

  • Pod、Service、Deployment等资源定义
  • 集群状态信息
  • 配置数据

类比:就像公司的档案室,保存所有重要资料

bash
# 查看etcd状态(需要在Master节点执行)
ETCDCTL_API=3 etcdctl endpoint health

2.2.3 kube-scheduler(调度器)

作用:负责将Pod分配到合适的工作节点

调度流程

  1. 监听新创建的Pod
  2. 筛选符合要求的节点(资源、亲和性等)
  3. 为每个候选节点打分
  4. 选择最优节点
  5. 通过API Server更新Pod的nodeName

调度考虑因素

  • 资源需求(CPU、内存)
  • 硬件/软件约束
  • 亲和性/反亲和性规则
  • 数据本地性

类比:就像公司的HR,负责把新员工分配到合适的部门

bash
# 查看调度器日志
kubectl logs -n kube-system kube-scheduler-<master-node>

2.2.4 kube-controller-manager(控制器管理器)

作用:运行各种控制器,确保集群状态与期望一致

主要控制器

控制器功能说明
节点控制器监控节点健康节点故障时迁移Pod
副本控制器维护Pod副本数Deployment的核心
端点控制器维护Service端点关联Service和Pod
服务账户控制器管理ServiceAccount为Pod分配身份

工作原理(控制循环):

观察状态 → 对比期望 → 执行操作 → 重复

类比:就像公司的运营部门,不断检查业务是否正常运转

2.2.5 组件交互示例

以创建一个Deployment为例:

1. 用户执行 kubectl apply -f deployment.yaml

2. kubectl 发送请求到 kube-apiserver

3. kube-apiserver 将数据写入 etcd

4. Deployment控制器 监听到新Deployment

5. Deployment控制器 创建 ReplicaSet

6. ReplicaSet控制器 创建 Pod

7. kube-scheduler 监听到新Pod,选择节点

8. kubelet 在选定节点上创建容器

2.3 工作节点组件

工作节点是运行实际应用的地方,每个节点上运行以下组件:

2.3.1 kubelet(节点代理)

作用:运行在每个节点上,管理Pod的生命周期

核心职责

  • 接收API Server的指令
  • 管理Pod的创建、销毁、监控
  • 执行容器健康检查(探针)
  • 报告节点和Pod状态给API Server
  • 管理容器资源(CPU、内存限制)

工作流程

1. kubelet 监听 API Server
2. 发现分配到本节点的Pod
3. 调用容器运行时创建容器
4. 监控容器状态
5. 定期向API Server汇报

类比:就像工厂的车间主任,负责管理车间里的工人(容器)

bash
# 查看kubelet状态
systemctl status kubelet

# 查看kubelet日志
journalctl -u kubelet -f

2.3.2 kube-proxy(网络代理)

作用:负责Service的网络代理和负载均衡

核心功能

  • 维护节点上的网络规则
  • 实现Service到Pod的流量转发
  • 提供负载均衡能力

代理模式

模式原理特点
iptables使用iptables规则转发性能好,默认模式
ipvs使用IPVS内核模块大规模集群性能更优
userspace用户空间转发已废弃,不推荐

类比:就像公司的电话总机,负责将来电转接到正确的分机

bash
# 查看kube-proxy日志
kubectl logs -n kube-system kube-proxy-<node-name>

2.3.3 容器运行时(Container Runtime)

作用:真正运行容器的软件

支持的运行时

  • containerd:Docker的底层运行时,K8S推荐
  • CRI-O:专为K8S设计的轻量级运行时
  • Docker:通过dockershim兼容(K8S 1.24+已移除内置支持)

与kubelet的交互

  • 通过CRI(Container Runtime Interface)接口通信
  • kubelet调用CRI接口管理容器生命周期

类比:就像工厂的机器设备,真正执行生产任务

bash
# 查看容器运行时
kubectl get nodes -o wide

# 在节点上查看运行的容器
sudo crictl ps  # 使用containerd时

2.4 集群服务

  1. CoreDNS

    • 提供集群内部的DNS服务
    • 为服务和Pod分配DNS记录
    • 支持服务发现
  2. Metrics Server

    • 提供集群资源使用指标
    • 为Horizontal Pod Autoscaler提供数据
    • 轻量级的指标收集器
  3. Dashboard

    • Web UI,用于集群管理
    • 可视化集群状态和资源
    • 支持基本的集群操作
  4. Ingress Controller

    • 管理外部访问
    • 提供HTTP和HTTPS路由
    • 支持负载均衡和SSL终止

3. Kubernetes核心概念

3.1 Pod

Pod是Kubernetes中最小的部署单元,包含一个或多个容器,共享网络和存储。

  • 特性

    • 共享网络命名空间
    • 共享存储卷
    • 一起调度和管理
    • 一个Pod中的容器通常紧密相关
  • 示例

yaml
apiVersion: v1
kind: Pod
metadata:
  name: my-pod
  labels:
    app: my-app
spec:
  containers:
  - name: nginx
    image: nginx:1.21
    ports:
    - containerPort: 80
  - name: sidecar
    image: busybox
    command: ["sh", "-c", "while true; do echo hello; sleep 10; done"]

3.2 Service

Service是一组Pod的逻辑集合,提供稳定的网络访问方式。

  • 类型

    • ClusterIP:集群内部IP,仅集群内部访问
    • NodePort:在每个节点上暴露端口,外部可访问
    • LoadBalancer:使用云提供商的负载均衡器
    • ExternalName:返回CNAME记录
  • 示例

yaml
apiVersion: v1
kind: Service
metadata:
  name: my-service
spec:
  selector:
    app: my-app
  ports:
  - port: 80
    targetPort: 8080
  type: NodePort

3.3 Deployment

Deployment管理Pod的副本,确保指定数量的Pod运行,并支持滚动更新。

  • 特性

    • 声明式更新
    • 滚动更新策略
    • 回滚功能
    • 扩缩容
  • 示例

yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-deployment
spec:
  replicas: 3
  selector:
    matchLabels:
      app: my-app
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
      - name: my-app
        image: my-app:v1
        ports:
        - containerPort: 8080

3.4 ReplicaSet

ReplicaSet确保指定数量的Pod副本运行,是Deployment的底层实现。

  • 特性
    • 维护Pod副本数量
    • 基于标签选择器匹配Pod
    • 不支持滚动更新

3.5 StatefulSet

StatefulSet用于管理有状态应用,为Pod提供稳定的网络标识和存储。

  • 特性

    • 稳定的Pod名称和网络标识
    • 稳定的持久存储
    • 有序的部署和扩缩容
    • 有序的滚动更新
  • 示例

yaml
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: my-statefulset
spec:
  serviceName: "my-service"
  replicas: 3
  selector:
    matchLabels:
      app: my-app
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
      - name: my-app
        image: my-app:v1
        ports:
        - containerPort: 8080
        volumeMounts:
        - name: data
          mountPath: /data
  volumeClaimTemplates:
  - metadata:
      name: data
    spec:
      accessModes: ["ReadWriteOnce"]
      resources:
        requests:
          storage: 1Gi

3.6 DaemonSet

DaemonSet确保在每个节点上运行一个Pod副本,通常用于系统级服务。

  • 特性

    • 在每个节点上运行一个Pod
    • 自动适应节点的添加和删除
    • 支持节点选择器
  • 示例

yaml
apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: my-daemonset
spec:
  selector:
    matchLabels:
      app: my-app
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
      - name: my-app
        image: my-app:v1
        ports:
        - containerPort: 8080

3.7 Job和CronJob

Job用于执行一次性任务,CronJob用于定时执行任务。

  • Job特性

    • 执行到完成
    • 支持并行执行
    • 支持失败重试
  • CronJob特性

    • 基于cron表达式定时执行
    • 支持并发策略
    • 支持历史限制
  • Job示例

yaml
apiVersion: batch/v1
kind: Job
metadata:
  name: my-job
spec:
  template:
    spec:
      containers:
      - name: my-job
        image: busybox
        command: ["sh", "-c", "echo hello; sleep 60"]
      restartPolicy: Never
  backoffLimit: 4
  • CronJob示例
yaml
apiVersion: batch/v1
kind: CronJob
metadata:
  name: my-cronjob
spec:
  schedule: "*/1 * * * *"
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: my-cronjob
            image: busybox
            command: ["sh", "-c", "echo hello"]
          restartPolicy: OnFailure

3.8 ConfigMap和Secret

ConfigMap用于存储配置数据,Secret用于存储敏感信息。

  • ConfigMap特性

    • 存储非敏感配置
    • 支持从文件、目录或字面值创建
    • 可通过环境变量或卷挂载使用
  • Secret特性

    • 存储敏感信息
    • 自动base64编码
    • 支持从文件、目录或字面值创建
    • 可通过环境变量或卷挂载使用
  • ConfigMap示例

yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: my-config
data:
  config.properties: |
    database.url=jdbc:mysql://localhost:3306/mydb
    database.username=root
  app.env: production
  • Secret示例
yaml
apiVersion: v1
kind: Secret
metadata:
  name: my-secret
type: Opaque
data:
  password: c2VjcmV0
  token: dG9rZW4=

3.9 Volume

Volume是Pod中容器可访问的存储目录,支持多种存储类型。

  • 类型

    • emptyDir:临时存储
    • hostPath:主机路径
    • persistentVolumeClaim:持久卷声明
    • configMap:配置映射
    • secret:密钥
    • downwardAPI:向下API
    • projected:投射卷
  • 示例

yaml
apiVersion: v1
kind: Pod
metadata:
  name: my-pod
spec:
  containers:
  - name: my-app
    image: my-app:v1
    volumeMounts:
    - name: data
      mountPath: /data
    - name: config
      mountPath: /config
  volumes:
  - name: data
    emptyDir: {}
  - name: config
    configMap:
      name: my-config

3.10 Namespace

Namespace用于资源隔离,将集群划分为多个虚拟集群。

  • 特性

    • 资源隔离
    • 权限控制
    • 资源配额
    • 默认有default、kube-system、kube-public等
  • 示例

yaml
apiVersion: v1
kind: Namespace
metadata:
  name: my-namespace

4. Kubernetes网络模型

4.1 网络模型设计目标

  • 每个Pod都有自己的IP地址:简化网络配置
  • Pod之间可以直接通信:无需NAT
  • 节点之间可以直接通信:无需NAT
  • 容器可以使用主机的端口:通过端口映射

4.2 网络实现方案

  1. CNI (Container Network Interface)

    • Kubernetes的网络插件接口
    • 支持多种网络实现
  2. 常见网络插件

    • Calico:基于BGP的网络方案
    • Flannel:简单的覆盖网络
    • Cilium:基于eBPF的网络方案
    • Weave Net:简单的覆盖网络
    • Canal:Calico + Flannel的组合

4.3 服务发现

  • DNS:CoreDNS提供服务发现
  • 环境变量:Pod启动时注入服务的环境变量

4.4 网络策略

NetworkPolicy用于控制Pod之间的网络访问。

  • 特性

    • 控制入站和出站流量
    • 基于标签选择器
    • 默认拒绝所有流量
  • 示例

yaml
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: my-network-policy
  namespace: default
spec:
  podSelector:
    matchLabels:
      app: my-app
  policyTypes:
  - Ingress
  - Egress
  ingress:
  - from:
    - podSelector:
        matchLabels:
          app: frontend
    ports:
    - protocol: TCP
      port: 8080
  egress:
  - to:
    - podSelector:
        matchLabels:
          app: database
    ports:
    - protocol: TCP
      port: 3306

5. Kubernetes存储模型

5.1 存储卷类型

  • 临时存储:emptyDir、configMap、secret
  • 持久存储:hostPath、persistentVolumeClaim

5.2 PersistentVolume和PersistentVolumeClaim

  • PersistentVolume (PV):集群级别的存储资源

  • PersistentVolumeClaim (PVC):Pod对存储的请求

  • PV示例

yaml
apiVersion: v1
kind: PersistentVolume
metadata:
  name: my-pv
spec:
  capacity:
    storage: 1Gi
  accessModes:
  - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  storageClassName: standard
  hostPath:
    path: /mnt/data
  • PVC示例
yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: my-pvc
spec:
  accessModes:
  - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi
  storageClassName: standard

5.3 StorageClass

StorageClass用于动态创建PV。

  • 特性

    • 动态配置存储
    • 支持不同的存储提供商
    • 支持不同的参数
  • 示例

yaml
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: standard
provisioner: kubernetes.io/aws-ebs
parameters:
  type: gp2
reclaimPolicy: Retain
allowVolumeExpansion: true
volumeBindingMode: Immediate

6. kubectl命令行工具

6.1 基本命令

  • 集群管理

    • kubectl cluster-info:查看集群信息
    • kubectl get nodes:查看节点
    • kubectl describe node <node-name>:查看节点详情
  • 资源管理

    • kubectl get <resource>:查看资源
    • kubectl describe <resource> <name>:查看资源详情
    • kubectl create -f <file>:创建资源
    • kubectl apply -f <file>:应用资源
    • kubectl delete <resource> <name>:删除资源
    • kubectl edit <resource> <name>:编辑资源
    • kubectl scale <resource> <name> --replicas=<number>:扩缩容
    • kubectl rollout status <resource> <name>:查看滚动更新状态
    • kubectl rollout history <resource> <name>:查看滚动更新历史
    • kubectl rollout undo <resource> <name>:回滚更新
  • Pod操作

    • kubectl logs <pod-name>:查看Pod日志
    • kubectl exec -it <pod-name> -- <command>:进入Pod执行命令
    • kubectl port-forward <pod-name> <local-port>:<pod-port>:端口转发
    • kubectl cp <pod-name>:<path> <local-path>:复制文件

6.2 高级命令

  • 标签和注解

    • kubectl label <resource> <name> <label>=<value>:添加标签
    • kubectl annotate <resource> <name> <annotation>=<value>:添加注解
  • 选择器

    • kubectl get pods -l <label>=<value>:按标签选择
    • kubectl get pods -l <label1>=<value1>,<label2>=<value2>:按多个标签选择
  • 命名空间

    • kubectl get pods -n <namespace>:查看指定命名空间的资源
    • kubectl config set-context --current --namespace=<namespace>:设置默认命名空间
  • 配置管理

    • kubectl config view:查看配置
    • kubectl config use-context <context>:切换上下文
  • 输出格式(用于格式化命令输出):

    • kubectl get <resource> -o yaml:以 YAML 格式输出
    • kubectl get <resource> -o json:以 JSON 格式输出
    • kubectl get <resource> -o wide:输出更宽的表格(显示更多信息)
    • kubectl get <resource> -o jsonpath='{...}':使用 JSONPath 提取特定字段
    • kubectl get <resource> -o name:只输出资源名称

📌 关于输出格式

-o(或 --output)参数可以控制 kubectl 的输出格式,方便查看和处理数据。

常用场景

  • -o yaml:查看资源的完整配置定义
  • -o json:程序化解析数据
  • -o wide:查看额外信息(如 Pod 所在节点)
  • -o jsonpath:提取特定字段值(如获取 IP、端口等)

JSONPath 用法示例

bash
# 获取 Service 的 ClusterIP
kubectl get svc my-service -o jsonpath='{.spec.clusterIP}'

# 获取 Pod 的 IP 地址
kubectl get pod my-pod -o jsonpath='{.status.podIP}'

# 获取 NodePort 端口号
kubectl get svc my-service -o jsonpath='{.spec.ports[0].nodePort}'

更多 JSONPath 用法请参考实战课程《云咖啡官网部署》中的详细说明。

6.3 命令示例

bash
# 查看集群信息
kubectl cluster-info

# 查看节点
kubectl get nodes

# 查看Pod
kubectl get pods

# 查看服务
kubectl get services

# 创建Deployment
kubectl create deployment nginx --image=nginx

# 暴露服务
kubectl expose deployment nginx --port=80 --type=NodePort

# 扩缩容
kubectl scale deployment nginx --replicas=3

# 查看Pod日志
kubectl logs nginx-6799fc88d8-7x78k

# 进入Pod
kubectl exec -it nginx-6799fc88d8-7x78k -- /bin/bash

# 端口转发
kubectl port-forward nginx-6799fc88d8-7x78k 8080:80

# 删除资源
kubectl delete deployment nginx

7. Kubernetes架构最佳实践

7.1 控制平面高可用性

  • 多控制平面节点:部署多个控制平面节点
  • etcd集群:部署3或5个etcd节点
  • 负载均衡:为kube-apiserver配置负载均衡
  • 备份etcd:定期备份etcd数据

7.2 节点管理

  • 节点角色分离:控制平面节点和工作节点分离
  • 资源预留:为系统组件预留资源
  • 节点亲和性:合理设置Pod的节点亲和性
  • 污点和容忍度:控制Pod调度到特定节点

7.3 网络最佳实践

  • 选择合适的网络插件:根据集群规模和需求选择
  • 网络策略:配置网络策略增强安全性
  • 服务发现:使用DNS进行服务发现
  • Ingress控制器:使用Ingress管理外部访问

7.4 存储最佳实践

  • 使用PersistentVolumeClaim:使用PVC管理存储
  • 选择合适的StorageClass:根据应用需求选择
  • 数据备份:定期备份持久化数据
  • 存储性能:根据应用需求选择合适的存储性能

8. 实战案例:部署简单应用

8.1 部署Nginx应用

  1. 创建Deployment
yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.21
        ports:
        - containerPort: 80
        resources:
          requests:
            cpu: 100m
            memory: 256Mi
          limits:
            cpu: 500m
            memory: 512Mi
  1. 创建Service
yaml
apiVersion: v1
kind: Service
metadata:
  name: nginx-service
spec:
  selector:
    app: nginx
  ports:
  - port: 80
    targetPort: 80
  type: NodePort
  1. 部署应用
bash
# 应用配置
kubectl apply -f nginx-deployment.yaml
kubectl apply -f nginx-service.yaml

# 查看部署状态
kubectl get pods
kubectl get services

# 访问应用
NODE_PORT=$(kubectl get service nginx-service -o jsonpath='{.spec.ports[0].nodePort}')
NODE_IP=$(kubectl get node -o jsonpath='{.items[0].status.addresses[0].address}')
echo "应用访问地址: http://$NODE_IP:$NODE_PORT"

8.2 扩缩容和更新

  1. 扩缩容
bash
# 扩缩容到5个副本
kubectl scale deployment nginx-deployment --replicas=5

# 查看状态
kubectl get pods
  1. 更新应用
bash
# 更新镜像版本
kubectl set image deployment nginx-deployment nginx=nginx:1.22

# 查看更新状态
kubectl rollout status deployment nginx-deployment

# 查看更新历史
kubectl rollout history deployment nginx-deployment

# 回滚到之前版本
kubectl rollout undo deployment nginx-deployment

9. 课程总结

9.1 重点回顾

  • Kubernetes架构:掌握控制平面和节点组件的功能
  • 核心概念:理解Pod、Service、Deployment等核心资源
  • 网络模型:理解Kubernetes的网络设计和实现
  • 存储模型:掌握PV、PVC、StorageClass的使用
  • kubectl工具:熟练使用kubectl命令管理集群
  • 最佳实践:遵循Kubernetes的部署和管理最佳实践

9.2 实践建议

  1. 动手实践:搭建本地Kubernetes集群,部署应用
  2. 学习官方文档:参考Kubernetes官方文档深入学习
  3. 参与社区:关注Kubernetes社区动态和最佳实践
  4. 案例学习:分析实际应用场景,学习解决方案
  5. 认证考试:考虑参加CKA(Certified Kubernetes Administrator)认证

9.3 进阶学习

  • Kubernetes高级特性:HPA、PodDisruptionBudget、PodSecurityPolicy等
  • 服务网格:学习Istio等服务网格技术
  • 云原生生态:了解CNCF生态系统中的其他项目
  • 多集群管理:学习集群联邦、多集群管理
  • 边缘计算:了解Kubernetes在边缘计算中的应用

通过本课程的学习,你已经掌握了Kubernetes的核心架构和概念,为后续的Kubernetes应用部署和管理打下了坚实的基础。

评论区

专业的Linux技术学习平台,从入门到精通的完整学习路径