在 CentOScalico上启用防火墙的 Kubernetes 集群不起作用

问题描述

我在启用防火墙的 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-ipvs0vxlan.calicodocker0(虽然无法将 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 (将#修改为@)