📚 Kubernetes调度与部署机制详解

🎯 学习目标

  • 掌握Kubernetes Pod调度的核心机制
  • 理解部署管理策略和最佳实践
  • 学会配置自动扩缩容和优化调度性能

🏗️ 一、Kubernetes调度机制

1.1 NodeSelector(节点选择器)🎯

  • 概念: 最简单的Pod调度约束方式,通过匹配节点标签控制Pod调度
  • 实现: 在Pod的spec字段中添加nodeSelector字段
  • 应用场景: 将Pod调度到具有特定标签的节点上
  • 示例: 将Pod调度到具有source=qikqiak标签的节点上

1.2 亲和性与反亲和性 🔗

节点亲和性

  • 软策略 (preferredDuringSchedulingIgnoredDuringExecution): 优先满足但不强制
  • 硬策略 (requiredDuringSchedulingIgnoredDuringExecution): 必须满足条件
  • 支持的操作符: In、NotIn、Gt、Lt、Exists、DoesNotExist

Pod亲和性与反亲和性

  • podAffinity: 让Pod与指定Pod部署在同一拓扑域
  • podAntiAffinity: 让Pod不与指定Pod部署在同一拓扑域
  • 拓扑域: 通过topologyKey指定,常用如kubernetes.io/hostname

1.3 污点与容忍 🚫

污点效果

  • NoSchedule: Pod不会被调度到标记的节点
  • PreferNoSchedule: NoSchedule的软策略版本
  • NoExecute: 无对应Tolerate的Pod会被直接逐出

🚀 二、Kubernetes部署管理

2.1 滚动更新 🔄

  • 特点: 默认部署策略,零停机部署
  • 机制: 逐步替换现有Pod实例,确保足够数量的Pod可用
  • 优势: 平滑过渡,最小化服务中断

2.2 回滚机制 ⏪

  • 命令: kubectl rollout undo deployment <DEPLOYMENT-NAME>
  • 作用: 快速恢复生产环境问题
  • 重要性: 保障系统稳定性和可恢复性

2.3 HPA(水平自动扩缩)📈

  • 功能: 根据负载自动调整Pod数量
  • 指标: 基于CPU、内存或自定义指标
  • 特点: 水平扩缩与垂直扩缩不同

💻 三、命令汇总

调度相关命令

1
2
3
4
5
6
# 查看节点标签
kubectl get nodes --show-labels
# 给节点添加标签
kubectl label nodes NODE-NAME KEY=VALUE
# 给节点添加污点
kubectl taint nodes NODE-NAME KEY=VALUE:EFFECT

部署管理命令

1
2
3
4
5
6
7
8
# 更新部署
kubectl apply -f deployment.yaml
# 查看部署状态
kubectl rollout status deployment/<DEPLOYMENT-NAME>
# 回滚部署
kubectl rollout undo deployment/<DEPLOYMENT-NAME>
# 查看部署历史
kubectl rollout history deployment/<DEPLOYMENT-NAME>

自动扩缩命令

1
2
3
4
# 创建HPA
kubectl autoscale deployment <DEPLOYMENT-NAME> --min=2 --max=10 --cpu-percent=80
# 查看HPA状态
kubectl get hpa

🆕 四、最新技术补充

4.1 HPA高级配置 🎛️

基于最新实践,HPA现在支持更丰富的指标类型:

自定义指标扩缩容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: custom-hpa
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: my-app
minReplicas: 2
maxReplicas: 10
metrics:
- type: Pods
pods:
metric:
name: packets-per-second
target:
type: AverageValue
averageValue: 1k

4.2 滚动更新优化策略 ⚡

最新的滚动更新实践建议:

优化配置示例

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
apiVersion: apps/v1
kind: Deployment
metadata:
name: optimized-deployment
spec:
replicas: 4
strategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 1 # 额外加1个副本平滑引入新版本
maxUnavailable: 0 # 保证服务不减容
template:
metadata:
labels:
app: my-app
spec:
terminationGracePeriodSeconds: 60
containers:
- name: app
image: my-app:v2
readinessProbe:
httpGet:
path: /health
port: 8080
initialDelaySeconds: 3
periodSeconds: 5
lifecycle:
preStop:
exec:
command: ["sh", "-c", "sleep 10"]

