在 CentOS(calico)上启用防火墙的 Kubernetes 集群不起作用

时间:2021-05-26 08:12:33

标签: kubernetes calico

我在启用防火墙的 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

非常感谢您对解决问题的任何帮助。

0 个答案:

没有答案