非root用户管理k8s和docker容器详解

 更新时间:2025年09月24日 09:25:06   作者:CN-FuWei  
文章介绍了如何通过创建非root用户(如ops用户)并配置kubectl权限,结合RBAC限制访问范围,实现安全管理K8s集群;同时通过将用户加入docker组,无需root权限即可操作Docker容器

一、非root用户管理k8s集群

1.1 创建一个普通用户

useradd ops

1.2 修改集群配置

OPS机器关联kubectl进行如下操作:

root用户执行:

mkdir -p /home/ops/.kube/
cp ~/.kube/config  /home/ops/.kube/
chown deployer:deployer /home/ops/.kube
chown deployer:deployer /home/ops/.kube/config

ops用户执行:

echo  "export KUBECONFIG=/home/ops/.kube/config" >> ~/.bash_profile
echo "source <(kubectl completion bash)" >> /home/ops/.bashrc
source  ~/.bash_profile

1.3 验证

[root@k8s-master1 ~]# su ops
[ops@k8s-master1 root]$ kubectl get node
NAME          STATUS   ROLES                  AGE   VERSION
k8s-master1   Ready    control-plane,master   42d   v1.22.0
k8s-master2   Ready    control-plane,master   42d   v1.22.0
k8s-master3   Ready    control-plane,master   42d   v1.22.0
k8s-node1     Ready    <none>                 42d   v1.22.0
k8s-node2     Ready    <none>                 42d   v1.22.0
k8s-node3     Ready    <none>                 42d   v1.22.0
[ops@k8s-master1 root]$ kubectl get ns
NAME              STATUS   AGE
default           Active   42d
kube-node-lease   Active   42d
kube-public       Active   42d
kube-system       Active   42d
monitoring        Active   42d

此时已经可以使用ops用户来管理k8s集群(若需要针对ops用户指定ns以及资源对象拥有特定权限,可以使用RBAC来限制)

二、非root用户管理docker

由于docker软件安装好之后,自动会创建好docker用户组,所以这里只需要创建好管理docer容器的用户就好。

[root@k8s-master1 ~]# cat /etc/group
....................
docker:x:995:

首先来看一下正常的普通用户管理docker是什么样的

切换dev用户执行docker命令,报错如下:

[root@k8s-master1 ~]# su dev
[dev@k8s-master1 root]$ docker ps
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/containers/json": dial unix /var/run/docker.sock: connect: permission denied
[dev@k8s-master1 root]$ docker images
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/images/json": dial unix /var/run/docker.sock: connect: permission denied

现在我们把ops用户加入docker用户组中

usermod -g docker ops

接下来切换ops用户来查看一下效果:

[root@k8s-master1 ~]# su ops
[ops@k8s-master1 root]$ docker version
Client: Docker Engine - Community
 Version:           20.10.12
 API version:       1.39
 Go version:        go1.16.12
 Git commit:        e91ed57
 Built:             Mon Dec 13 11:45:41 2021
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true

Server: Docker Engine - Community
 Engine:
  Version:          18.09.9
  API version:      1.39 (minimum version 1.12)
  Go version:       go1.11.13
  Git commit:       039a7df
  Built:            Wed Sep  4 16:22:32 2019
  OS/Arch:          linux/amd64
  Experimental:     false
