仅限部分 pods 访问服务

Restrict access to service to only some pods

我在 pod 上有一个 mosquitto 代理 运行,此服务器作为 DNS 和 IP 地址的服务公开。

但是集群中的任何 pod 都可以访问此服务。

我想限制对此服务的访问,这样 pods 尝试连接到此 DNS 或 IP 地址应该只有在 pods 具有某些 name/metadata 时才能够。

我想一个解决方案是使用名称空间?还有什么其他解决方案?

您所描述的用例正是 NetworkPolicies 的用途。

基本上,您可以为 pods 定义选择器,网络流量应该受到限制(即您的蚊子代理)以及 pods 需要具备什么才能允许访问它。例如标签 "broker-access: true" 或任何似乎适合您的标签。

示例网络策略可能如下所示:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: broker-policy
  namespace: default  
spec:
  podSelector:
    matchLabels:
      role: message-broker
  policyTypes:
  - Ingress
  ingress:
  - from:
    - podSelector:
        matchLabels:
          broker-access: true
    ports:
    - protocol: TCP
      port: 6379

此网络策略将应用于带有标签 role=message-broker 的每个 pod。 它将限制所有传入流量,但来自端口 6379 上带有标签 broker-acces=true 的 pods 的流量除外。

希望这对您有所帮助,并为您的 NetworkPolicy 提供一些支架