【发布时间】: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