将RKE集群备份至内部Minio服务器时遇x509证书未知权威错误
解决RKE集群备份到Minio的x509证书信任错误
这个错误我之前帮不少用户处理过,核心问题很明确:你的Minio服务器使用的HTTPS证书不被RKE和Docker信任——要么是自签名证书,要么是内部CA签发的证书,而RKE运行依赖的系统环境和Docker都没有把这个签发证书的CA加入信任列表,导致连接时触发证书验证失败。
下面给你几个可行的解决办法,按生产环境推荐程度排序:
1. 在所有RKE节点上安装CA证书到系统信任存储
这是最规范的生产环境做法,让整个系统都信任这个CA:
- Debian/Ubuntu 系列节点:
- 把Minio的CA根证书(如果是自签证书就是Minio的证书文件本身)复制到
/usr/local/share/ca-certificates/目录,文件名建议以.crt结尾 - 执行命令更新系统证书存储:
sudo update-ca-certificates
- 把Minio的CA根证书(如果是自签证书就是Minio的证书文件本身)复制到
- RHEL/CentOS 系列节点:
- 把CA根证书复制到
/etc/pki/ca-trust/source/anchors/目录 - 执行命令更新证书信任:
sudo update-ca-trust extract
- 把CA根证书复制到
完成后重启RKE相关服务(或者直接重新执行备份命令),验证是否正常。
2. 在RKE配置中指定自定义CA证书
如果不想修改所有节点的系统证书,可以直接在RKE的cluster.yml里配置备份选项时指定证书路径:
打开你的cluster.yml,找到backup_config部分(如果没有就新增),添加certificate字段指向你的CA证书文件路径:
backup_config: enabled: true interval_hours: 12 # 按需调整备份间隔 retention: 6 # 按需调整保留份数 s3_backup_config: access_key: "你的Minio访问密钥" secret_key: "你的Minio密钥" bucket_name: "rke" endpoint: "https://redacted" # 你的Minio地址 region: "us-east-1" # Minio对region无强制要求,随便填一个即可 certificate: "/path/to/your/minio-ca.crt" # 这里填CA证书的绝对路径
修改完成后,重新执行RKE备份命令:
rke etcd snapshot-save --config cluster.yml --name snapshot-name
3. 临时禁用证书验证(仅测试环境使用)
如果是测试环境,不想折腾证书,可以临时跳过证书验证,但绝对不推荐在生产环境使用:
在cluster.yml的s3_backup_config里添加insecure_skip_verify: true:
s3_backup_config: # 其他配置... insecure_skip_verify: true
额外注意:确保Docker也信任该证书
有些情况下,Docker的证书信任存储和系统是分开的,所以即使系统信任了证书,Docker可能还是会报错。这时需要:
- 在每个RKE节点上创建目录
/etc/docker/certs.d/redacted/(把redacted换成你的Minio域名或IP) - 把CA证书复制到这个目录,命名为
ca.crt - 重启Docker服务:
sudo systemctl restart docker
内容的提问来源于stack exchange,提问作者Will Jones
相关产品推荐
相关产品推荐