4.3 调度策略最佳实践 🎯

根据2024-2025年的最新实践:

节点亲和性配置示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: gpu
operator: In
values:
- "true"
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 100
preference:
matchExpressions:
- key: topology.kubernetes.io/zone
operator: In
values:
- "az1"

📊 五、技术要点总结

调度机制核心要点 🎯

  1. NodeSelector: 简单但功能有限,适合基础场景
  2. 节点亲和性: 支持软硬策略,操作符丰富,灵活性强
  3. Pod亲和性: 基于拓扑域控制Pod间部署关系
  4. 污点容忍: 节点级别的排斥机制,配合Pod容忍使用

部署管理核心要点 🚀

  1. 滚动更新: 零停机部署,通过maxSurge和maxUnavailable控制
  2. 回滚机制: 支持快速回退到历史版本
  3. HPA: 基于指标自动扩缩,支持多种指标类型

最佳实践建议 💡

  1. 合理设置资源请求和限制: 确保调度决策准确
  2. 使用readinessProbe: 确保Pod就绪后才接收流量
  3. 配置优雅终止: 通过preStop和terminationGracePeriodSeconds实现平滑关闭
  4. 监控调度效果: 使用Prometheus等工具监控调度性能

🎓 六、学习建议

学习路径 📈

  1. 基础掌握: 先理解NodeSelector和基本亲和性配置
  2. 实践操作: 通过实际部署练习滚动更新和回滚
  3. 深入理解: 学习HPA的自定义指标配置
  4. 性能优化: 掌握调度策略的性能调优技巧

实践建议 🛠️

  • 从简单的NodeSelector开始,逐步学习复杂的亲和性配置
  • 在测试环境中充分练习滚动更新和回滚操作
  • 结合监控工具观察调度效果和性能指标
  • 关注Kubernetes版本的更新和新特性

🔗 相关文档

Kubernetes核心概念详解 | Kubernetes网络模型与实现详解 | Kubernetes存储抽象详解 | ConfigMap配置与密文管理详解 | Kubernetes资源管理详解

Docker多容器编排详解

Docker Compose概述

Docker Compose是一个用于定义和运行多容器Docker应用程序的工具。它允许您使用一个单独的配置文件(通常是.yml格式)来配置应用程序的所有服务、网络和卷,然后通过一条简单的命令就能创建和启动所有服务。

核心概念

  • 服务:对应一个容器,可以指定使用哪个镜像、暴露哪些端口、挂载哪些卷、设置哪些环境变量、依赖哪些其他服务等
  • 网络:定义容器之间通信的网络
  • :定义持久化数据存储的位置

服务依赖配置示例

1
2
3
4
5
6
7
8
9
10
11
version: "3.7"
services:
web:
build: .
depends_on:
- db
- redis
redis:
image: redis
db:
image: postgres

网络互通机制

  • Docker Compose会自动创建一个默认网络,所有服务都会加入该网络
  • 服务之间可以通过服务名进行DNS解析和通信
  • 可以自定义网络配置,包括网络类型、IP地址分配等

基本命令

  • docker compose up:构建、创建、启动和链接服务相关的容器
  • docker compose down:停止所有容器并删除容器和网络
  • docker compose ps:列出项目中目前的所有容器

应用价值

Docker Compose解决了手动管理多个容器的复杂性,通过一个配置文件描述整个应用栈的架构,实现一键部署和管理多容器应用。

🔗 相关文档

Docker Compose 多容器编排入门 | Docker网络模式详解 | Docker数据持久化详解

Docker容器生命周期管理详解

一、Docker容器生命周期状态

Docker容器具有完整的生命周期状态,从创建到销毁,每个阶段都有其特定的作用和命令支持:

  • Created(已创建):容器已创建但尚未运行
  • Running(运行中):容器正在运行,执行进程活跃
  • Paused(暂停):容器进程被挂起,暂时停止调度
  • Stopped/Exited(已停止/退出):容器运行完毕或被手动停止
  • Dead(死掉):异常中止或资源清理失败时的状态

二、Docker容器生命周期管理命令

1. 创建容器

docker create命令:创建容器但不启动

1
docker create --name mycontainer nginx

docker run命令:创建并启动容器

1
docker run -d --name mycontainer nginx

