主题
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-info2.2.2 etcd(数据存储)
作用:集群的"数据库",存储所有配置和状态
核心特性:
- 分布式键值存储
- 高可用、强一致性
- 只与API Server通信
存储内容:
- Pod、Service、Deployment等资源定义
- 集群状态信息
- 配置数据
类比:就像公司的档案室,保存所有重要资料
bash
# 查看etcd状态(需要在Master节点执行)
ETCDCTL_API=3 etcdctl endpoint health2.2.3 kube-scheduler(调度器)
作用:负责将Pod分配到合适的工作节点
调度流程:
- 监听新创建的Pod
- 筛选符合要求的节点(资源、亲和性等)
- 为每个候选节点打分
- 选择最优节点
- 通过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 -f2.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 集群服务
CoreDNS:
- 提供集群内部的DNS服务
- 为服务和Pod分配DNS记录
- 支持服务发现
Metrics Server:
- 提供集群资源使用指标
- 为Horizontal Pod Autoscaler提供数据
- 轻量级的指标收集器
Dashboard:
- Web UI,用于集群管理
- 可视化集群状态和资源
- 支持基本的集群操作
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: NodePort3.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: 80803.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: 1Gi3.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: 80803.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: OnFailure3.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-config3.10 Namespace
Namespace用于资源隔离,将集群划分为多个虚拟集群。
特性:
- 资源隔离
- 权限控制
- 资源配额
- 默认有default、kube-system、kube-public等
示例:
yaml
apiVersion: v1
kind: Namespace
metadata:
name: my-namespace4. Kubernetes网络模型
4.1 网络模型设计目标
- 每个Pod都有自己的IP地址:简化网络配置
- Pod之间可以直接通信:无需NAT
- 节点之间可以直接通信:无需NAT
- 容器可以使用主机的端口:通过端口映射
4.2 网络实现方案
CNI (Container Network Interface):
- Kubernetes的网络插件接口
- 支持多种网络实现
常见网络插件:
- 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: 33065. 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: standard5.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: Immediate6. 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 nginx7. 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应用
- 创建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- 创建Service:
yaml
apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
selector:
app: nginx
ports:
- port: 80
targetPort: 80
type: NodePort- 部署应用:
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 扩缩容和更新
- 扩缩容:
bash
# 扩缩容到5个副本
kubectl scale deployment nginx-deployment --replicas=5
# 查看状态
kubectl get pods- 更新应用:
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-deployment9. 课程总结
9.1 重点回顾
- Kubernetes架构:掌握控制平面和节点组件的功能
- 核心概念:理解Pod、Service、Deployment等核心资源
- 网络模型:理解Kubernetes的网络设计和实现
- 存储模型:掌握PV、PVC、StorageClass的使用
- kubectl工具:熟练使用kubectl命令管理集群
- 最佳实践:遵循Kubernetes的部署和管理最佳实践
9.2 实践建议
- 动手实践:搭建本地Kubernetes集群,部署应用
- 学习官方文档:参考Kubernetes官方文档深入学习
- 参与社区:关注Kubernetes社区动态和最佳实践
- 案例学习:分析实际应用场景,学习解决方案
- 认证考试:考虑参加CKA(Certified Kubernetes Administrator)认证
9.3 进阶学习
- Kubernetes高级特性:HPA、PodDisruptionBudget、PodSecurityPolicy等
- 服务网格:学习Istio等服务网格技术
- 云原生生态:了解CNCF生态系统中的其他项目
- 多集群管理:学习集群联邦、多集群管理
- 边缘计算:了解Kubernetes在边缘计算中的应用
通过本课程的学习,你已经掌握了Kubernetes的核心架构和概念,为后续的Kubernetes应用部署和管理打下了坚实的基础。