【发布时间】:2021-01-01 15:09:00
【问题描述】:
我正在尝试设置我的第一个 Kubernetes 集群,它似乎在 nginx-ingress 控制器之前设置良好。 这是我的集群信息: 节点:三个 RHEL7 和一个 RHEL8 节点 Master 在 RHEL7 上运行 Kubernetes 服务器版本:1.19.1 使用的网络:法兰绒 coredns 运行良好。 在所有节点上禁用 selinux 和防火墙
然后我按照以下页面上的说明安装 nginx 入口控制器:https://docs.nginx.com/nginx-ingress-controller/installation/installation-with-manifests/
我决定使用 daemon-set 而不是部署,因为我的 kubernetes 集群中将只有少数节点运行。
按照说明操作后,我的 RHEL8 上的 pod 不断失败并出现以下错误:
就绪探测失败:获取“http://10.244.3.2:8081/nginx-ready”:拨号 tcp 10.244.3.2:8081:连接:连接被拒绝 后退重启 失败的容器
以下屏幕截图显示 RHEL7 pod 工作正常而 RHEL8 失败:
所有节点的设置方式完全相同,没有区别。 我对 Kubernetes 很陌生,对它的内部了解不多。有人可以指点我如何调试和解决这个问题吗?我真的很愿意从这样的问题中学习。
这就是我配置 RHEL7 和 RHEL8 节点的方式
- 安装的docker版本:19.03.12,build 48a66213fe
- 已禁用防火墙
- 禁用交换
- 已禁用 SELinux
- 要启用 iptables 以查看桥接流量,请设置 net.bridge.bridge-nf-call-ip6tables = 1 和 net.bridge.bridge-nf-call-iptables = 1
- 为 Kubernetes 集群中涉及的所有节点添加了 hosts 条目,以便它们可以在不访问 DNS 的情况下找到彼此
- 在 /etc/environment 上为 no_proxy 添加了 Kubernetes 集群中所有节点的 IP 地址,这样它就不会命中公司代理
- 已验证 docker 驱动程序是“systemd”而不是“cgroupfs”
- 重启服务器
- 按照 kubernetes 指南安装 kubectl、kubeadm、kubelet:https://kubernetes.io/docs/tasks/tools/install-kubectl/
- 启动并启用 kubelet 服务
- 通过执行以下操作来初始化 master:
kubeadm init --pod-network-cidr=10.244.0.0/16 --service-cidr=10.96.0.0/12
- 为混合操作系统调度应用节点选择器补丁
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
- 应用法兰绒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
谢谢
【问题讨论】:
-
您能否检查一下 RHEL 8 节点上没有 DNS 缓存,例如dnsmasq。如果是 dnsmasq,你会看到类似:cat /etc/NetworkManager/conf.d/dns.conf [main] dns=dnsmasq
-
我在 /etc/NetworkManager/conf.d 中没有 dns.conf。 conf.d 目录为空
-
您好,RHEL 8 节点是工作节点,安装过程与其他节点完全相同。你能分享你是如何安装节点的吗?请指定您使用的集群部署工具。
-
是的,RHEL8 是一个工作节点。其中一个 RHEL7 服务器是主节点。我还添加了初始化集群并应用法兰绒 CNI 的步骤。
-
我可以修补整个命名空间吗?我也可以限制它。我知道使用
--selector在本地失败。但也许我还能做点别的?
标签: kubernetes nginx-ingress coredns