常用参数

  • -d, --detach:后台运行容器
  • --name:指定容器名称
  • -p:端口映射,格式:主机端口:容器端口
  • -v:挂载卷,格式:主机路径:容器路径
  • -e:设置环境变量
  • -m:限制内存使用
  • --cpus:限制CPU使用
  • --restart:设置重启策略
  • --rm:容器退出时自动删除

2. 启动容器

docker start命令:启动已创建的容器

1
docker start mycontainer

常用参数

  • -a, --attach:附加STDOUT/STDERR并向前传递信号
  • -i, --interactive:保持STDIN打开

3. 运行容器

docker run命令:创建并启动容器(常用组合)

1
docker run -d --name webserver -p 80:80 nginx

4. 暂停容器

docker pause命令:暂停容器运行

1
docker pause mycontainer

5. 恢复容器

docker unpause命令:恢复暂停的容器

1
docker unpause mycontainer

6. 停止容器

docker stop命令:优雅停止容器

1
docker stop mycontainer

常用参数

  • -t, --time:停止前等待时间(默认10秒)

7. 强制停止容器

docker kill命令:强制终止容器

1
docker kill mycontainer

常用参数

  • -s, --signal:发送指定信号(默认SIGKILL)

8. 重启容器

docker restart命令:重启容器

1
docker restart mycontainer

常用参数

  • -t, --time:停止前等待时间(默认10秒)

9. 删除容器

docker rm命令:删除已停止的容器

1
docker rm mycontainer

常用参数

  • -f, --force:强制删除运行中的容器
  • -v, --volumes:删除容器关联的卷
  • -l, --link:删除指定的连接

10. 查看容器状态

docker ps命令:查看运行中的容器

1
docker ps

常用参数

  • -a:显示所有容器(包括已停止的)
  • -q:仅显示容器ID

11. 查看容器日志

docker logs命令:查看容器日志

1
docker logs mycontainer

常用参数

  • -f:跟踪日志输出
  • --tail:显示最后N行
  • -t:显示时间戳

12. 进入容器

docker exec命令:在运行中的容器执行命令

1
docker exec -it mycontainer /bin/bash

常用参数

  • -i:保持STDIN打开
  • -t:分配伪终端
    docker attach命令:附加到运行中的容器
1
docker attach mycontainer

13. 查看容器详细信息

docker inspect命令:查看容器详细信息

1
docker inspect mycontainer

14. 查看容器资源使用

docker stats命令:查看容器资源使用情况

1
docker stats mycontainer

15. 查看容器进程

docker top命令:查看容器内运行的进程

1
docker top mycontainer

16. 容器间文件复制

docker cp命令:在容器和主机间复制文件

1
2
docker cp localfile mycontainer:/path/in/container
docker cp mycontainer:/path/in/container localfile

三、常用操作示例

1. 批量操作

批量停止所有运行中的容器

1
docker stop $(docker ps -q)

批量删除已停止的容器

1
docker rm $(docker ps -aq -f status=exited)

批量启动所有容器

1
docker start $(docker ps -aq)

2. 自动重启策略

1
docker run -d --restart unless-stopped nginx

3. 临时容器运行

1
docker run --rm myapp:test ./run_tests.sh

4. 资源限制

1
docker run -d -m 512m --cpus=1.0 nginx

5. 端口映射

1
docker run -d -p 8080:80 nginx

6. 数据卷挂载

1
docker run -d -v /host/path:/container/path nginx

7. 环境变量设置

1
docker run -d -e MYSQL_ROOT_PASSWORD=password mysql

8. 交互式运行

1
docker run -it ubuntu /bin/bash

四、生命周期管理最佳实践

  1. 使用--name参数为容器指定有意义的名称
  2. 合理设置重启策略确保服务可用性
  3. 使用资源限制防止单个容器占用过多资源
  4. 定期清理已停止的容器释放系统资源
  5. 使用docker logs监控容器运行状态
  6. 优雅停止容器使用docker stop而非docker kill
  7. 生产环境建议使用docker-compose或Kubernetes进行管理
  8. 定期备份重要容器的数据卷

🔗 相关文档

Docker 架构解析 | Docker镜像操作详解 | Docker网络模式详解 | OCI 标准概述

