kubernetes创建用户
创建k8s User Account
使用openssl方法创建普通用户
准备工作
1
2
3
4
|
mkdir /root/pki/ 将k 8 s ca.pem ca-key.pem 证书拷贝到此目录 cp /opt/kubernetes/ssl/ca-key.pem /root/pki/ cp /opt/kubernetes/ssl/ca.pem /root/pki/ |
一、创建证书
1.创建user私钥
1
|
(umask 077 ;openssl genrsa -out dev.key 2048 ) |
2.创建证书签署请求
O=组织信息,CN=用户名
1
|
openssl req -new -key dev.key -out dev.csr -subj "/O=k8s/CN=dev" |
3.签署证书
1
2
3
|
openssl x 509 -req -in dev.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out dev.crt -days 365 Signature ok subject=/O=k 8 s/CN=dev |
二、创建配置文件
1
2
3
4
|
kubectl config set-cluster --kubeconfig=/PATH/TO/SOMEFILE #集群配置 kubectl config set-credentials NAME --kubeconfig=/PATH/TO/SOMEFILE #用户配置 kubectl config set-context #context配置 kubectl config use-context #切换context |
1
2
3
|
* --embed-certs=true的作用是不在配置文件中显示证书信息。 * --kubeconfig=/root/dev.conf用于创建新的配置文件,如果不加此选项,则内容会添加到家目录下.kube/config文件中,可以使用use-context来切换不同的用户管理k 8 s集群。 * context简单的理解就是用什么用户来管理哪个集群,即用户和集群的结合。 |
创建集群配置
1
2
3
4
|
kubectl config set-cluster k 8 s --server=https:// 192.168 . 124.61: 6443 \ --certificate-authority=ca.pem \ --embed-certs=true \ --kubeconfig=/root/dev.conf |
创建用户配置
1
2
3
4
5
|
kubectl config set-credentials dev \ --client-certificate=dev.crt \ --client-key=dev.key \ --embed-certs=true \ --kubeconfig=/root/dev.conf |
创建context配置
1
2
3
4
|
kubectl config set-context dev@k 8 s \ --cluster=k 8 s \ --user=dev \ --kubeconfig=/root/dev.conf |
切换context
1
2
|
kubectl config use-context dev@k 8 s --kubeconfig=/root/dev.conf kubectl config view --kubeconfig=/root/dev.conf |
创建系统用户
1
2
3
4
5
|
useradd dev mkdir -p /home/dev/.kube cp /root/dev.conf /home/dev/.kube/config chown dev.dev -R /home/dev/ su - dev |
k8s验证文件
kubectl get pod
这个时候不成功是因为没有进行权限绑定
创建Role
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
root@k 8 s-master:~# cat > pods-reader.yaml <<EOF apiVersion: rbac.authorization.k 8 s.io/v 1 kind: Role metadata: name: pods-reader rules: - apiGroups: - "" resources: - pods verbs: - get - list - watch EOF |
创建Rolebinding
用户dev和role pods-reader的绑定
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
root@k 8 s-master:~# cat >test-pods-reader.yaml <<EOF apiVersion: rbac.authorization.k 8 s.io/v 1 kind: RoleBinding metadata: name: cbmljs-pods-reader roleRef: apiGroup: rbac.authorization.k 8 s.io kind: Role name: pods-reader subjects: - apiGroup: rbac.authorization.k 8 s.io kind: User name: dev EOF |
到这一步就可以进行验证了
kubectl get pod
我们是可以查看查看default命名空间的pod,但是其他空间的pod是无法查看的。
创建ClusterRole
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
root@k 8 s-master:~# cat cluster-reader.yaml apiVersion: rbac.authorization.k 8 s.io/v 1 kind: ClusterRole metadata: name: cluster-reader rules: - apiGroups: - "" resources: - pods verbs: - get - list - watch |
创建ClusterRoleBinding
1
2
3
4
5
6
7
8
9
10
11
12
13
|
root@k 8 s-master:~# cat cbmljs-read-all-pod.yaml apiVersion: rbac.authorization.k 8 s.io/v 1 beta 1 kind: ClusterRoleBinding metadata: name: billy-read-all-pods roleRef: apiGroup: rbac.authorization.k 8 s.io kind: ClusterRole name: cluster-reader subjects: - apiGroup: rbac.authorization.k 8 s.io kind: User name: dev |
验证结果
kubectl get pod --all-namespaces
就可以看到所有命名空间的pod了.
权限绑定指定的namespace
也可以使用下面方法进行绑定
kubectl get clusterrole 查看系统自带角色
1
|
kubectl create rolebinding devuser-admin-rolebinding(rolebinding的名字) --clusterrole=admin(clusterrole的名字,admin在k 8 s所有namespace下都有最高权限) --user=devuser(将admin的权限赋予devuser用户) --namespace=dev(范围是dev这个namespace下) 即dev |
扩展:
kubectl api-resources 可以查看apiGroups
示例:
创建集群角色
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
cat clusterrole.yaml apiVersion: rbac.authorization.k 8 s.io/v 1 kind: ClusterRole metadata: name: test-clusterrole rules: - apiGroups: [ "" ] resources: [ "pods" ] verbs: [ "get" , "list" , "watch" , "create" , "update" , "patch" , "delete" ] - apiGroups: [ "extensions" , "apps" ] resources: [ "deployments" ] verbs: [ "get" , "watch" , "list" ] - apiGroups: [ "" ] resources: [ "pods/exec" ] verbs: [ "get" , "list" , "watch" , "create" , "update" , "patch" , "delete" ] - apiGroups: [ "" ] resources: [ "pods/log" ] verbs: [ "get" , "list" , "watch" , "create" , "update" , "patch" , "delete" ] - apiGroups: [ "" ] resources: [ "namespaces" , "namespaces/status" ] verbs: [ "*" ] # 也可以使用[ '*' ] - apiGroups: [ "" , "apps" , "extensions" , "apiextensions.k8s.io" ] resources: [ "role" , "replicasets" , "deployments" , "customresourcedefinitions" , "configmaps" ] verbs: [ "*" ] |
集群绑定
1
2
3
4
5
6
7
8
9
10
11
12
13
|
[root@master role]# cat test-classbind.yaml apiVersion: rbac.authorization.k 8 s.io/v 1 beta 1 kind: ClusterRoleBinding metadata: name: test-all-pods roleRef: apiGroup: rbac.authorization.k 8 s.io kind: ClusterRole name: test-clusterrole subjects: - apiGroup: rbac.authorization.k 8 s.io kind: User name: test |
参考:
https://blog.csdn.net/cbmljs/article/details/102953428
kubernetes创建用户的更多相关文章
- kubernetes 创建用户配置文件来访问集群API
创建一个账号 kubectl create serviceaccount def-ns-admin 绑定集群权限 kubectl create rolebinding def-ns-admin --c ...
- mysql 创建用户、授权等操作
一, 创建用户: 命令:CREATE USER 'username'@'host' IDENTIFIED BY 'password'; 说明:username - 你将创建的用户名, host - 指 ...
- Oracle创建表空间、创建用户以及授权
Oracle安装完后,其中有一个缺省的数据库,除了这个缺省的数据库外,我们还可以创建自己的数据库. 为了避免麻烦,可以用’Database Configuration Assistant’向导来创建数 ...
- oracle创建用户
--首先用管理员的帐户登录(要有修改用户的权限)system,默认数据库orcl. CREATE USER lcs IDENTIFIED BY lcs default tablespace lics_ ...
- ubuntu 创建用户
http://www.jb51.net/article/45848.htm 创建用户
- Mysql创建用户并授权
运行命令行 mysql -uroot -p 登录mysql use mysql; 创建用户:create user 'test123'@'localhost' identified by '12345 ...
- oracle数据库如何创建用户并授予角色
目标:1. 创建角色test1_role, 授予 CREATE PROCEDURE, CREATE SEQUENCE, CREATE SYNONYM, CREATE TABLE, CREATE T ...
- oracle 创建用户
/*分为四步 *//*第1步:创建临时表空间 */create temporary tablespace ycjy tempfile 'D:\oracledata\ycjy.dbf' size 50 ...
- Oracle创建表空间、创建用户以及授权、查看权限
常用的,留着备用 1.创建临时表空间 CREATE TEMPORARY TABLESPACE test_tempTEMPFILE 'C:\oracle\product\10.1.0\oradata\o ...
随机推荐
- Shell系列(24)- 条件判断之文件类型
按照文件类型进行判断 标红,记住:其他了解即可 测试选项 作用 -b 文件 判断该文件是否存在,并且是否为块设备文件(是块设备文件为真) -c 文件 判断该文件是否存在,并且是否为字符设备文件(是字符 ...
- spring Data Jpa的依赖+配置
spring data jpa 是spring基于的orm框架,jpa规范的基础上封装的一套JPA应用框架 添加的相关依赖: <properties> <spring.version ...
- 鸿蒙内核源码分析(内存分配篇) | 内存有哪些分配方式 | 百篇博客分析OpenHarmony源码 | v11.02
百篇博客系列篇.本篇为: v11.xx 鸿蒙内核源码分析(内存分配篇) | 内存有哪些分配方式 | 51.c.h .o 内存管理相关篇为: v11.xx 鸿蒙内核源码分析(内存分配篇) | 内存有哪些 ...
- WPF进阶技巧和实战01-小技巧
Svg在WPF中的使用 方法1:拷贝svg中的部分代码转换成Geometry(作为Path的Data使用) 在vs或者直接打开svg,看到如下代码: <?xml version="1. ...
- 通过Python收集MySQL MHA 部署及运行状态信息的功能实现
一. 背景介绍 当集团的MySQL数据库实例数达到2000+.MHA集群规模数百个时,对MHA的及时.高效管理是DBA必须面对的一个挑战.MHA 集群 节点信息 和 运行状态 是管理的基础.本篇幅主要 ...
- Java程序的执行过程
Java程序的执行过程 编译器将 Java 源代码编译成字节码class文件 类加载到 JVM 里面后,执行引擎把字节码转为可执行代码 执行的过程,再把可执行代码转为机器码,由底层的操作系统完成执行
- centos6.5 oracle 卸载
1.使用SQL*PLUS停止数据库 [oracle@OracleTest oracle]$ sqlplus / as sysdba SQL> shutdown immediate; SQL> ...
- css新增属性之边框
css3新增属性 边框属性 背景属性 文字属性 颜色属性 边框属性 属性 说明 border-radius 设置边框圆角 border-image 设置图像边框 border-shadow 设置边框阴 ...
- bzoj1834 ZJOI2010网络扩容(费用流)
给定一张有向图,每条边都有一个容量C和一个扩容费用W.这里扩容费用是指将容量扩大1所需的费用. 求: 1.在不扩容的情况下,1到N的最大流: 2.将1到N的最大流增加K所需的最小扩容费用. 其中\(n ...
- 2020.11.14-pta天梯练习赛补题
7-7 矩阵A乘以B 给定两个矩阵A和B,要求你计算它们的乘积矩阵AB.需要注意的是,只有规模匹配的矩阵才可以相乘.即若A有Ra行.Ca列,B有Rb行.Cb列,则只有Ca ...