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 ...
随机推荐
- Centos8.X 搭建Prometheus+node_exporter+Grafana实时监控平台
Prometheus Promtheus是一个时间序列数据库,其采集的数据会以文件的形式存储在本地中,因此项目目录下需要一个data目录,需要我们自己创建,下面会讲到 下载 下载好的.tar.gz包放 ...
- 华为云计算IE面试笔记-FusionCompute上的虚拟机A和虚拟机B不能正常通信,请描述可能的故障点和排除方法(分析虚拟机A和虚拟机B不通)
*快速定位故障点:(考到) ARP:同一二层内可以通过ARP -a命令查询到要访问的主机IP(ARP表项中记录了同一二层中的IP和MAC的对应关系),若查询不到,说明二层出现问题(Vlan 间不通)或 ...
- javascript 继承 inheritance prototype
* Rectangle继承Shape function Shape() { this.x = 0; this.y = 0; } Shape.prototype.move = function(x, ...
- 字体小于12px 无法缩小解决方案
通过缩放进行大小控制. 缩放可能会导致元素也进行缩放.需要注意 transform: scale(0.5);
- yum 安装 php 环境
如此简单 第一步: sudo rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7. ...
- [转载]SELinux 环境下网络服务设置,配置 Apache 、Samba、NFS
原文地址:http://www.ibm.com/developerworks/cn/linux/l-cn-selinux-services1/index.html?ca=drs- 引言 SELinux ...
- IdentityServer4系列[6]授权码模式
授权码模式是一种混合模式,是目前功能最完整.流程最严密的授权模式.它主要分为两大步骤:认证和授权.其流程为: 用户访问客户端,客户端将用户导向Identity Server. 用户填写凭证信息向客户端 ...
- 找出某名珍贵药材的生长区域(ArcPy实现)
一.背景 某种珍贵药材生长于山区,通过研究了解到这种药材生长具有严格的生长条件.为了能更好地保护该药材的生长环境,现在需要使用GIS空间分析方法,将药材适合生长区域找出来,以便为该物种保护提供依据. ...
- AOP的简单介绍
1.AOP简介 AOP面向切面编程,采取横向抽取机制,取代了传统纵向继承体系重复性代码(性能监视.安全检查.缓存) SpringAOP使用纯java实现,不需要专门的编译过程和类加载器,在运行期间以代 ...
- 串的模式匹配 BF算法和KMP算法
设有主串s和子串t,子串t的定位就是要在主串中找到一个与子串t相等的子串.通常把主串s称为目标串,把子串t称为模式串,因此定位也称为模式匹配. 模式匹配成功是指在目标串s中找到一个模式串t: 不成功则 ...