我如何限制一个pod直接联系其他pod,但允许通过服务访问


  1. 比方说,我有3个nginx pod在端口80上侦听
  2. 比方说,我有一个类型为ClusterIP的一次性服务nginx-svc,通过端口8080侦听,并通过端口80将请求转发到上面的nginx pod
  3. 比方说,我有另一个吊舱busybox

如何配置network-policy以允许busyboxpod仅通过服务nginx-svc而不是直接访问nginxpod?

您无法实现您提出的方式,但您可以使用NetworkPolicy限制对特定服务和标签的pod访问。

例如,如果您有标签为app: nginx的部署(您可以使用kubectl create deployment nginx --image=nginx创建它(,并且您公开了它,那么通过使用kubectl expose deployment nginx --port=80,您可以创建以下NetworkPolicy:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: access-nginx
spec:
podSelector:
matchLabels:
app: nginx
ingress:
- from:
- podSelector:
matchLabels: #mutable fields
access: "true"

它将限制对只有标签app=nginxaccess="true"的吊舱的访问。

应用此网络策略后,您可以创建标签为access="true"的busybox pod,它将能够与这些pod通信。

相关内容

最新更新