【问题标题】:k8s network policy blocks DNSk8s 网络策略阻止 DNS
【发布时间】:2021-12-02 03:29:47
【问题描述】:

我正在尝试使用网络策略为我的 pod 启用 DNS。 我正在使用https://kubernetes.io/docs/tasks/administer-cluster/dns-debugging-resolution/

当 DNS 工作时:

nslookup kubernetes.default
Server:         100.64.0.10
Address:        100.64.0.10#53

Name:   kubernetes.default.svc.cluster.local
Address: 100.64.0.1

使用网络策略

/ # nslookup kubernetes.default
;; connection timed out; no servers could be reached

我试过了

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: my_name
  namespace: my_namespace
spec:
  podSelector:
    matchLabels: {}
  policyTypes:
  - Egress
  egress:
  - to:
    - namespaceSelector:
        matchLabels:
          name: kube-system
    ports:
    - protocol: UDP
      port: 53
    - protocol: TCP
      port: 53

egress:
  - to:
    - namespaceSelector:{}
      podSelector: {}
    ports:
    - protocol: UDP
      port: 53
    - protocol: TCP
      port: 53

egress:
  - ports:
    - protocol: UDP
      port: 53
    - protocol: TCP
      port: 53

它们都不起作用。我尝试过的唯一有效的方法如下:

egress:
  - to:
    - namespaceSelector:{}
      podSelector: {}

但它会打开所有出口。

我在本地的 k8s(带有纤毛的 minikube)中尝试了这些组合。它们都按预期工作,但不在生产环境中(AWS k8s 1.20 with calico)。我总是有DNS问题。从 tcpdump 来看,我确信 DNS 正在使用端口 53 和 UDP。

我的想法用完了,请帮忙~

【问题讨论】:

    标签: kubernetes dns kubernetes-networkpolicy


    【解决方案1】:

    该端口被 dns 服务覆盖为 8053。 tcpdumper 在 pod 内部运行,所以它不知道它被重新路由了。

    【讨论】:

    • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
    猜你喜欢
    • 2021-04-02
    • 1970-01-01
    • 2021-09-14
    • 2021-12-16
    • 2019-02-04
    • 2021-03-09
    • 2011-07-04
    • 2021-08-18
    • 1970-01-01
    相关资源
    最近更新 更多