前言
这段时间在学习k8s集群,老大给了我个任务,实现用户的隔离,经过在网上很长一段时间的查找与学习,费了好大心思才搞定这个需求,总结发现,目前网上关于k8s用户隔离的操作实在是比较粗糙,所以只能自己写一篇博客来弥补了(顺便熟悉熟悉markdown的写法…)
需知
- 由于内容较多,本文不会讲解k8s集群的搭建步骤,默认你已经有一套可以正常运行的k8s集群系统了哈,本文在实际操作中采用的是凝思容器系统。
- 以下所有的操作均在集群的master1节点上运行
- 为了方便大家的操作,本文通过设置环境变量的方法从而减少了对操作命令的修改
- 命令的前#表示root用户执行,$表示普通用户执行
- 建议用下面的命令设置kubectl命令自动补全
# source <(kubectl completion bash)
好了,现在我们就正式开始用户隔离的具体操作啦!
创建普通用户
- 本步骤用于在root用户下添加普通权限的目标用户和用户组,如果已经有目标用户则可以不用添加,这个用户用于之后的用户隔离,但是需要设置环境变量KGROUP和KUSER。
- 设置临时环境变量KGROUP和KUSER用来保存用户组名和用户名
# export KGROUP=k8s-group
# export KUSER=k8s-test
( 关键字段说明 用户组名:k8s-group 用户名:k8s-test )
- 添加用户组 ${KGROUP}
# groupadd ${KGROUP}
- 在用户组下添加用户 ${KUSER},并在/home目录下为该用户创建用户目录 ${KUSER}
# useradd -s /bin/bash -d /home/${KUSER} -g ${KGROUP} -m ${KUSER}
- su切换至 ${KUSER} 用户,运行一次kubectl命令,由于该用户是首次创建,kubectl命令的配置还没有形成,需要执行一次kubectl命令后才能形成基本配置,为之后的操作做准备
# su ${KUSER}
$ kubectl get pods --all-namespaces
这时,可以看见${KUSER} 用户的家目录下生成了名为 .kube 的文件夹,这个文件夹就是保存kubectl执行相关信息的文件夹。
$ cd
$ ls -a
. .. .bash_history .bash_logout .bashrc .kube .mkshrc .profile
- 退出${KUSER} 用户,切换回root用户
$ exit
创建用户凭证
- 网上大部分说的用户隔离就是这一步,但是之后具体的流程却没有什么太多的说明,所以让我觉得粗糙
- 设置临时环境变量KPATH用与保存凭证路径
注意:目录请谨慎选择,该步骤生成的用户凭证不能移动位置,且由于