Docker数据持久化详解

核心概念

  • Docker数据持久化是容器化应用开发的核心挑战
  • 影响数据安全与应用可靠性
  • 提供Volume和Bind Mount两种主要机制

Volume机制

  • 由Docker管理的持久化数据卷
  • 存储位置:宿主机特定目录(/var/lib/docker/volumes/)
  • 创建命令:docker volume create mydata
  • 使用命令:docker run -d --name webapp -v mydata:/app/data nginx
  • 特点:生命周期独立于容器,适合数据库存储等场景

Bind Mount机制

  • 将宿主机任意目录直接挂载到容器中
  • 开发者对路径有完全控制权
  • 使用命令:docker run -d --name devapp -v $(pwd):/app nginx
  • 特点:适合开发环境,便于代码实时同步

对比分析

  • Volume优势:Docker管理、安全性高、跨平台兼容性好
  • Bind Mount优势:路径可控、适合开发调试
  • Bind Mount劣势:依赖宿主机目录结构

应用场景建议

  • 生产环境:优先使用Volume,提供更安全、易管理的持久化方式
  • 开发环境:Bind Mount更适合代码热重载和实时文件同步

注意事项

  • 确保数据安全保存到宿主机或其他存储位置
  • 避免容器删除导致的数据丢失问题

🔗 相关文档

Docker容器生命周期管理详解 | Docker Compose 多容器编排入门

Docker镜像仓库详解

Docker Hub推送与拉取操作

登录Docker Hub

1
docker login

输入用户名和密码完成登录
推送镜像到Docker Hub

1
2
docker tag local-image-name username/repository:tag
docker push username/repository:tag

从Docker Hub拉取镜像

1
docker pull username/repository:tag

Harbor私有仓库推送与拉取操作

配置Docker支持私有仓库
/etc/docker/daemon.json中添加insecure-registries配置,然后重启Docker服务
登录Harbor

1
docker login -u admin -p password harbor地址:port

推送镜像到Harbor

1
2
docker tag 镜像ID harbor地址:port/项目名/镜像名:版本
docker push harbor地址:port/项目名/镜像名:版本

从Harbor拉取镜像

1
docker pull harbor地址:port/项目名/镜像名:版本

轩辕镜像服务

服务概述
轩辕镜像专注公共仓库场景,整合Docker Hub、Google Container Registry、Kubernetes官方仓库等主流镜像源
免费版使用方法

  • 配置registry-mirrors指向docker.xuanyuan.me
  • 或直接使用:docker pull docker.xuanyuan.me/镜像名:tag
  • 仅支持Docker Hub镜像拉取
    专业版功能
  • 提供专属域名拉取方式:docker pull ***.xuanyuan.run/镜像名:tag
  • 支持7+个主流镜像仓库,包括:
    • Docker Hub
    • Google Container Registry (GCR)
    • GitHub Container Registry (GHCR)
    • Kubernetes仓库
    • NVIDIA
    • Quay
    • Microsoft
    • Elastic
      等仓库

🔗 相关文档

Docker镜像操作详解 | Docker 实际应用:构建自定义镜像 | 容器镜像仓库:Docker Hub 与私有仓库

Docker网络模式详解

Docker四种核心网络模式

1、Bridge桥接模式

  • 特性: 默认模式,Docker为容器分配独立虚拟网卡并接入docker0网桥
  • 网络隔离: 容器间通过Docker网络通信,与外部网络隔离
  • 适用场景: 常规应用隔离部署,需端口映射-p暴露服务

2、Host主机模式

  • 特性: 容器直接共享宿主机网络命名空间,无独立网络栈
  • 性能优势: 性能最佳无NAT转换,但会占用宿主机端口可能冲突
  • 适用场景: 网络密集型应用如负载均衡器,需避免端口转发开销

3、Container容器共享模式

  • 特性: 新容器共享指定容器的网络命名空间,如–net=container:容器名
  • 通信方式: 容器间可通过localhost直接通信,无需暴露端口
  • 适用场景: 依赖紧密的容器组,如日志收集器与应用容器

4、None无网络模式

  • 特性: 不配置任何网络接口,容器完全隔离
  • 配置要求: 需手动自定义网络栈,如通过nsenter命令
  • 适用场景: 安全性要求极高的任务或特殊网络调试

