对于以下要求,我需要有关网络政策的帮助。
是否可以让名称空间A中的应用程序A仅连接到名称空间B中的应用程序B?我只希望一个名称空间中的一个应用程序连接到另一个命名空间中的一个应用程序?
我在全局有一个网络策略,默认情况下全部拒绝。
当前,网络策略只有OR。我正在寻找的是AND,所以我可以说,允许名称空间A和podA。总有办法实现吗?
谢谢
答案 0 :(得分:0)
是的,您可以这样做。对于入口网络策略,只需在namespaceSelector
部分中同时设置podSelector
和from
即可同时指定名称空间和pod标签(在示例中是应用程序A和名称空间A的) )-选择器在一起。对于目标,使用podSelector
字段选择应用程序B,并确保将网络策略元数据中的namespace
设置为名称空间B。
请注意,要使用namespaceSelector
,必须标记名称空间。默认情况下,名称空间在Kubernetes中未标记。
请查看this guide中的“跨命名空间”部分,以获取更全面的说明以及YAML示例。
答案 1 :(得分:-1)
Pod可以跨命名空间相互通信:
名称空间1中的应用1:
$ kubectl -n namespace1 get po -o wide
NAME READY STATUS RESTARTS AGE IP NODE
app1-5d8bb8ffbb-7x74v 1/1 Running 0 1d 10.233.65.115 node1.example.kz
名称空间2中的应用2:
$ kubectl -n namespace2 get po -o wide
NAME READY STATUS RESTARTS AGE IP NODE
app2-569f46b8d5-fz9dw 1/1 Running 0 1d 10.233.67.80 node2.example.kz
我可以从App 1连接到App 2:
kubectl -n namespace1 exec app1-5d8bb8ffbb-7x74v -- ping -c 1 10.233.67.80
PING 10.233.67.80 (10.233.67.80) 56(84) bytes of data.
64 bytes from 10.233.67.80: icmp_seq=1 ttl=62 time=0.917 ms
--- 10.233.67.80 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.917/0.917/0.917/0.000 ms
这个例子很简单。根据连接类型和您的应用程序配置,您可能需要Service
,Ingress
资源
更多信息:
此外,本文档将对您有所帮助:
答案 2 :(得分:-1)
如何使用NetworkPolicy
资源配置Pod组与其他网络端点之间的通信方式。
您的网络解决方案(CNI插件)必须支持NetworkPolicy,因为您需要控制器。仅创建资源而没有控制器来实现它就不会起作用。
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: default-deny
spec:
podSelector: {}
policyTypes:
- Ingress
看看https://kubernetes.io/docs/concepts/services-networking/network-policies/以获得更多示例。