CKS 考试题整理 (01)-NetworkPolicy

管理员

 

 Task

创建一个名为 pod-restriction 的 NetworkPolicy 来限制对在 namespace dev-team 中运行的 Pod products-service 的访问。

 

只运行以下 Pod 连接到 Pod products-service

  • namespace qa 中的 Pod
  • 位于任何 namespace,带有标签 environment:testing 的 Pod

 

注意: 确保应用 NetworkPolicy。

 

你可以再 /cks/6/p1.yaml 找到一个模板清单文件。

 

参考资料

https://kubernetes.io/zh-cn/docs/concepts/services-networking/network-policies/

 

解答

切换集群

kubectl config use-context KSSH00301

 

1. 检查 namespace 标签

kubectl get ns --show-labels

查看 pod 标签(environment:testing)

kubectl get pod -n dev-team --show-labels

 

如果 Pod 或者 Namespace 没有标签,需要打上标签

kubectl label ns qa name=qa

kubectl label pod products-service environment=testing -n dev-team

 

2. 创建 NetworkPolicy

vim /cks/6/p1.yaml

根据官网修改内容如下:

 

apiVersion: networking.k8s.io/v1

kind: NetworkPolicy

metadata:

  name: pod-restriction

  namespace: dev-team

spec:

  podSelector:

    matchLabels:

      environment: testing          # 这个是 pod 的 label 要从show-label中查

  policyTypes:

  - Ingress

  ingress:

  - from:

    - namespaceSelector:

        matchLabels:

          name: qa

  - from:

    - namespaceSelector: {}          # 表示所有命名空间

      podSelector:                          # podSelector 前面的 “-”要删除,对齐

        matchLabels:

          environment: testing          # 这个是所有命名空间有标签的 Pod, 根据题目要求写的 “位于任何 namespace,带有标签 environment:testing 的 Pod”

 

创建

kubectl apply -f /cks/6/p1.yaml

 

检查

kubectl get networkpolicy -n dev-team