CKAD-CN 考试知识点分享(14) NetworkPolicy 网络策略
您必须连接到正确的主机。不这样做可能导致零分。
[candidate@base] $ ssh ckad00018
任务目标
在 ckad00018
命名空间中,更新 Pod ckad00018-newpod
,使其仅能与名为 front
和 db
的两个 Pod 进行网络通信(允许收发流量),与其他 Pod 之间禁止通信。
实现方式:通过标签(Label)和现有的 NetworkPolicy 实现网络隔离。
步骤一:检查现有 NetworkPolicy
首先查看命名空间中的 NetworkPolicy:
kubectl get networkpolicies -n ckad00018
输出可能包含名为 access-db
的策略。进一步查看其规则:
kubectl -n ckad00018 describe networkpolicies access-db
输出示例:
Name: access-db
Namespace: ckad00018
PodSelector: app=db
Allowing ingress:To Port: 5432From:PodSelector: db-access=true
说明:该 NetworkPolicy 允许带有标签 db-access=true
的 Pod 访问 app=db
的 Pod(即 db
)。
✅ 提示:我们可利用现有策略,无需创建新 NetworkPolicy。
步骤二:为 Pod 打标签以匹配访问策略
为了让 ckad00018-newpod
能与 front
和 db
通信,需为其添加相应的标签,使其符合访问控制规则。
1. 添加标签以访问 db
Pod
根据 access-db
策略,需要 db-access=true
标签才能访问 db
。
kubectl -n ckad00018 label pod ckad00018-newpod db-access=true
2. 添加标签以访问 front
Pod
假设已有另一个 NetworkPolicy 或服务允许 front-access=true
的 Pod 访问 front
,执行:
kubectl -n ckad00018 label pod ckad00018-newpod front-access=true
步骤三:验证标签是否生效
查看 Pod 的标签是否已正确添加:
kubectl -n ckad00018 get pod ckad00018-newpod --show-labels
输出应包含:
NAME READY STATUS LABELS
ckad00018-newpod 1/1 Running ...,db-access=true,front-access=true
步骤四:验证通信策略
ckad00018-newpod
→db
:通过db-access=true
标签,满足access-db
NetworkPolicy,允许通信;ckad00018-newpod
→front
:通过front-access=true
标签(假设存在对应策略),允许通信;ckad00018-newpod
→ 其他 Pod:无匹配策略,默认拒绝(假设启用了默认拒绝策略的 NetworkPolicy)。
✅ 实现目标:该 Pod 仅能与
front
和db
通信,与其他 Pod 隔离。
总结
- 利用已有 NetworkPolicy 规则(如
access-db
),无需新建策略; - 为 Pod 添加特定标签(
db-access=true
,front-access=true
),使其符合访问策略; - Kubernetes 网络策略基于标签实现微隔离,确保最小权限访问;
- 最终实现:
ckad00018-newpod
只能与front
和db
Pod 通信,满足安全隔离要求。