Kubernetes 网络政策


网络策略定义了同一命名空间中的 Pod 如何相互通信以及如何与网络端点通信,它需要在API服务器的运行时配置中启用 extensions/v1beta1/networkpolicies,它的资源使用标签来选择 Pod 并定义规则,以允许流量传输到特定 Pod 以及命名空间中定义的 Pod。

首先,需要配置命名空间隔离策略,负载均衡器需要这种网络策略:

kind: Namespace
apiVersion: v1
metadata:
    annotations:
        net.beta.kubernetes.io/network-policy: |
        {
            "ingress":
            {
                "isolation": "DefaultDeny"
            }
        }


$ kubectl annotate ns <namespace> "net.beta.kubernetes.io/network-policy = 
{\"ingress\": {\"isolation\": \"DefaultDeny\"}}"

创建命名空间后,需要创建网络策略。

网络策略 Yaml


kind: NetworkPolicy
apiVersion: extensions/v1beta1
metadata:
    name: allow-frontend
    namespace: myns
spec:
    podSelector:
        matchLabels:
            role: backend
    ingress:
    - from:
        - podSelector:
            matchLabels:
                role: frontend
    ports:
        - protocol: TCP
            port: 6379