K3s高可用集群Secrets加密配置及节点添加问题咨询
解决K3s嵌入式存储高可用集群Secrets加密问题及节点添加方法
一、正确搭建启用Secrets加密的K3s高可用集群
场景1:全新搭建集群
初始化第一个server节点,同时启用加密并初始化高可用集群:
curl -sfL https://get.k3s.io | sh -s - server --cluster-init --secrets-encryption执行后节点会生成加密密钥文件
/var/lib/rancher/k3s/server/secrets/encryption-state.json。获取集群加入token:
cat /var/lib/rancher/k3s/server/node-token将第一个节点的
encryption-state.json文件复制到另外两个server节点的相同路径,设置权限:# 新节点先创建目标目录(若不存在) mkdir -p /var/lib/rancher/k3s/server/secrets/ # 从第一个节点传输文件(示例用scp,也可通过其他方式) scp root@<第一个节点IP>:/var/lib/rancher/k3s/server/secrets/encryption-state.json /var/lib/rancher/k3s/server/secrets/ # 设置权限确保安全 chmod 600 /var/lib/rancher/k3s/server/secrets/encryption-state.json chown root:root /var/lib/rancher/k3s/server/secrets/encryption-state.json加入另外两个server节点,必须携带
--secrets-encryption参数:curl -sfL https://get.k3s.io | sh -s - server --server https://<第一个节点IP>:6443 --token <获取到的token> --secrets-encryption
场景2:现有已运行的3节点集群启用加密
停止所有server节点的K3s服务:
systemctl stop k3s在任意一个节点执行加密启用命令,生成密钥文件:
k3s secrets-encrypt enable将生成的
encryption-state.json复制到另外两个server节点的/var/lib/rancher/k3s/server/secrets/目录,设置权限(同场景1步骤3)。修改所有server节点的K3s配置,添加加密参数:
- 方式1:编辑systemd服务配置
在编辑器中添加以下内容(替换原有ExecStart行):systemctl edit k3s
保存后重新加载配置:[Service] ExecStart= ExecStart=/usr/local/bin/k3s server --secrets-encryption <原有的其他启动参数>systemctl daemon-reload - 方式2:编辑配置文件
echo "secrets-encryption: true" >> /etc/rancher/k3s/config.yaml
- 方式1:编辑systemd服务配置
依次启动所有server节点的K3s服务:
systemctl start k3s验证加密状态:
k3s secrets-encrypt status所有节点应显示
Enabled状态。
二、启用Secrets加密后添加新节点
添加新的Server节点
从现有集群任意server节点复制
encryption-state.json到新节点的/var/lib/rancher/k3s/server/secrets/目录,设置权限(同前文步骤)。获取集群token(同前文步骤)。
执行加入命令,必须携带
--secrets-encryption参数:curl -sfL https://get.k3s.io | sh -s - server --server https://<现有集群server节点IP>:6443 --token <获取到的token> --secrets-encryption
添加新的Agent节点
Agent节点无需处理加密密钥,直接执行常规加入命令即可:
curl -sfL https://get.k3s.io | sh -s - agent --server https://<现有集群server节点IP>:6443 --token <获取到的token>
关键注意事项
- 所有server节点必须共享同一套
encryption-state.json密钥文件,否则会因解密失败导致节点无法启动(这是你之前遇到问题的核心原因)。 - 启用加密后,集群中已存在的Secrets会被自动重新加密,无需手动干预。
- 若需旋转加密密钥,执行
k3s secrets-encrypt rotate,之后同步新生成的密钥文件到所有server节点并重启服务即可。
内容的提问来源于stack exchange,提问作者SebastianWi
相关产品推荐
相关产品推荐

