题目

Task
创建一个名为 pod-restriction 的 NetworkPolicy 来限制对在 namespace dev-team 中运行的 Pod products-service 的访问。
只允许以下 Pod 连接到 Pod products-service:
1.namespace qaqa 中的 Pod
2.位于任何 namespace,带有标签 environment: testing 的 Pod
注意:确保应用 NetworkPolicy。

环境搭建

创建命名空间
命令

kubectl create ns dev-team
kubectl create ns qaqa

截图
在这里插入图片描述
创建products-service
命令

kubectl run products-service --image=nginx --dry-run=client -o yaml > products-service.yaml

修改products-service.yaml

apiVersion: v1
kind: Pod
metadata:
  labels:
    run: products-service
  name: products-service
spec:
  containers:
  - image: nginx
    imagePullPolicy: IfNotPresent
    name: products-service
    resources: {}
  dnsPolicy: ClusterFirst
  restartPolicy: Always
status: {}

命令

kubectl create -f products-service.yaml -n dev-team

截图
在这里插入图片描述
在这里插入图片描述

pod打标签(default下的busybox-demo,请读者自行创建)
命令

kubectl label po busybox-demo environment=testing

截图
在这里插入图片描述

解题

在这里插入图片描述
pod-restriction.yaml

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: pod-restriction
  namespace: dev-team
spec:
  podSelector:
    matchLabels:
      run: products-service 
  policyTypes:
    - Ingress
  ingress:
  - from:
    - namespaceSelector:
        matchLabels:
          kubernetes.io/metadata.name: qaqa
  - from:
    - namespaceSelector: {}
      podSelector:
        matchLabels:
          environment: testing

解释:对于dev-team命名空间下标签打了run=products-service的Pod的如流量进行限制,打了kubernetes.io/metadata.name=qaqa标签的命名空间下的Pod都可以访问,打了environment=testing标签的Pod都可以访问。
namespaceSelector不写时默认为当前命名空间,若任意命名空间,需要写空

模拟题

在这里插入图片描述
在这里插入图片描述

参考

k8s-网络策略
k8s学习-网络策略NetworkPolicy(概念、模版、创建、删除等)
k8s学习-CKA真题-网络策略NetworkPolicy

更多k8s相关内容,请看文章:k8s学习-思维导图与学习笔记

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