K8S -- kubernetes集群权限之Cluster、 User和Context

  • 一、生成user用户证书
    • (1)生成私钥
    • (2)生成证书请求
    • (3)生成证书,并用服务端CA签署
    • (4)查看证书
  • 二、建立集群、用户和上下文
    • (1)产生集群配置文件
    • (2)生成集群用户
    • (3)建立基于集群和新用户的上下文
    • (4)使用新建设的集群上下文
  • 三、给jerry用户授予权限
    • (1)建立角色
    • (2)将角色绑定到用户jerry
    • (3)使用用户jerry测试
  • 四、将linux系统用户k8s-jerry与k8s集群用户jerry相关联(不在需要kubeconfig文件了)
    • (1)建立系统用于k8s-jerry
    • (2)将集群配置文件copy到系统用户k8s-jerry的默认目录下
    • (3)切换成k8s-jerry用户,就可以访问k8s集群中jerry用户的有权访问的资源
     使用k8s的小伙伴,对k8s用户权限管理可能有很多困惑,如何建立外部用户,并赋予k8s的访问权限,对很多开发者来说,是非常困惑的。下面,本人以jerry用户的创建为例,为linux系统中的k8s-jerry用户配置k8s集群管理权限。注意: 此处配置的k8s-jerry用户为linux系统用户; 而jerry用户为k8s集群中对应的用户。

一、生成user用户证书

(1)生成私钥

(umask 077; openssl genrsa -out jerry.key 2048)

(2)生成证书请求

openssl req -new -key jerry.key -out jerry.csr -subj "/CN=jerry"

如果定义组,则组可以作为权限分配的主体,比如:
openssl req -new -key jerry.key -out jerry.csr -subj "/CN=jerry/O=jerry-admin”

角色授权绑定文件可以定义如下:
subjects:

  • apiGroup: rbac.authorization.k8s.io
    kind: Group
    name: jerry-admin

(3)生成证书,并用服务端CA签署

  openssl x509 -req  -in jerry.csr -CA /etc/kubernetes/pki/ca.crt  -CAkey /etc/kubernetes/pki/ca.key  -CAcreateserial -out jerry.crt -days 365

(4)查看证书

  openssl x509 -in jerry.crt -text  -noout

二、建立集群、用户和上下文

  export KUBE_APISERVER="https://172.16.1.101:6443"

(1)产生集群配置文件

 kubectl config set-cluster kubernetes --certificate-authority=/etc/kubernetes/pki/ca.crt --embed-certs=true --server=${KUBE_APISERVER} --kubeconfig=kube-config

注意:
使用ca.crt证书,作为集群授权证书
当前目录下生成kube-config配置文件

(2)生成集群用户

kubectl config set-credentials jerry --client-certificate=/root/kube-cluster/pki/jerry.crt --embed-certs=true --client-key=/root/kube-cluster/pki/jerry.key --kubeconfig=kube-config

注意:
1. 在kube-config集群配置文件中查看user 名为 jerry
2. 采用客户端证书和私钥

(3)建立基于集群和新用户的上下文

  kubectl config set-context jerry@kubernetes --cluster=kubernetes --user=jerry --kubeconfig=kube-config

注意: 上下文名称为 jerry@kubernetes
集群名称为kubernetes
用户名称为jerry

(4)使用新建设的集群上下文

   kubectl config use-context jerry@kubernetes --kubeconfig=kube-config

三、给jerry用户授予权限

(1)建立角色

  kubectl create role pods-reader  --verb=get,list,watch --resource=pods --dry-run -oyaml > role-demo.yaml

文件内容如下:
[root@master kube-cluster]# more role-demo.yaml

apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:creationTimestamp: nullname: pods-reader
rules:
- apiGroups:- ""resources:- podsverbs:- get- list- watch

(2)将角色绑定到用户jerry

kubectl create rolebinding jerry-read-pods --role=pods-reader --user=jerry --dry-run -oyaml > jerry-read-pods.yaml

文件内容如下:
[root@master kube-cluster]# more jerry-read-pods.yaml

apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:creationTimestamp: nullname: jerry-read-pods
roleRef:apiGroup: rbac.authorization.k8s.iokind: Rolename: pods-reader
subjects:
- apiGroup: rbac.authorization.k8s.iokind: Username: jerry

(3)使用用户jerry测试

**<1>切换上下文**
  kubectl config use-context jerry@kubernetes --kubeconfig=kubeconf/kube-config
**<2>查看pods(有权)**
[root@master kube-cluster]# kubectl get pods --kubeconfig=kubeconf/kube-config
NAME                                      READY   STATUS             RESTARTS   AGE
nfs-client-provisioner-5584cd9578-fqbjg   1/1     Running            0          15h
test-pod                                  0/1     CrashLoopBackOff   176        15h
web-0                                     1/1     Running            0          13h
web-1                                     1/1     Running            0          13h

<3>查看deployment(无权限)

  kubectl get deployment --kubeconfig=kubeconf/kube-config

Error from server (Forbidden): deployments.apps is forbidden: User “jerry” cannot list resource “deployments” in API group “apps” in the namespace “default”

四、将linux系统用户k8s-jerry与k8s集群用户jerry相关联(不在需要kubeconfig文件了)

(1)建立系统用于k8s-jerry

  useradd k8s-jerrychown -R k8s-jerry.k8s-jerry /home/k8s-jerry

