问题描述
我在启用防火墙的 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
查找。
- 已安装 DNS 调试器 pod
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
- 在调度了 pod 的工作节点上启用防火墙调试
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
非常感谢您对解决问题的任何帮助。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)