k8s之用户和用户组
在k8s中同样也有用户和组的概念
新建一个k8s用户大概可以分为以下几步:
- 生成用户的证书key
- 通过用户的证书key,生成用户的证书请求
- 通过k8s的api的ca证书去签发用户的证书请求,生成用户的证书
- 配置kubectl config
具体操作如下:
1、创建用户证书key, 执行命令如下:
(umask 077; openssl genrsa -out guan.key 2048)

2、创建用户证书请求,–subj制定组和用户,0是组名,CN是用户名,如图:
openssl req -new -key guan.key -out guan.csr -subj "/O=Guan/CN=guan"

注意:如果提示如下错误:
Can't load /root/.rnd into RNG
140247102853568:error:2406F079:random number generator:RAND_load_file:Cannot open file:../crypto/rand/randfile.c:88:Filename=/root/.rnd
解决办法:
cd /root
openssl rand -writerand .rnd
3、使用k8s的ca签发用户证书:
openssl x509 -req -in guan.csr -CA /etc/kubernetes/pki/ca.crt -CAkey /etc/kubernetes/pki/ca.key -CAcreateserial -out guan.crt -days 3650
4、用户配置:
kubectl config set-credentials guan --client-certificate=guan.crt --client-key=guan.key --embed-certs=true
5、上下文(context)设置,默认的命名空间:
kubectl config set-context guan@kubernetes --cluster=kubernetes --user=guan
6、切换用户,但是可以发现没有任何权限,如图:
kubectl config use-context guan@kubernetes

7、查看当前上下文(context):

8、查看所有的上下文(context):

上图中的kubernetes-admin@kubernetes为k8s安装后默认的上下文,也是最大权限的
用户创建完成后,即可进行用户授权,目前常用的就是RBAC–基于角色的授权机制
- 某个用户属于某个角色
- 某个角色拥有某些操作
- 某些操作板顶到某些资源上
最终的结果就是:某个用户对某些资源具有某些权限,详细使用可参考k8s之rbac权限控制https://blog.ywdevops.cn/index.php/2021/12/17/rbac/


