11. [CKA]考试之网络策略NetworkPolicy ☆☆☆
11.1 题目要求
11.1.1 2021年1月
创建一个名字为 allow-port-from-namespace 的 NetworkPolicy,这个 NetworkPolicy 允许
internal 命名空间下的 Pod 访问该命名空间下的 9000 端口。
- 并且不允许不是 internal 命令空间的下的 Pod 访问(其他命名空间都不能访问)
- 不允许访问没有监听 9000 端口的 Pod 。(port端口不是9000的pod不能被访问)
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: allow-port-from-namespace
namespace: internal
spec:
podSelector: {}
policyTypes:
- Ingress
ingress:
- from:
- podSelector: {}
ports:
- protocol: TCP
port: 9000
11.1.2 2023年3月
在现有的namespace my-app中创建一个名为all-port-from-namespace的新NetworkPolicy。
确保新的NetworkPolicy允许namespace my-app中的pods可以连接到namespace big-corp中的8080。
进一步确保新的NetworkPolicy:
- 不允许非来自my-app命名空间下的pod访问
- 不允许对没有监听端口8080的pods访问
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: all-port-from-namespace
namespace: my-app
spec:
podSelector: {}
policyTypes:
- Ingress
- Egress
ingress:
- from:
- podSelector: {}
ports:
- protocol: TCP
port: 8080
egress:
- to:
- namespaceSelector:
matchLabels:
name: big-corp
ports:
- protocol: TCP
port: 8080
11.1.3 2023年4月
在现有的namespace fubar中创建一个名为allow-port-from-namespace的新NetworkPolicy。
确保新的NetworkPolicy允许namespace my-app中的Pods连接到namespace fubar 中的Pods的80端口。
进一步确保新的NetworkPolicy:
-
不允许对没有在监听端口80的Pods的访问
-
不允许非来自 namespace my-app中的Pods的访问
11.2 官网位置
搜索词:networkpolicy 找到:网络策略
11.3 操作步骤-2023年4月
11.3.1 查询命名空间my-app的标签
考试的时候需要切换集群,切换集群后在命令行中执行查询命名空间中的所有标签命令,执行结果如下:
kubectl get ns my-app --show-labels
找出访问者namespace的标签独特标签label,为name=my-app
11.3.2 创建yaml文件
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: allow-port-from-namespace
namespace: fubar
spec:
podSelector:
matchLabels: {}
policyTypes:
- Ingress
ingress:
- from:
- namespaceSelector:
matchLabels:
name: my-app
ports:
- protocol: TCP
port: 80
11.3.3 执行yaml
kubectl apply -f network.yaml