【问题标题】:Kubernetes Health Checks Failing with Network Policies Enabled启用网络策略的 Kubernetes 运行状况检查失败
【发布时间】:2021-01-30 08:35:47
【问题描述】:

仅启用出口网络策略时,重新启动 Pod 后所有就绪性和活动性检查都会失败。

这是我在描述 pod 时看到的:

Warning Unhealthy 115s (x7 over 2m55s) kubelet, Readiness probe failed: Get http://10.202.158.105:80/health/ready: dial tcp 10.202.158.105:80: connect: connection denied 警告不健康 115s (x7 over 2m55s) kubelet, Liveness probe failed: Get http://10.202.158.105:80/health/live: dial tcp 10.202.158.105:80: connect: connection denied

如果我禁用这些策略,运行状况检查将立即恢复运行。如果 pod 在应用网络策略之前已经健康,它将继续工作。

我还尝试使用此策略将每个命名空间列入白名单:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: allow-ingress-all
spec:
  podSelector: {}
  policyTypes:
  - Ingress
  ingress:
  - from:
    - namespaceSelector: {}
    ports:
    - protocol: TCP
      port: 80
    - protocol: TCP
      port: 8080

我很难找到有关如何解决此问题的任何指导。是否需要启用出口策略以允许 kubelet 监控 pod 健康检查?

pod 在 Azure Kubernetes 服务中运行并使用 Calico 网络。

【问题讨论】:

    标签: kubernetes firewall kubelet calico kubernetes-networkpolicy


    【解决方案1】:

    看起来 kube-probe 使用 AKS 中每个 pod cidr 的 .1 地址。我相信这将是 linux 网桥在代理池 VM 上分配的地址,因此主机选择它作为到 pod 的最便宜的路由。

    没有具有此地址的 pod,所以我看不出它如何被选择器匹配,除非 AKS 的 implementation 内置了一些魔法。

    kubectl get pods --all-namespaces -o json \
      | jq -r '.items[] | [ .status.podIP, .metadata.name ] | join("\t")'
    

    可以使策略与所有 pod CIDR 的源 .1 IP 的特定规则一起使用。

    kubectl get nodes -o json \
      | jq '.items[] | [ .metadata.name, .spec.podCIDR ]'
    [
      "aks-agentpool-12345678-vmss000000",
      "10.212.0.0/24"
    ]
    [
      "aks-agentpool-12345678-vmss000001",
      "10.212.1.0/24"
    ]
    

    所以这将是每个节点的ipBlock

      ingress:
      - from:
        - ipBlock:
            cidr: 10.212.0.1/32
        - ipBlock:
            cidr: 10.212.1.1/32
    

    这有点可怕,因为它是每个集群和每个节点池的配置。我只涉足 AKS,所以可能有更好的解决方案。如果您找不到其他任何内容,我会在 https://github.com/Azure/AKS/ 上提交错误

    【讨论】:

      猜你喜欢
      • 2021-02-21
      • 1970-01-01
      • 2022-01-04
      • 1970-01-01
      • 2021-04-28
      • 2020-04-28
      • 1970-01-01
      • 2021-12-26
      • 2022-01-19
      相关资源
      最近更新 更多