访问 Kubernetes 服务非 HA 或 HA 集群

访问 Kubernetes 服务非 HA 或 HA 集群

我之前的设置是 Kubernetes 上的一个控制节点(非 HA)和几个工作节点。我正在构建一个包含三个控制节点(HA)和 9 个工作节点的新集群。通过安全的 websocket(wss)从浏览器进行连接。

非 HA 设置可以毫无问题地使用外部地址 wss://api.xxxx.com。现在,当设置 HA 集群时,我无法再连接到地址 wss://api.xxxx.com,只能向浏览器发送消息NS_ERROR_GENERATE_FAILURE(NS_ERROR_MODULE_SECURITY,SSL_ERROR_RX_RECORD_TOO_LONG)。Kubernetes 集群证书适用于域 api.xxxx.com。

答案1

该错误消息表明您的 Kubernetes 集群使用的安全证书和服务端存在问题。以下是一些可能的原因和解决方案:

  1. 检查防火墙规则、防病毒软件、负载平衡器和网络策略是否到位。

  2. 确保证书有效、由受信任的证书颁发机构 (CA) 签名,并包含正确的域名 (api.xxxx.com)。

  3. 检查 DNS 配置以确认主机名api.xxxx.com解析为 HA 集群的正确 IP 地址。确保 DNS 记录正确

  4. 确保端口 443 用于您网站上的安全连接,并正确配置并打开您的服务器。

  5. 确认没有多个 SSL 证书使用相同的 IP 地址。请确保每个 SSL 证书都有不同的 IP 地址。检查 SSL 证书是否有效(检查证书的到期日期并在必要时进行续订)。另请参阅此 open github问题

  6. 在极少数情况下,可以通过清理或避免缓存来解决此问题。尝试使用不同的浏览器使用隐身或私人窗口查看网站而不使用 cookie 或缓存是测试此问题的最简单方法。

  7. 考虑升级 TLS 版本支持和浏览器版本也有助于修复此错误

参考此博客通过 Kinsta 了解更多信息

编辑:1

  1. 检查集群中的所有主机是否都可以访问相同的共享存储。无论发生什么故障,一台主机上的虚拟机 (VM) 都可以故障转移到另一台主机,而无需停机。

  2. 将非 HA 控制平面“升级”到 HA 控制平面的最佳方法是构建新的 HA 控制平面并迁移所有工作负载。

  3. 要解决您的问题,您可能需要更新证书,以便 SAN 列表包含用于访问 API 服务器更新控制平面组件的任何和所有 IP 地址或主机名。

根据此博客通过 Scott 的博客,您可能还需要更新控制平面组件。

“就像您更新 Kubelet 使用的 Kubeconfig 文件(通过修改正在修改的集群的服务器:行以指向负载均衡器)一样,您还需要更新控制器管理器和调度程序用于连接 API 服务器的 Kubeconfig 文件。

需要修改的文件有:

/etc/kubernetes/controller-manager.conf
/etc/kubernetes/scheduler.conf

这些文件是标准的 Kubeconfig 文件。唯一需要更改的行是 server: 行,该行指定 API 端点(当前可能指向单个控制平面节点的 IP 地址或主机名)。编辑每个文件以指向负载均衡器的 IP 地址或 DNS 名称(并且 API 服务器证书上存在 SAN)。为了让这些组件生效,您需要重新启动它们。”

另请参阅文档Micro 重点介绍常见的高可用性配置错误

答案2

我找到了解决方案,或者说实际上是我的配置错误。haproxy/ingress 证书 yaml 文件中的名称拼写错误。所以与 kubernetes 无关。我可以接受 Sai 的回答,我是如何找到它的

相关内容