在 Kubernetes 中,为了提高安全性,可以配置 Kubernetes 节点组件(如 kubelet、kube-proxy)以非 root 用户身份运行。这有助于减小潜在攻击面,因为如果一个组件受到攻击,攻击者将受限于以该非 root 用户的权限执行操作。

以下是一些步骤,演示如何以非 root 用户身份运行 Kubernetes 节点组件:

以非 root 用户身份运行 kubelet:

1. 创建 kubelet 用户:
   - 在每个节点上创建一个非 root 用户,例如 kubelet-user。
     sudo useradd -M -s /sbin/nologin kubelet-user

2. 配置 kubelet 启动参数:
   - 修改 kubelet 的 systemd 单元文件,以在非 root 用户下运行。
     sudo vi /etc/systemd/system/kubelet.service

     修改 ExecStart 行,添加 --kubelet-cgroups=/kubelet-cgroup-path 参数以便 kubelet 不会使用 cgroupfs,然后添加 --read-only-port=0 避免使用低端口需要 root 权限。
     ExecStart=/usr/bin/kubelet --kubelet-cgroups=/kubelet-cgroup-path --read-only-port=0

3. 重启 kubelet 服务:
   - 重新加载 systemd 并重启 kubelet。
     sudo systemctl daemon-reload
     sudo systemctl restart kubelet

以非 root 用户身份运行 kube-proxy:

1. 创建 kube-proxy 用户:
   - 在每个节点上创建一个非 root 用户,例如 kube-proxy-user。
     sudo useradd -M -s /sbin/nologin kube-proxy-user

2. 配置 kube-proxy 启动参数:
   - 修改 kube-proxy 的 systemd 单元文件,以在非 root 用户下运行。
     sudo vi /etc/systemd/system/kube-proxy.service

     修改 ExecStart 行,添加 --bind-address=0.0.0.0 以便 kube-proxy 可以监听非 127.0.0.1 地址。
     ExecStart=/usr/bin/kube-proxy --bind-address=0.0.0.0

3. 重启 kube-proxy 服务:
   - 重新加载 systemd 并重启 kube-proxy。
     sudo systemctl daemon-reload
     sudo systemctl restart kube-proxy

请注意,以非 root 用户身份运行节点组件的具体步骤可能会因 Kubernetes 版本和所使用的操作系统而有所不同。请查阅你所使用 Kubernetes 版本的文档以获取准确的配置信息。此外,确保以安全和最佳实践的方式进行配置,以适应你的环境需求。


转载请注明出处:http://www.zyzy.cn/article/detail/9843/Kubernetes