目录


题目

k8s学习-CKA真题-网络策略NetworkPolicy_nginx

分析

创建一个名字为all-port-from-namespace的NetworkPolicy。
这个NetworkPolicy允许internal命名空间下的Pod访问该命名空间下的9000端口。
不允许不是internal命令空间的下的Pod访问
不允许访问没有监听9000端口的Pod。
注意:这里为了验证结果,后续使用了端口80。

命令

环境搭建

创建命名空间internal

kubectl create ns internal

k8s学习-CKA真题-网络策略NetworkPolicy_nginx_02


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

k8s学习-CKA真题-网络策略NetworkPolicy_学习_03

解题

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
protocal:

创建NetworkPolicy all-port-from-namespace

kubectl create -f all-port-from-namespace.yaml

结果

创建NetworkPolicy之前

k8s学习-CKA真题-网络策略NetworkPolicy_nginx_04


创建NetworkPolicy之后

k8s学习-CKA真题-网络策略NetworkPolicy_kubernetes_05


可以看到,创建后,internal之外的Pod无法访问

参考

k8s学习-kubectl命令常用选项详解与实战

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