[ops@k8s-master1 root]$ docker images
REPOSITORY                                                        TAG       IMAGE ID       CREATED         SIZE
rancher/mirrored-flannelcni-flannel                               v0.17.0   9247abf08677   3 months ago    59.8MB
rancher/mirrored-flannelcni-flannel                               v0.16.3   8cb5de74f107   4 months ago    59.7MB
rancher/mirrored-flannelcni-flannel-cni-plugin                    v1.0.1    ac40ce625740   4 months ago    8.1MB
quay.io/prometheus/node-exporter                                  v1.3.1    1dbe0e931976   5 months ago    20.9MB
registry.aliyuncs.com/google_containers/kube-apiserver            v1.22.0   838d692cbe28   10 months ago   128MB
registry.aliyuncs.com/google_containers/kube-controller-manager   v1.22.0   5344f96781f4   10 months ago   122MB
registry.aliyuncs.com/google_containers/kube-scheduler            v1.22.0   3db3d153007f   10 months ago   52.7MB
registry.aliyuncs.com/google_containers/kube-proxy                v1.22.0   bbad1636b30d   10 months ago   104MB
registry.aliyuncs.com/google_containers/etcd                      3.5.0-0   004811815584   11 months ago   295MB
registry.aliyuncs.com/google_containers/coredns                   v1.8.4    8d147537fb7d   12 months ago   47.6MB
registry.aliyuncs.com/google_containers/pause                     3.5       ed210e3e4a5b   14 months ago   683kB
[ops@k8s-master1 root]$ 

至此就完成了非root用户管理docker容器了

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • K8S安装及配置教程

    K8S安装及配置教程

    这篇文章主要介绍了K8S安装及配置教程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2025-03-03
  • k8s pod始终处于pending状态的解决方案

    k8s pod始终处于pending状态的解决方案

    新K8s部署后服务重启导致dashboard无法访问,所有Pod处于Pending状态,原因分析显示,因节点污点引发调度失败,删除污点后问题解决,总结Pending原因分为三类:调度问题(污点、资源不足)、镜像问题(拉取失败)、依赖性问题(卷/Secret/ConfigMap缺失)
    2025-08-08
  • kubernetes之statefulset搭建MySQL集群

    kubernetes之statefulset搭建MySQL集群

    这篇文章主要为大家介绍了kubernetes之statefulset搭建MySQL集群示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-04-04
  • 如何在 K8S 中使用 Values 文件定制不同环境下的应用配置

    如何在 K8S 中使用 Values 文件定制不同环境下的应用配置

    Kubernetes是一个开源的容器编排平台,它可以自动化容器的部署、扩展和管理,在 K8s 中,应用程序通常以容器的形式运行,这些容器被组织在不同的资源对象中,这篇文章主要介绍了如何在 K8S 中使用 Values 文件定制不同环境下的应用配置,需要的朋友可以参考下
    2025-03-03
  • RFO SIG之openEuler AWS AMI 制作详解

    RFO SIG之openEuler AWS AMI 制作详解

    这篇文章主要为大家介绍了RFO SIG之openEuler AWS AMI 制作详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-10-10
  • 关于k8s中subpath的使用详解

    关于k8s中subpath的使用详解

    这篇文章主要介绍了k8s中subpath的使用,文章介绍分为两种情况给大家详细讲解,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-02-02
  • MinIO分布式文件存储(从入门到飞翔)

    MinIO分布式文件存储(从入门到飞翔)

    MinIO是一款高性能的分布式对象存储系统,兼容Amazon S3协议,具有轻量级、易部署、高可用和可扩展性等优势,它通过纠删码技术实现数据冗余与高容错性,适用于私有云存储、大数据分析和静态资源托管等场景,本文介绍MinIO分布式文件存储的相关知识,感兴趣的朋友一起看看吧
    2025-03-03
  • K8s如何拉取habor镜像

    K8s如何拉取habor镜像

    这篇文章主要介绍了K8s如何拉取habor镜像,在daemon.json中添加仓库地址,需要在创建资源对象所在的节点进行添加,本文给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧
    2024-04-04
  • k8s中的多网卡方案multus

    k8s中的多网卡方案multus

    这篇文章主要介绍了k8s中的多网卡方案multus,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-07-07
  • k8s部署ingress-nginx的详细步骤大全

    k8s部署ingress-nginx的详细步骤大全

    nginx一般是作为服务的入口,其在kubernetes的部署方式也大致相似,这篇文章主要给大家介绍了关于k8s部署ingress-nginx的相关资料,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2024-01-01

最新评论