kubernetes创建用户
创建k8s User Account
使用openssl方法创建普通用户
准备工作
|
1
2
3
4
|
mkdir /root/pki/将k8s 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
|
(umask077;openssl genrsa -out dev.key2048) |
2.创建证书签署请求
O=组织信息,CN=用户名
|
1
|
openssl req -new -key dev.key -out dev.csr -subj"/O=k8s/CN=dev" |
3.签署证书
|
1
2
3
|
openssl x509 -req -in dev.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out dev.crt -days365Signature oksubject=/O=k8s/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来切换不同的用户管理k8s集群。* context简单的理解就是用什么用户来管理哪个集群,即用户和集群的结合。 |
创建集群配置
|
1
2
3
4
|
kubectl config set-cluster k8s --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@k8s \--cluster=k8s \--user=dev \--kubeconfig=/root/dev.conf |
切换context
|
1
2
|
kubectl config use-context dev@k8s --kubeconfig=/root/dev.confkubectl config view --kubeconfig=/root/dev.conf |
创建系统用户
|
1
2
3
4
5
|
useradd devmkdir -p /home/dev/.kubecp /root/dev.conf /home/dev/.kube/configchown 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@k8s-master:~# cat > pods-reader.yaml <<EOFapiVersion: rbac.authorization.k8s.io/v1kind: Rolemetadata: name: pods-readerrules:- 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@k8s-master:~# cat >test-pods-reader.yaml <<EOFapiVersion: rbac.authorization.k8s.io/v1kind: RoleBindingmetadata: name: cbmljs-pods-readerroleRef: apiGroup: rbac.authorization.k8s.io kind: Role name: pods-readersubjects:- apiGroup: rbac.authorization.k8s.io kind: User name: devEOF |
到这一步就可以进行验证了
kubectl get pod
我们是可以查看查看default命名空间的pod,但是其他空间的pod是无法查看的。
创建ClusterRole
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
root@k8s-master:~# cat cluster-reader.yamlapiVersion: rbac.authorization.k8s.io/v1kind: ClusterRolemetadata: name: cluster-readerrules:- apiGroups: -"" resources: - pods verbs: - get - list - watch |
创建ClusterRoleBinding
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
root@k8s-master:~# cat cbmljs-read-all-pod.yamlapiVersion: rbac.authorization.k8s.io/v1beta1kind: ClusterRoleBindingmetadata: name: billy-read-all-podsroleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cluster-readersubjects:- apiGroup: rbac.authorization.k8s.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在k8s所有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.yamlapiVersion: rbac.authorization.k8s.io/v1kind: ClusterRolemetadata: name: test-clusterrolerules: - 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.yamlapiVersion: rbac.authorization.k8s.io/v1beta1kind: ClusterRoleBindingmetadata: name: test-all-podsroleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: test-clusterrolesubjects:- apiGroup: rbac.authorization.k8s.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 ...
随机推荐
- Jmeter线程组设置
添加线程组:右键测试计划->添加->Threads->线程组 左侧树形标签栏中,显示标签信息. 选中线程组,右侧内容栏中显示线程组的相关信息. 名称:可以给线程组设置一个个性化的命名 ...
- python处理权限关系一些注意事项
在模型类中多对多的关系(必须是对象) 如果要获取多对多表中的值,必须使用对象进行搜索,不能直接输入名称 例:这样才能查找到(下面例子是针对,组设置多对多关到用户,现在要根据用户获取相应的组) user ...
- 使用VUE+原生PHP完成搜索后分页的效果
html代码: <!doctype html> <html lang="en"> <head> <meta charset="U ...
- Dapr + .NET Core实战(十-终篇)K8S运行Dapr
工作原理 为了实现在k8s上安装Dapr,Dapr需要部署dapr-sidecar-injector.dapr-operator.dapr-placement和dapr-sentry服务. dapr- ...
- kubelet源码分析——监控Pod变更
前言 前文介绍Pod无论是启动时还是关闭时,处理是由kubelet的主循环syncLoop开始执行逻辑,而syncLoop的入参是一条传递变更Pod的通道,显然syncLoop往后的逻辑属于消费者一方 ...
- 定制个机器人帮你和Ta聊天
自动聊天示例 这是基于200万聊天记录训练出来的,你可以用自己和女朋友的记录训练了试试效果 至于微信机器人怎么用,你可以 GitHub 搜搜看哈 聊天1: user: 在吗? bot: 在 user: ...
- docker-compose 搭建mongo集群
创建目录 在每台机器上操作此步骤 一.在编写容器文件之前的注意事项: 1.yaml文件的指令前端不能使用tab键只能使用空格 2.storage: 指令的对接只能使用 : 不能使用 = 冒号的后面要跟 ...
- Java基础之(三):IDEA的安装及破解
IDEA的安装 IDEA官网:IDEA 点击IJ 找好操作系统,点击下载 双击打开,自己找个安装路径 勾选这两个即可 旗舰版破解及汉化 上面是个人社区版,是免费的,但是如果想要使用汉化版的,需要寻找插 ...
- [AGC023D] Go Home 题解
题目传送门 Solution 首先排除掉特殊情况:若 \(S\) 在两侧,肯定会顺序/逆序直接走完,答案就是边界减去出发点. 考虑到若 \(P_1\geq P_n\),那么显然 \(1\) 不到家 \ ...
- python中return的返回和执行
1 打印函数名和打印函数的执行过程的区别 例子1.1 def a(): print(111) print(a) # 打印a函数的内存地址,不会对a函数有影响,a函数不会执行 print(a()) # ...