SELinux
RKE2 与启用 SELinux 的系统兼容,这是从版本 7 开始在 CentOS/RHEL 系统上的默认配置。支持此功能的 策略 是 container-selinux 策略的一个特化,适用于 containerd。它考虑了 containerd 安装的非标准位置,并放置持久和临时状态。
|
在某些情况下,安装 rke2-selinux 软件包后,可能需要重启节点,然后才能启动 rke2 服务。如果您在 selinux 审计日志中遇到拒绝,即使安装了 rke2-selinux 和 container-selinux 软件包,请重启节点。 |
自定义上下文标签
RKE2 以静态 Pod 的形式运行控制平面服务,这需要访问多个 container_var_lib_t 位置。etcd 容器必须能够在 /var/lib/rancher/rke2/server/db 下进行读写,并且能够从 /var/lib/rancher/rke2/server/tls 中读取,连同 kube-apiserver、kube-controller-manager 和 kube-scheduler 一起。为了在不过度授权的情况下使其工作,例如 spc_t,RKE2 SELinux 策略引入了 rke2_service_db_t 和 rke2_service_t 上下文标签,分别用于读写和只读访问。这些标签将仅应用于 RKE2 控制平面静态 Pod。
配置
RKE2 对 SELinux 的支持仅涉及一个配置项,即 --selinux 布尔标志.这是对 containerd/cri toml 的 cri 部分中 enable_selinux 布尔标志 的直通。如果通过 tarball 安装 RKE2,则在没有额外配置的情况下,SELinux 将不会启用。推荐的配置方法是通过 RKE2 config.yaml 中的一个条目,例如:
# /etc/rancher/rke2/config.yaml is the default location
selinux: true
这相当于将 --selinux 标志传递给 rke2 server 或 rke2 agent 命令行,或设置 RKE2_SELINUX=true 环境变量。