1. 问题现象与背景分析
最近在Harvester上部署RKE2集群时遇到一个棘手问题:当Rancher使用私有CA(Certificate Authority)时,集群配置会莫名其妙地失败。具体表现为RKE2节点无法正确注册到Rancher管理平面,日志中频繁出现x509证书验证错误。这个问题在社区中已经有不少人遇到,但解决方案都比较零散。
为什么私有CA会导致这个问题?本质上是因为RKE2组件与Rancher的TLS通信链路中,私有CA签发的证书没有被系统信任。Harvester作为底层基础设施,其证书链验证机制与常规Kubernetes部署有所不同。当Rancher使用自签名或私有CA时,Harvester上的RKE2节点默认不包含这些CA证书,导致TLS握手失败。
提示:这个问题在vSphere/ESXi环境中也会出现,特别是使用自建PKI体系的企业环境。虽然标题提到的是Harvester,但解决方案同样适用于ESXi管理集群的场景。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 私有CA在Rancher架构中的传播路径
要彻底解决这个问题,需要先理解Rancher架构中证书的传递逻辑。当Rancher使用私有CA时,这个CA需要被以下组件信任:
- Rancher Server自身:通过安装时配置的tls-ca-cert参数加载
- 下游集群的kube-apiserver:用于验证与Rancher的通信
- RKE2节点的系统信任库:包括containerd、kubelet等组件
- Harvester主机:特别是当使用Harvester CSI驱动时
在标准RKE2部署中,通常只需要处理前三个环节。但在Harvester环境中,由于它使用了定制化的内核和容器运行时,证书传播路径更加复杂。这就是为什么同样的配置在普通节点能工作,在Harvester上却失败。
3. 关键配置步骤详解
3.1 准备私有CA证书链
首先需要将私有CA的证书链准备为PEM格式。假设你的CA证书为my-ca.pem,执行以下操作:
bash复制# 将CA证书复制到所有节点的可信证书目录
sudo cp my-ca.pem /usr/local/share/ca-certificates/
sudo update-ca-ce
