资讯动态

Kubernetes NetworkPolicy 核心概念与CKA考试实战指南

发布时间:2026/9/19 4:56:56 来源:尧图企业网站定制
1. Kubernetes NetworkPolicy 基础概念解析NetworkPolicy 是 Kubernetes 中用于定义 Pod 间网络通信规则的核心资源对象。它本质上是一种防火墙规则通过标签选择器机制实现对 Pod 网络流量的精细控制。在 CKA 考试中NetworkPolicy 题目通常要求考生根据特定场景创建符合要求的网络策略。1.1 NetworkPolicy 核心要素一个完整的 NetworkPolicy 包含以下关键组成部分podSelector指定该策略适用的目标 Pod使用标签选择器进行匹配policyTypes定义策略类型Ingress/Egress 或两者ingress入站规则控制哪些来源可以访问目标 Podegress出站规则控制目标 Pod 可以访问哪些外部资源重要提示NetworkPolicy 需要网络插件支持才能生效常见的支持插件包括 Calico、Cilium 和 Weave Net 等。在考试环境中确认网络插件类型是首要步骤。1.2 典型应用场景在实际考试和工作中NetworkPolicy 常用于以下场景隔离命名空间限制不同命名空间 Pod 间的通信微服务访问控制只允许特定前端服务访问后端服务数据库保护限制只有应用 Pod 可以访问数据库互联网暴露控制限制哪些 Pod 可以访问外部网络2. CKA 考试环境准备与验证2.1 环境确认与初始化在开始 NetworkPolicy 题目练习前必须确认 Kubernetes 集群环境和网络插件状态# 确认 Kubernetes 版本 kubectl version --short # 检查节点状态 kubectl get nodes -o wide # 确认网络插件本例使用 Calico kubectl get daemonset -n kube-system calico-node根据题目要求创建必要的命名空间和测试 Pod# 创建 frontend 和 backend 命名空间 kubectl create ns frontend kubectl create ns backend # 在 frontend 命名空间创建测试 Pod kubectl run frontend-pod --imagenginx -n frontend --labelsappfrontend # 在 backend 命名空间创建测试 Pod kubectl run backend-pod --imagenginx -n backend --labelsappbackend2.2 基础连通性测试在应用 NetworkPolicy 前先验证默认的网络连通性# 从 frontend-pod 测试访问 backend-pod kubectl exec -n frontend frontend-pod -- curl backend-pod-ip # 从 backend-pod 测试访问 frontend-pod kubectl exec -n backend backend-pod -- curl frontend-pod-ip注意默认情况下Kubernetes 集群中的 Pod 之间是可以自由通信的。NetworkPolicy 的作用就是改变这种默认行为。3. NetworkPolicy 实战演练3.1 创建基础 NetworkPolicy根据题目要求我们需要创建一个只允许来自 frontend 命名空间的 Pod 访问 backend 命名空间中特定 Pod 的策略apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: allow-frontend namespace: backend spec: podSelector: matchLabels: app: backend policyTypes: - Ingress ingress: - from: - namespaceSelector: matchLabels: kubernetes.io/metadata.name: frontend - podSelector: matchLabels: app: frontend关键配置解析podSelector.matchLabels指定策略应用于 backend 命名空间中带有app:backend标签的 Podingress.from定义了允许的入站流量来源namespaceSelector匹配 frontend 命名空间podSelector进一步限定只允许带有app:frontend标签的 Pod3.2 策略验证方法应用策略后需要进行全面验证# 应用 NetworkPolicy kubectl apply -f allow-frontend.yaml # 从 frontend 命名空间的 Pod 测试访问应该成功 kubectl exec -n frontend frontend-pod -- curl backend-pod-ip # 从其他命名空间的 Pod 测试访问应该失败 kubectl run test-pod --imagenginx --rm -it -- curl backend-pod-ip验证时需要注意以下几点确保测试 Pod 的标签与策略匹配测试应该包括允许和拒绝两种情况的验证考虑使用--rm -it参数创建临时测试 Pod4. 高级 NetworkPolicy 技巧4.1 端口级控制NetworkPolicy 可以细化到端口级别的控制apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: allow-specific-port namespace: backend spec: podSelector: matchLabels: app: backend policyTypes: - Ingress ingress: - from: - namespaceSelector: matchLabels: kubernetes.io/metadata.name: frontend ports: - protocol: TCP port: 804.2 组合条件策略NetworkPolicy 支持复杂的条件组合ingress: - from: - namespaceSelector: matchLabels: env: production podSelector: matchLabels: role: api-gateway - ipBlock: cidr: 192.168.1.0/24这个策略允许来自 production 命名空间且带有 roleapi-gateway 标签的 Pod来自 192.168.1.0/24 IP 段的访问5. 常见问题排查指南5.1 策略未生效排查步骤确认网络插件支持kubectl get pods -n kube-system | grep -E calico|cilium|weave检查策略是否应用kubectl get networkpolicy -n backend验证标签匹配kubectl get pods --show-labels -n frontend kubectl get ns --show-labels检查网络插件日志kubectl logs -n kube-system calico-pod-name5.2 典型错误与解决方案问题1策略已创建但流量仍被允许可能原因策略选择器与 Pod 标签不匹配解决方案检查 Pod 和命名空间标签是否准确问题2策略导致所有流量被拒绝可能原因未明确定义允许规则解决方案确保至少有一条明确的允许规则问题3跨命名空间策略不生效可能原因命名空间缺少标准标签解决方案为命名空间添加kubernetes.io/metadata.name标签6. CKA 考试实战建议6.1 考试时间管理先快速浏览题目要求明确需要创建的策略类型使用kubectl explain networkpolicy查询语法优先完成基本要求再考虑高级功能留出至少3分钟进行验证测试6.2 实用命令备忘# 快速创建测试 Pod kubectl run test-pod --imagenginx --rm -it --restartNever -- bash # 查看 NetworkPolicy 详情 kubectl describe networkpolicy -n namespace # 导出现有策略为 YAML kubectl get networkpolicy -n namespace -o yaml6.3 标签管理技巧在考试中高效管理标签可以节省大量时间# 为命名空间添加标准标签 kubectl label ns frontend kubernetes.io/metadata.namefrontend # 批量更新 Pod 标签 kubectl label pods -n frontend --all appfrontend # 检查标签设置 kubectl get ns --show-labels kubectl get pods -n frontend --show-labels在实际考试中遇到 NetworkPolicy 题目时保持冷静按照以下步骤操作明确题目要求的流量方向Ingress/Egress确认目标 Pod 的选择条件确定允许/拒绝流量的来源/目标考虑是否需要端口限制创建策略后立即进行验证测试记住NetworkPolicy 是累积生效的 - 如果多个策略同时应用于同一个 Pod它们的规则会叠加。在考试中通常只需要创建一个策略就能满足题目要求。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价