You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

K3s高可用集群Secrets加密配置及节点添加问题咨询

解决K3s嵌入式存储高可用集群Secrets加密问题及节点添加方法

一、正确搭建启用Secrets加密的K3s高可用集群

场景1:全新搭建集群

  1. 初始化第一个server节点,同时启用加密并初始化高可用集群:

    curl -sfL https://get.k3s.io | sh -s - server --cluster-init --secrets-encryption
    

    执行后节点会生成加密密钥文件 /var/lib/rancher/k3s/server/secrets/encryption-state.json。

  2. 获取集群加入token:

    cat /var/lib/rancher/k3s/server/node-token
    
  3. 将第一个节点的 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
    
  4. 加入另外两个server节点,必须携带 --secrets-encryption 参数:

    curl -sfL https://get.k3s.io | sh -s - server --server https://<第一个节点IP>:6443 --token <获取到的token> --secrets-encryption
    

场景2:现有已运行的3节点集群启用加密

  1. 停止所有server节点的K3s服务:

    systemctl stop k3s
    
  2. 在任意一个节点执行加密启用命令,生成密钥文件:

    k3s secrets-encrypt enable
    
  3. 将生成的 encryption-state.json 复制到另外两个server节点的 /var/lib/rancher/k3s/server/secrets/ 目录,设置权限(同场景1步骤3)。

  4. 修改所有server节点的K3s配置,添加加密参数:

    • 方式1:编辑systemd服务配置
      systemctl edit k3s
      
      在编辑器中添加以下内容(替换原有ExecStart行):
      [Service]
      ExecStart=
      ExecStart=/usr/local/bin/k3s server --secrets-encryption <原有的其他启动参数>
      
      保存后重新加载配置:
      systemctl daemon-reload
      
    • 方式2:编辑配置文件
      echo "secrets-encryption: true" >> /etc/rancher/k3s/config.yaml
      
  5. 依次启动所有server节点的K3s服务:

    systemctl start k3s
    
  6. 验证加密状态:

    k3s secrets-encrypt status
    

    所有节点应显示 Enabled 状态。

二、启用Secrets加密后添加新节点

添加新的Server节点

  1. 从现有集群任意server节点复制 encryption-state.json 到新节点的 /var/lib/rancher/k3s/server/secrets/ 目录,设置权限(同前文步骤)。

  2. 获取集群token(同前文步骤)。

  3. 执行加入命令,必须携带 --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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 01:55:14