非root用户管理k8s和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容器了

### Kubernetes Docker Compose 的使用场景功能对比 Kubernetes Docker Compose 是两种广泛使用的容器编排工具,但它们的设计目标适用场景存在显著差异。以下是两者的详细对比: #### 1. 功能范围 Docker Compose 主要用于单节点环境中的服务编排,适合开发测试阶段的小型项目。它通过 `docker-compose.yml` 文件定义多个容器之间的依赖关系、网络配置以及存储卷设置[^4]。例如: ```yaml version: '3' services: web: image: nginx ports: - "80:80" db: image: mysql environment: MYSQL_ROOT_PASSWORD: example ``` 上述代码展示了如何使用 Docker Compose 配置一个简单的 Web 应用程序数据库服务。 相比之下,Kubernetes 是一个多节点集群管理平台,支持大规模分布式系统的部署管理。它提供了更高级的功能,如自动扩展、负载均衡、健康检查服务发现等[^4]。Kubernetes 的配置文件通常更为复杂,需要定义 Pod、Deployment、Service 等资源对象。例如: ```yaml apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment spec: replicas: 3 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.14.2 ports: - containerPort: 80 ``` #### 2. 使用场景 Docker Compose 更适合以下场景: - 开发环境中的快速原型设计。 - 小型项目或单机运行的应用程序。 - 不需要复杂的高可用性扩展性的简单服务组合[^4]。 Kubernetes 则适用于以下场景: - 大规模生产环境下的分布式系统。 - 需要跨多台物理机或虚拟机的高可用性部署。 - 自动化扩展故障恢复的需求[^4]。 #### 3. 易用性与学习曲线 Docker Compose 的学习曲线较低,配置文件简单直观,易于上手。而 Kubernetes 的功能更为强大,但也因此增加了复杂性,用户需要掌握更多的概念术语,如 Pod、Node、Cluster 等[^5]。 #### 4. 集成能力 虽然 Docker Compose Kubernetes 的功能定位不同,但它们可以协同工作。例如,可以通过工具将 Docker Compose 文件转换为 Kubernetes 资源定义文件,从而在 Kubernetes 集群中运行原本由 Docker Compose 定义的服务。 ### 示例:从 Docker Compose 到 Kubernetes 假设有一个基于 Docker Compose 的应用,包含 Web 数据库服务。可以使用工具(如 Kompose)将其转换为 Kubernetes 配置文件: ```bash kompose convert -f docker-compose.yml ``` 这将生成一系列 Kubernetes YAML 文件,包括 Deployment Service 定义。 --- ####
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CN-FuWei

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值