默认情况下,kubernetes中所有的pod都是可以相互访问的,但如果你需要控制某些pod的访问权限,例如,DB pods只允许API 的pod 来访问,其他的pod无法访问,这个时候我们就要创建一个新的对象,叫networkpolicy
这其实就给我们的pod 加了一个防火墙,管理进出,进的是Ingress ,出的是Egress
例子:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: db-policy spec: podSelector: matchLabels: role: db policyTypes: - Ingress ingress: - from: - podSelector: matchLabels: role: api-pod ports: - protocol: TCP port: 3306 |
首先,podSelector 定义了这个networkpolicy要作用于哪些pod ,这里是标签是db的这些pod
然后这些pod只允许 标签是 role: api-pod的流量进来,端口是3306
创建完成后,其他的pod就无法访问了
注意:Flannel 不支持network policy(可以创建但是不会生效)
Latest posts by Zhiming Zhang (see all)
- aws eks node 自动化扩展工具 Karpenter - 8月 10, 2022
- ReplicationController and ReplicaSet in Kubernetes - 12月 20, 2021
- public key fingerprint - 5月 27, 2021