由于最新的CKA考试改版,不允许存储书签,本博客致力怎么一步步从官网把答案找到,如何修改把题做对,下面开始我们的 CKA之旅
题目为:
Task
在现有的namespace fubar中创建一个名为allow-port-from-namespace的新NetworkPolicy。
确保新的NetworkPolicy允许namespace my-app中的Pods连接到namespace fubar 中的Pods的80端口。
进一步确保新的NetworkPolicy:
不允许对没有在监听端口80的Pods的访问
不允许非来自 namespace my-app中的Pods的访问
注意,如果题目要求先切换K8S环境,需执行K8S切换环境
分析做题步骤
1、打开官网(真实考试需要在官网的搜索界面搜索关键词network即可 )
网络策略 | Kubernetes
2、创建快照并保存,找到官网如下内容,并把官网内容按如下箭头复制
3、考试的时候需要切换集群,切换集群后在命令行中执行查询命名空间中的所有标签命令,执行结果如下:
kubectl get ns --show-labels
找出访问者namespace的标签独特标签label,为name=my-app
my-app Active 537d kubernetes.io/metadata.name=my-app,name=my-app
4、 新创建一个yaml文件,命名为network.yaml(名字题目没有要求,自定义就行)
vim network.yaml
5、把官网的内容复制到yaml文件中如下图
6、根据题意修改yaml文件内容如下:
变化的部分如下,修改完后保存退出
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: test-network-policy =>改为题目中的allow-port-from-namespace
namespace: default =>改为题目中的fubar
spec:
podSelector:
matchLabels: =>改为matchLabels: {}
role: db =>去掉
policyTypes:
- Ingress
- Egress =>去掉
ingress:
- from:
- ipBlock: =>去掉
cidr: 172.17.0.0/16 =>去掉
except: =>去掉
- 172.17.1.0/24 =>去掉
- namespaceSelector:
matchLabels:
project: myproject =>修改为上面步骤中匹配到的标签name: my-app
- podSelector: =>去掉
matchLabels: =>去掉
role: frontend =>去掉
ports:
- protocol: TCP
port: 6379 =>修改为题中的80
egress: =>去掉
- to: =>去掉
- ipBlock: =>去掉
cidr: 10.0.0.0/24 =>去掉
ports: =>去掉
- protocol: TCP => 去掉
port: 5978 =>去掉
6、执行yaml文件,结果如下
kubectl apply -f network.yaml
7、验证,输入如下命令,得到如下结果
kubectl get networkpolicy -n fubar
输入如下命令,得到如下结果即成功
kubectl describe networkpolicy allow-port-from-namespace -n fubar