1. RKE2 集群与 CIS 安全基准概述RKE2也称为 RKE Government是 Rancher 实验室开发的下一代 Kubernetes 发行版专为安全敏感环境设计。与传统 RKE 相比RKE2 采用 containerd 替代 Docker并默认启用 CISCenter for Internet Security安全基准配置。CIS 基准是业界公认的 Kubernetes 安全配置标准包含 100 多项针对控制平面、工作节点和 etcd 的安全加固建议。在实际生产环境中我们经常需要根据具体需求创建符合 CIS 标准的自定义集群。这种需求主要来自三类场景金融、政务等强监管行业必须满足等保/PCI DSS 等合规要求需要与现有安全工具链如 SIEM、漏洞扫描系统集成多租户环境下实现严格的工作负载隔离提示CIS 基准分为两个级别 - Level 1基础安全和 Level 2严格安全。生产环境通常建议至少达到 Level 1金融系统建议 Level 2。2. 集群创建前的关键准备2.1 硬件与操作系统要求RKE2 对底层系统有明确要求所有节点必须使用 64 位 Linux 发行版推荐 Ubuntu 20.04 或 RHEL/CentOS 8控制平面节点最低配置4核 CPU/8GB 内存/40GB 磁盘工作节点最低配置2核 CPU/4GB 内存/20GB 磁盘必须禁用交换分区swapoff -a 并注释 /etc/fstab 中的 swap 行# 验证系统参数示例 grep -E vm.max_map_count|user.max_user_namespaces /etc/sysctl.conf vm.max_map_count262144 user.max_user_namespaces100002.2 网络与防火墙配置CIS 基准对网络有严格要求控制平面节点需要开放 6443Kubernetes API、2379-2380etcd、10250kubelet等端口工作节点需要开放 10250 和 30000-32767NodePort 范围必须启用网络策略插件如 Calico、Cilium# 防火墙规则示例使用 firewalld firewall-cmd --permanent --add-port6443/tcp firewall-cmd --permanent --add-port2379-2380/tcp firewall-cmd --reload3. 自定义集群创建实操3.1 安装 RKE2 基础组件在所有节点执行以下步骤# 下载安装脚本 curl -sfL https://get.rke2.io | sudo sh - # 启用并启动服务控制平面节点 sudo systemctl enable rke2-server.service sudo systemctl start rke2-server.service # 工作节点需要指定 server URL INSTALL_RKE2_TYPEagent RKE2_URLhttps://control-plane-ip:6443 RKE2_TOKEN来自/var/lib/rancher/rke2/server/node-token sudo systemctl enable rke2-agent.service sudo systemctl start rke2-agent.service3.2 应用 CIS 配置文件RKE2 内置了 CIS 1.6 基准的配置文件模板位于/var/lib/rancher/rke2/server/manifests/rke2-cis-config.yaml。自定义配置需创建/etc/rancher/rke2/config.yamlprofile: cis-1.6 selinux: true secrets-encryption: true kube-apiserver-arg: - audit-log-path/var/lib/rancher/rke2/server/logs/audit.log - audit-policy-file/etc/rancher/rke2/audit-policy.yaml关键参数说明profile: cis-1.5 或 cis-1.6对应不同 Kubernetes 版本secrets-encryption: 启用 etcd 数据加密audit-log-path: 审计日志路径需确保目录存在且可写3.3 自定义组件配置通过覆盖默认配置实现定制化# /etc/rancher/rke2/config.yaml 追加内容 disable-kube-proxy: false disable-network-policy: false cni: calico etcd-expose-metrics: false # CIS 要求禁用 etcd 指标公开 kube-controller-manager-arg: - terminated-pod-gc-threshold50 kubelet-arg: - max-pods2504. 安全加固与合规验证4.1 关键安全配置检查安装完成后必须验证以下项目检查加密状态kubectl get secrets -A -o json | jq .items[].metadata.annotations[kubernetes.io/encrypted-provider]验证审计日志sudo tail -f /var/lib/rancher/rke2/server/logs/audit.log检查网络策略kubectl get networkpolicy -A4.2 使用 kube-bench 进行合规扫描# 在控制平面节点运行 curl -L https://github.com/aquasecurity/kube-bench/releases/download/v0.6.8/kube-bench_0.6.8_linux_amd64.tar.gz | tar -xz ./kube-bench --benchmark cis-1.6 --json | tee audit.json # 解析结果示例 { tests: [ { desc: 1.1.1 Ensure that the API server pod specification file permissions are set to 644 or more restrictive, status: PASS }, { desc: 1.2.6 Ensure that the --profiling argument is set to false, status: FAIL, remediation: Edit the API server pod specification file..., } ] }5. 运维注意事项与故障排查5.1 常见问题处理问题1节点无法加入集群检查 token 是否正确sudo cat /var/lib/rancher/rke2/server/node-token验证网络连通性telnet control-plane-ip 6443查看 agent 日志journalctl -u rke2-agent -f问题2Pod 网络异常检查 CNI 插件状态kubectl get pods -n kube-system -l k8s-appcanal验证 IP 分配kubectl get pods -o wide5.2 升级与维护建议升级前务必备份关键数据sudo cp -R /etc/rancher/rke2 /backup/rke2-config sudo cp -R /var/lib/rancher/rke2/server /backup/rke2-data使用官方支持的升级路径sudo rke2 rpm-remove curl -sfL https://get.rke2.io | INSTALL_RKE2_VERSIONv1.24.8rke2r1 sudo sh -6. 高级定制与扩展6.1 自定义 CIS 规则通过修改/var/lib/rancher/rke2/server/manifests/rke2-cis-config.yaml实现apiVersion: apiserver.config.k8s.io/v1 kind: AdmissionConfiguration plugins: - name: PodSecurity configuration: apiVersion: pod-security.admission.config.k8s.io/v1beta1 kind: PodSecurityConfiguration defaults: enforce: restricted enforce-version: latest exemptions: usernames: [system:serviceaccount:kube-system:rke2]6.2 集成企业安全工具与 HashiCorp Vault 集成示例# config.yaml 追加内容 secrets-encryption: true kube-apiserver-arg: - encryption-provider-config/etc/rancher/rke2/vault-encryption.yaml创建加密配置文件# /etc/rancher/rke2/vault-encryption.yaml apiVersion: apiserver.config.k8s.io/v1 kind: EncryptionConfiguration resources: - resources: - secrets providers: - vault: endpoint: https://vault.example.com:8200 path: transit/keys/rke2 auth: token: s.xxxxxxxxxxxxxx