Kubernetes Nginx 入口控制器就绪探测失败

Kubernetes Nginx Ingress controller Readiness Probe failed

我正在尝试设置我的第一个 Kubernetes 集群,在 nginx-ingress 控制器之前它似乎已经设置好了。 这是我的集群信息: 节点:三个 RHEL7 和一个 RHEL8 节点 Master 在 RHEL7 上是 运行 Kubernetes 服务器版本:1.19.1 使用的网络:绒布 coredns 运行 很好。 在所有节点上禁用 selinux 和防火墙

这是我在 kube-system 中的全部 pods 运行

然后我按照以下页面上的说明安装 nginx 入口控制器:https://docs.nginx.com/nginx-ingress-controller/installation/installation-with-manifests/

我决定使用 daemon-set 而不是部署,因为我的 kubernetes 集群中只有几个节点 运行。

按照说明操作后,我的 RHEL8 上的 pod 不断失败并出现以下错误:

Readiness probe failed: Get "http://10.244.3.2:8081/nginx-ready": dial tcp 10.244.3.2:8081: connect: connection refused Back-off restarting failed container

这是显示 RHEL7 pods 工作正常而 RHEL8 失败的屏幕截图:

所有节点的设置方式完全相同,没有区别。 我是 Kubernetes 的新手,对它的内部结构了解不多。有人可以指出我如何调试和解决这个问题吗?我很愿意从这样的问题中学习。

这就是我配置 RHEL7 和 RHEL8 节点的方式

  1. 已安装 docker 版本:19.03.12,构建 48a66213fe
  2. 禁用防火墙
  3. 禁用交换
  4. 已禁用 SELinux
  5. 要启用 iptables 查看桥接流量,请设置 net.bridge.bridge-nf-call-ip6tables = 1 和 net.bridge.bridge-nf-call-iptables = 1
  6. 为 Kubernetes 集群中涉及的所有节点添加了主机条目,以便它们可以在不访问 DNS 的情况下找到彼此
  7. 为 no_proxy 添加了 /etc/environment 上 Kubernetes 集群中所有节点的 IP 地址,这样它就不会命中公司代理
  8. 已验证 docker 驱动程序是“systemd”而不是“cgroupfs”
  9. 重启服务器
  10. 按照此处的 kubernetes 指南安装 kubectl、kubeadm、kubelet:https://kubernetes.io/docs/tasks/tools/install-kubectl/
  11. 启动并启用 kubelet 服务
  12. 通过执行以下命令初始化 master:
kubeadm init --pod-network-cidr=10.244.0.0/16 --service-cidr=10.96.0.0/12
  1. 为混合 OS 调度应用节点选择器补丁
wget https://raw.githubusercontent.com/Microsoft/SDN/master/Kubernetes/flannel/l2bridge/manifests/node-selector-patch.yml
kubectl patch ds/kube-proxy --patch "$(cat node-selector-patch.yml)" -n=kube-system
  1. 应用法兰绒 CNI
wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

将 kube-flannel.yml 的 net-conf.json 部分修改为类型“host-gw”

kubectl apply -f kube-flannel.yml

应用节点选择器补丁

kubectl patch ds/kube-flannel-ds-amd64 --patch "$(cat node-selector-patch.yml)" -n=kube-system

谢谢

根据kubernetes文档,支持的主机操作系统列表如下:

  • Ubuntu 16.04+
  • Debian 9+
  • CentOS 7
  • Red Hat Enterprise Linux (RHEL) 7
  • Fedora 25+
  • HypriotOS v1.0.1+
  • Flatcar Container Linux (tested with 2512.3.0)

article 提到 RHEL 8 上存在网络问题:

(2020/02/11 Update: After installation, I keep facing pod network issue which is like deployed pod is unable to reach external network or pods deployed in different workers are unable to ping each other even I can see all nodes (master, worker1 and worker2) are ready via kubectl get nodes. After checking through the Kubernetes.io official website, I observed the nfstables backend is not compatible with the current kubeadm packages. Please refer the following link in “Ensure iptables tooling does not use the nfstables backend”.

此处最简单的解决方案是在支持的操作系统上重新安装节点。