- 比方说,我有3个nginx pod在端口80上侦听
- 比方说,我有一个类型为
ClusterIP
的一次性服务nginx-svc
,通过端口8080
侦听,并通过端口80
将请求转发到上面的nginx pod - 比方说,我有另一个吊舱
busybox
如何配置network-policy
以允许busybox
pod仅通过服务nginx-svc
而不是直接访问nginx
pod?
您无法实现您提出的方式,但您可以使用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=nginx
和access="true"
的吊舱的访问。
应用此网络策略后,您可以创建标签为access="true"
的busybox pod,它将能够与这些pod通信。