RHEL9 Minimal Build 上的 kubernetes 1.27 集群连接问题?

问题描述 投票:0回答:1

我正在使用 Helm Chart 在 4 个 RHEL9 Minimal Build VM(一个控制器,三个工作线程)上部署我的 kubernetes 1.27 集群。集群似乎已部署,但所有 Pod 均因连接问题而陷入崩溃循环。 Redis 无法初始化。该集群在 RHEL8 和 RHEL7 虚拟机上运行良好。 Redis 6.2.12 错误:

Initializing config..
/readonly-config/init.sh: line 84: Could not resolve the announce ip for this pod: not found

Error from server (BadRequest): container "sentinel" in pod "xio-redis-ha-server-0" is waiting to start: PodInitializing

*** FATAL CONFIG FILE ERROR (Redis 6.2.12) ***
Reading the configuration file, at line 2
>>> 'sentinel down-after-milliseconds mymaster 10000'
No such master with specified name.

来自其他 Pod 的一般连接错误:

Caused by: java.util.concurrent.CompletionException: io.netty.channel.AbstractChannel$AnnotatedNoRouteToHostException: No route to host: name-redis-ha.default.svc.cluster.local/10.42.0.22:6379
Caused by: io.netty.channel.AbstractChannel$AnnotatedConnectException: Connection refused: name-redis-ha.default.svc.cluster.local/10.42.2.27:6379
Caused by: java.net.ConnectException: Connection refused
Caused by: org.redisson.client.RedisConnectionException: Unable to connect to Redis server: name-redis-ha.default.svc.cluster.local/10.42.2.27:6379

我尝试过打开所有端口、重新启动服务器、重新启动 docker 服务以及我在各种博客和帖子中找到的 20 个其他内容。 pod 内的冰壶服务间歇性地工作。重新启动 firewalld 允许从 Pod 内进行卷曲,但 Pod 仍然无法相互连接。我尝试将 iptablesBackend 更改为firewalld.conf 中的各种不同选项,以防这是各种防火墙接口相互冲突的问题。集群 Canal Pod 表示它们已设置为自动检测防火墙后端。

kubernetes redis connectexception crashloopbackoff rhel9
1个回答
0
投票

我为此苦苦挣扎了好几天,所以我最终列出了我必须在 RHEL 9 中更改的所有设置的列表,以便能够使用 Redis 成功运行 kubernetes 集群。这是清单!我在本地 VMware 环境中运行此程序:

防火墙

firewalld 已知与集群冲突(已知问题 REF1)。如果 Pod 在安装后崩溃,请在所有节点上重新启动 Firewalld 和 docker,然后删除崩溃的 Pod 可能会解决问题:

    sudo service firewalld status
    sudo service firewalld restart
    sudo service docker restart

如果问题仍然存在,可能需要停止所有节点上的firewalld并重新启动docker服务:

    sudo service firewalld stop
    sudo service docker restart

如果实施了本故障排除指南中的其他步骤,则之后需要重复这些防火墙步骤。

SELINUX

如果启用了 selinux,可能会导致连接问题和 pod 崩溃。可能需要禁用 selinux,或将其设置为宽松。一定要覆盖SELINUX原来的值:

    sudo vi /etc/selinux/config
SELINUX=permissive
    sudo reboot

安全启动

VMware SecureBoot 功能可能会干扰集群的运行:

  • 停止每个虚拟机:操作 > 电源 > 关闭电源。
  • 禁用安全启动:摘要选项卡 > VM 硬件 > 编辑 > VM 选项 > 启动选项 > 取消选择安全启动 > 确定。
  • 重新启动每个虚拟机:操作 > 电源 > 开机。

网络管理员

Network Manager 已知与 RKE 集群冲突(已知问题 REF1),并可能导致连接问题和 pod 崩溃。可能需要在每个节点上创建包含以下内容的 /etc/NetworkManager/conf.d/canal.conf 文件,然后重新加载 NetworkManager 并重新启动每个节点:

    sudo systemctl status NetworkManager
    sudo vi /etc/NetworkManager/conf.d/canal.conf
[keyfile]
unmanaged-devices=interface-name:cali*;interface-name:flannel*
    sudo systemctl reload NetworkManager
    sudo reboot

SYSCTL RP_FILTER

可能需要在每个节点上创建包含以下内容的 /etc/sysctl.d/90-override.conf 文件,然后重新启动每个节点(这会覆盖 /etc/sysctl.d/99 中的破坏性 STIG 设置) -sysctl.conf 文件,由 CCE-84008-2 规定):

    sudo vi /etc/sysctl.d/90-override.conf
net.ipv4.conf.all.rp_filter = 0
net.ipv4.conf.default.rp_filter = 0
net.ipv4.conf.eth0.rp_filter = 0
net.ipv4.conf.lo.rp_filter = 0
    sudo reboot

NM-云服务和定时器

在每个节点上:

sudo systemctl disable --now nm-cloud-setup.service nm-cloud-setup.timer

参考文献:

  1. https://docs.rke2.io/known_issues
© www.soinside.com 2019 - 2024. All rights reserved.