端口映射配置方法

基本配置

  • 参数: 使用-p参数指定端口映射
  • 格式: -p host_port:container_port
  • 示例: docker run -p 8080:80 nginx,将本地的8080端口映射到容器的80端口上

其他配置方式

  • 替代参数: 也可以使用–publish参数,格式相同
  • 多端口映射: 如需映射多个端口,可使用多个-p参数
  • 多端口示例: docker run -p 8080:80 -p 3306:3306 nginx

查看端口映射信息

查看命令

  • 命令: 使用docker port命令查看容器的端口映射信息
  • 语法: docker port container_id

🔗 相关文档

Docker 架构解析 | Docker容器生命周期管理详解 | Docker Compose 多容器编排入门

Docker镜像管理详解

Docker 镜像是容器的只读模板,包含应用及其运行环境。本文涵盖常用镜像操作命令、示例和最佳实践。

一、获取镜像

1. docker pull – 拉取镜像

1
docker pull [选项] 镜像名[:标签]
  • 默认标签为 latest
  • 示例:
    docker pull ubuntu:20.04
    docker pull nginx:1.25

2. docker push – 推送镜像

1
docker push 用户名/镜像名:标签
  • 需先登录仓库(docker login)并为镜像打上正确标签
  • 示例:docker push myrepo/hello:v1

二、管理本地镜像

3. docker images (或 docker image ls) – 列出镜像

1
docker images [选项]
  • -a:显示中间层镜像
  • -q:仅显示镜像 ID
  • --digests:显示摘要

4. docker rmi – 删除镜像

1
docker rmi [选项] 镜像名[:标签|镜像ID]
  • -f:强制删除(有容器依赖时)
  • 清理悬挂镜像:docker image prune

5. docker tag – 打标签

1
docker tag 源镜像[:标签] 目标镜像[:标签]
  • 为镜像添加新名称/仓库路径,不复制内容
  • 示例:docker tag nginx:latest myregistry.com/mynginx:v1

三、构建镜像

6. docker build – 通过 Dockerfile 构建

1
docker build [选项] 路径
  • -t 镜像名:标签:指定名称
  • -f Dockerfile:指定文件(默认当前目录下 Dockerfile)
  • --no-cache:忽略缓存
  • 示例:docker build -t myapp:v1 .

7. docker commit – 从容器创建镜像(临时调试,不推荐生产)

1
docker commit 容器名 新镜像名:标签

四、镜像导入/导出与文件系统转换

8. docker save – 保存镜像为 tar 文件(保留层历史)

1
docker save -o 文件名.tar 镜像名:标签

示例:docker save -o ubuntu.tar ubuntu:20.04

9. docker load – 从 tar 文件加载镜像

1
docker load -i 文件名.tar

10. docker export / docker import – 容器快照转为镜像

  • docker export 容器名 > container.tar:导出容器文件系统(丢失历史层)
  • docker import container.tar 新镜像名:标签:导入为镜像(单层)

    save/load 保留完整分层结构,export/import 生成扁平镜像,体积更小但无法追溯构建历史。

五、查看镜像详情

11. docker inspect – 显示镜像元数据(JSON)

1
docker inspect 镜像名:标签

包含架构、环境变量、开放端口、入口点等。

12. docker history – 查看镜像构建历史层

1
docker history 镜像名:标签

每层的创建命令与大小,有助于优化镜像。

六、清理与空间回收

13. docker image prune – 删除未使用的镜像

  • -a:删除所有不被容器引用的镜像
  • -f:跳过确认
    示例:docker image prune -a

14. docker system df – 查看磁盘占用(镜像、容器、卷)

典型工作流示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 拉取基础镜像
docker pull node:18-alpine

# 构建自定义镜像
docker build -t mynodeapp:1.0 .

# 标记以便推送到仓库
docker tag mynodeapp:1.0 mydockerhub/mynodeapp:1.0

# 登录并推送
docker login
docker push mydockerhub/mynodeapp:1.0

# 另一台机器拉取并运行
docker pull mydockerhub/mynodeapp:1.0

# 导出离线包
docker save -o app.tar mynodeapp:1.0
# 加载离线包
docker load -i app.tar

