题目
分析
创建一个名字为all-port-from-namespace的NetworkPolicy。
这个NetworkPolicy允许internal命名空间下的Pod访问该命名空间下的9000端口。
不允许不是internal命令空间的下的Pod访问
不允许访问没有监听9000端口的Pod。
注意:这里为了验证结果,后续使用了端口80。
命令
环境搭建
创建命名空间internal
kubectl create ns internal
busy-box-for-internal.yaml
apiVersion: v1 kind: Pod metadata: name: busybox-demo spec: containers: - name: busybox image: busybox:latest imagePullPolicy: IfNotPresent command: ['sh','-c','sleep 3600']
在命名空间internal创建pod busy-box
kubectl create busy-box-for-internal.yaml -n internal
nginx-demo-for-internal.yaml
apiVersion: v1 kind: Pod metadata: name: nginx-demo spec: containers: - name: nginx image: nginx:1.14.2 ports: - containerPort: 80
在命名空间internal创建pod nginx-demo
kubectl create nginx-demo-for-internal.yaml -n internal
解题
all-port-from-namespace.yaml
apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: all-port-from-namespace namespace: internal spec: podSelector: {} policyTypes: - Ingress ingress: - from: - podSelector: {} ports: - port: 80 protocol: TCP
创建NetworkPolicy all-port-from-namespace
kubectl create -f all-port-from-namespace.yaml
结果
创建NetworkPolicy之前
创建NetworkPolicy之后
可以看到,创建后,internal之外的Pod无法访问
参考
更多k8s相关内容,请看文章:k8s学习-思维导图与学习笔记