我在启用防火墙的 CentOS 7 上使用 calico 作为 CNI 启动了 Kubernetes 集群。我有主节点和工作节点。我能够启动集群并能够列出节点和 Kubernetes 系统 pod,一切正常。但是我无法执行 dns 查找。
系统配置
<块引用>Kubernetes:1.21.1
印花布:3.19.1
码头工人:20.10.5
CentOS 7.9
启用 IPVS
在 Calico 中使用基于 VXLAN 的网络
防火墙配置
我启用的端口是。
- 6443/tcp
- 2379-2381/tcp
- 10248-10260/tcp
- 30000-32767/tcp
- 8285/udp
- 8472/udp
- 7946/udp
- 7946/tcp
- 7472/tcp
- 7472/udp
- 9100/tcp
- 443/tcp
# cAdvisor Port
- 4149/tcp
# calico
- 179/tcp
- 4789/udp
- 5473/tcp
- 9099/tcp
- 9099/udp
启用的 masquerade
向受信任区域添加了接口 kube-ipvs0
、vxlan.calico
和 docker0
(虽然无法将 cali* 接口添加到受信任区域,因为我无法添加基于正则表达式的接口规则)
问题是 DNS
查找不起作用。尝试了以下步骤来识别 iptables
查找。
apiVersion: v1
kind: Pod
metadata:
name: dnsutils
namespace: default
spec:
containers:
- name: dnsutils
image: gcr.io/kubernetes-e2e-test-images/dnsutils:1.3
command:
- sleep
- "3600"
imagePullPolicy: IfNotPresent
restartPolicy: Always
firewall-cmd --set-log-denied=all
firewall-cmd --reload
nslookup
$kubectl exec -it dnsutils -- nslookup kubernetes.default
结果:
;; connection timed out; no servers could be reached
command terminated with exit code 1
dmesg | grep -i reject
结果:
[ 5556.708338] FINAL_REJECT: IN=calib3c61c3cba9 OUT= MAC=ee:ee:ee:ee:ee:ee:de:c8:d5:97:58:87:08:00 SRC=10.244.212.65 DST=10.96.0.10 LEN=90 TOS=0x00 PREC=0x00 TTL=64 ID=49835 PROTO=UDP SPT=52743 DPT=53 LEN=70
[ 5561.707815] FINAL_REJECT: IN=calib3c61c3cba9 OUT= MAC=ee:ee:ee:ee:ee:ee:de:c8:d5:97:58:87:08:00 SRC=10.244.212.65 DST=10.96.0.10 LEN=90 TOS=0x00 PREC=0x00 TTL=64 ID=52640 PROTO=UDP SPT=52743 DPT=53 LEN=70
[ 5566.708055] FINAL_REJECT: IN=calib3c61c3cba9 OUT= MAC=ee:ee:ee:ee:ee:ee:de:c8:d5:97:58:87:08:00 SRC=10.244.212.65 DST=10.96.0.10 LEN=90 TOS=0x00 PREC=0x00 TTL=64 ID=54942 PROTO=UDP SPT=52743 DPT=53 LEN=70
非常感谢您对解决问题的任何帮助。