安全与最佳实践

  • 避免使用 latest 标签,指定具体版本号
  • 删除镜像前确认没有依赖容器(包括停止的容器),必要时加 -f
  • 生产环境推荐使用 Dockerfile + docker build,而非 docker commit
  • 定期运行 docker image prune 清理无用镜像

🔗 相关文档

Docker容器生命周期管理详解 | Docker镜像仓库详解 | Docker 实际应用:构建自定义镜像

第四阶段:Kubernetes(容器编排)·可观测性

Metrics Server

  • 概念:采集节点和 Pod 的 CPU、内存等资源指标。
  • 实现:通过 kubelet 的 cAdvisor 接口(汇总 cgroups 数据)获取指标,暴露给 HPA、kubectl top 等。

日志收集

  • 概念:采集容器 stdout/stderr 日志和容器内文件日志。
  • 常见实现(EFK/ELK):Fluentd 或 Filebeat 作为 DaemonSet 运行,读取容器日志文件(位于 /var/log/containers/),转发到 Elasticsearch 集群,并由 Kibana 可视化。

常见排查机制

  • 事件:Kubernetes 资源状态变化时生成 Event 对象,存储在 API Server 中,可通过 kubectl describe 查看。
  • 日志:kubelet 将容器标准输出日志轮转存储,默认保留近期文件。
  • exec 调试:通过 API Server 与 kubelet 的 /exec 子资源建立流式连接,在容器内执行命令(基于容器运行时 exec API)。

🔗 相关文档

Kubernetes 核心概念全景 | Kubernetes 调度与部署策略 | Kubernetes 资源管理

第四阶段:Kubernetes(容器编排)·存储抽象

PV(PersistentVolume)

  • 概念:集群级别的存储资源抽象,由管理员预先提供或通过 StorageClass 动态创建。
  • 实现:PV 代表某种后端存储(NFS、Ceph、云盘),包含容量、访问模式和回收策略。

PVC(PersistentVolumeClaim)

  • 概念:用户对存储资源的请求,Pod 通过 PVC 使用存储。
  • 实现:PVC 指定所需容量和访问模式,PV 控制器会寻找匹配的 PV 并绑定。绑定后 PVC 成为 PV 的唯一所有者。

StorageClass

  • 概念:动态供应存储的模板,定义卷插件类型及参数。
  • 实现:当 Pod 引用的 PVC 未绑定到现有 PV 且 StorageClass 有 provisioner(如 kubernetes.io/aws-ebs),provisioner 会自动创建新存储资源并生成 PV。

🔗 相关文档

Kubernetes 核心概念全景 | Kubernetes 调度与部署策略 | Kubernetes 配置与密文

第四阶段:Kubernetes(容器编排)·安全机制

RBAC(基于角色的访问控制)

  • 概念:通过 Role(namespace 范围)或 ClusterRole(集群范围)定义权限(verbs + resources),再通过 RoleBinding/ClusterRoleBinding 将角色授予用户、Group 或 ServiceAccount。
  • 实现:API Server 在请求处理前检查访问者的身份(认证阶段)和授权(RBAC 鉴权模块),查看是否有匹配的 RoleBinding。

ServiceAccount

  • 概念:Pod 使用的身份标识,对应一个 Secret(Token)挂载到 Pod 内。
  • 实现:Pod 在创建时自动挂载 ServiceAccount 的 JWT Token,Pod 内应用可使用该 Token 访问 API Server。

PodSecurityPolicy(已废弃)及其替代 Pod Security Admission

  • 概念:Pod 运行时安全策略,如禁止特权容器、限制 root 权限、只读根文件系统等。
  • 实现:PSA 利用命名空间标签(pod-security.kubernetes.io/enforce)设置三个级别,API Server 在 Pod 创建或更新时根据策略校验 Pod Spec。

NetworkPolicy

  • 概念:Pod 之间或 Pod 与外部的网络访问控制规则。
  • 实现:需要网络插件支持(Calico、Cilium、Weave 等)。插件根据 NetworkPolicy 资源生成 iptables 规则或 eBPF 程序,在节点上根据 Pod 标签和 ipBlock 过滤流量。

🔗 相关文档

Kubernetes 核心概念全景 | Kubernetes 网络模型与实现 | Kubernetes 配置与密文
0%