Kubernetes-黑白通信服务的网络策略

时间:2018-06-21 20:49:27

标签: kubernetes

对于以下要求,我需要有关网络政策的帮助。

是否可以让名称空间A中的应用程序A仅连接到名称空间B中的应用程序B?我只希望一个名称空间中的一个应用程序连接到另一个命名空间中的一个应用程序?

我在全局有一个网络策略,默认情况下全部拒绝。

当前,网络策略只有OR。我正在寻找的是AND,所以我可以说,允许名称空间A和podA。总有办法实现吗?

谢谢

3 个答案:

答案 0 :(得分:0)

是的,您可以这样做。对于入口网络策略,只需在namespaceSelector部分中同时设置podSelectorfrom即可同时指定名称空间和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

这个例子很简单。根据连接类型和您的应用程序配置,您可能需要ServiceIngress资源

更多信息:

此外,本文档将对您有所帮助:

答案 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/以获得更多示例。