(2)将集群配置文件copy到系统用户k8s-jerry的默认目录下

[root@master kube-cluster]# ls
cluster-pods-reader.yaml  jerry-read-pods.yaml  kubeconf  pki  role-demo.yaml
[root@master kube-cluster]# cp kubeconf/kube-config /home/k8s-jerry/.kube/config

(3)切换成k8s-jerry用户,就可以访问k8s集群中jerry用户的有权访问的资源

[root@master kube-cluster]# su k8s-jerry
[k8s-jerry@master kube-cluster]$ kubectl get pods
NAME                                      READY   STATUS             RESTARTS   AGE
nfs-client-provisioner-5584cd9578-fqbjg   1/1     Running            0          15h
test-pod                                  0/1     CrashLoopBackOff   180        15h
web-0                                     1/1     Running            0          14h
web-1                                     1/1     Running            0          14h

K8S -- kubernetes集群权限之Cluster、 User和Context相关推荐

  1. k8s服务器修改ip,[转载][K8S] Kubernetes 集群变更IP地址

    [K8S] Kubernetes 集群变更IP地址 原文:https://blog.csdn.net/whywhy0716/article/details/92658111 本文基于单节点K8S. 碎 ...

  2. 自动化运维之k8s——Kubernetes集群部署、pod、service微服务、kubernetes网络通信

    目录 一.Kubernetes简介 1.Kubernetes简介 2.kubernetes设计架构 3.Kubernetes核心组件 4.kubernetes设计结构 二.Kubernetes部署 1 ...

  3. k8s/Kubernetes集群安装

    文章目录 Kubernetes集群安装 1.集群规划 2.必要的准备 3.上传离线软件到servera,serverb,serverc 4.安装docker-ce软件,三台机器都需要安装 5.安装K8 ...

  4. K8s——kubernetes集群中ceph集群使用【下】

    kubernetes集群中ceph集群使用 一:CephFS 创建和使用 CephFS 允许用户挂载一个兼容posix的共享目录到多个主机,该存储和NFS共享存储以及CIFS共享目录相似 1.file ...

  5. K8s——kubernetes集群中ceph集群使用【上】

    kubernetes集群中ceph集群使用 块设备创建和使用 Ceph 能够为 pod 提供裸的块设备卷,定义在Ceph数据冗余级别的一个池中 1.storageclass 配置 storagecla ...

  6. 这一篇 K8S(Kubernetes)集群部署 我觉得还可以

    点赞再看,养成习惯,微信搜索[牧小农]关注我获取更多资讯,风里雨里,小农等你,很高兴能够成为你的朋友. 国内安装K8S的四种途径 Kubernetes 的安装其实并不复杂,因为Kubernetes 属 ...

  7. k8s.4-kubeadm部署高可用kubernetes集群 1.21

    kubeadm部署高可用kubernetes集群 1.21 ​ 一.kubernetes 1.21发布 1.1 介绍 2021年04月,Kubernetes 1.21正式与大家见面,这是我们 2021 ...

  8. Kubernetes(K8S)集群部署搭建图文教程(最全)

    Kubernetes 集群安装 前期准备 集群安装 系统初始化 Harbor采取私有的仓库去镜像使用 集群检测 集群功能演示 前期准备 第一步:Router软路由构建 第二步:centos7安装 5台 ...

  9. Kubernetes集群(k8s)- 介绍和部署

    目录 1. Kubernetes简介 1. k8s 1.2 Kubernetes的好处 1.3 kubernetes设计架构 1.4 kubernetes设计架构(2) 2. Kubernetes集群 ...

最新文章

  1. spring-redis-data的一个坑
  2. java解惑你知道多少_Java解惑
  3. Spring boot配置类
  4. Java spark中的各种范型接口Function的区别(持续更新中)
  5. linux fork函数的精辟解说
  6. C 桥接模式 - 开关和电器
  7. Centos7搭建Ngrok
  8. python画国际象棋_python图形工具turtle绘制国际象棋棋盘
  9. 负载均衡工具 haproxy剖析
  10. html嵌入原始数据,如何用html和javascript显示原始图像数据?
  11. 多用继承 android,android 实战用继承实现点击“防抖动”多次点击现象
  12. 万字长文剖析Redis分布式锁到底安不安全
  13. spark学习-35-Spark的Map任务输出跟踪器MapOutputTracker
  14. 06540计算机网络2018年自考真题,自考06540计算机网络基本原理复习资料六
  15. 01改变世界:没有计算器的日子怎么过——手动时期的计算工具
  16. C语言-1024小游戏
  17. bootstrap-select 滚轴_Bootstrap-Select插件
  18. 解决svmtrain已被删除问题
  19. 被举报了,越想越后怕...
  20. Deep Face Recognition读书笔记

热门文章

  1. Unity——IK动画契合匹配初体验
  2. 7.2DIY可视化后台表格自定义列显示类型
  3. 以太坊 2.0:如何实现最终性
  4. 灰度直方图均衡化后+Otsu算法
  5. maya如何让控制器跟随模型,不脱节?
  6. 思科模拟器 --- 路由器的基本配置
  7. python从某行开始读_如何从文件的某一行开始读取?
  8. Gruff: Rails 经典图表生成库简介
  9. 【方法】睡眠操作清单
  10. 页面整体等比例缩小,页面缩小,页面放大,页面缩放