【Kubernetes运维篇】RBAC之创建集群用户管理K8S

文章目录

    • 一、创建zhangsan集群用户赋予uat名称空间管理员权限
    • 二、创建lisi集群用户赋予查看所有名称Pod权限

需求:公司新入职两位运维同事,分别是zhangsan、lisi,刚入职肯定不能给K8S管理员权限,所以需要创建两个系统账号,分别对应不同的权限:

  • zhangsan用户:对uat名称空间拥有管理员权限
  • lisi用户:对所有命名空间拥有查看Pod的权限

一、创建zhangsan集群用户赋予uat名称空间管理员权限

第一步:生成一个私钥

cd /etc/kubernetes/pki/
(umask 077; openssl genrsa -out zhangsan.key 2048) 

第二步:生成一个证书请求

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

第三步:生产一个证书

openssl x509 -req -in zhangsan.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out zhangsan.crt -days 3650

第四步:将zhangsan用户加入集群用户中,用来认证apiserver的连接

kubectl config set-credentials zhangsan --client-certificate=./zhangsan.crt --client-key=./zhangsan.key --embed-certs=true

验证:

kubectl config view

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rWU4RgDj-1689421099456)(D:\MD归档文档\IMG\image-20230715184722464.png)]

第五步:添加zhagnsan用户上下文

kubectl config set-context zhangsan@kubernetes --cluster=kubernetes --user=zhangsan

验证:

kubectl config view

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HPE4Bfwu-1689421099457)(D:\MD归档文档\IMG\image-20230715185003530.png)]

第六步:切换到zhangsan用户,默认没有任何权限

kubectl config use-context zhangsan@kubernetes

可以切换后,先切换回来管理用户

kubectl config use-context kubernetes-admin@kubernetes

第七步:创建uat名称空间 绑定zhangsan用户在uat名称空间拥有管理员权限

kubectl create namespace uat
kubectl create rolebinding zhangsan -n uat --clusterrole=cluster-admin --user=zhangsan

第八步:切换zhangsan用户,测试是否有权限

kubectl config use-context zhangsan@kubernetes
kubectl get pods -n uat

第九步:在Linux中添加一个zhagnsan系统用户,并赋予密码

useradd zhangsan
passwd zhangsan

第十步:将/root/.kube/目录复制到zhangsan用户家目录,并赋权

cp -rp /root/.kube /home/zhangsan
chown -R  zhangsan:zhangsan /home/zhangsan

第十一步:切换zhangsan用户修改/home/zhangsan/.kube/config只保留张三用户信息

su - zhangsan
vim .kube/config

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fSKFtQvY-1689421099458)(D:\MD归档文档\IMG\image-20230715191343109.png)]

测试使用zhangsan用户访问集群

kubectl get pods -n uat

OK,测试没问题后就可以吧Linux的zhangsan系统用户提交给新来的运维同事等,让新来的同事只有在uat命名空间操作的权限。

二、创建lisi集群用户赋予查看所有名称Pod权限

第一步:生成一个私钥

cd /etc/kubernetes/pki/
(umask 077; openssl genrsa -out lisi.key 2048) 

第二步:生成一个证书请求

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

第三步:生产一个证书

openssl x509 -req -in lisi.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out lisi.crt -days 3650

第四步:将lisi用户加入集群用户中,用来认证apiserver的连接

kubectl config set-credentials lisi --client-certificate=./lisi.crt --client-key=./lisi.key --embed-certs=true

验证:

kubectl config view

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ptqlJ7Yy-1689421099458)(D:\MD归档文档\IMG\image-20230715191959112.png)]

第五步:添加lisi用户上下文

kubectl config set-context lisi@kubernetes --cluster=kubernetes --user=lisi

验证:

kubectl config view

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xfKLJPus-1689421099459)(D:\MD归档文档\IMG\image-20230715192102269.png)]

第六步:切换到lisi用户,默认没有任何权限

kubectl config use-context lisi@kubernetes

可以切换后,先切换回来管理用户

kubectl config use-context kubernetes-admin@kubernetes

第七步:创建clusterrole赋予查看Pod的权限,因为是查看所有命名空间Pod,所以这里使用clusterrole

cat clusterrole.yaml 
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:name: clusterrole-lisi
rules:
- apiGroups: [""]resources: ["pods"]verbs: ["get", "watch" ,"list"]
kubectl apply -f clusterrole.yaml

第八步:创建clusterrolebinding绑定lisi用户

kubectl create clusterrolebinding  lisi --clusterrole=clusterrole-lisi --user=lisi

第九步:切换lisi用户测试权限

kubectl config use-context lisi@kubernetes
kubectl get pods

第十步:在Linux中添加一个lisi系统用户,并赋予密码

useradd lisi
passwd lisi

第十步:将/root/.kube/目录复制到lisi用户家目录,并赋权

cp -rp /root/.kube /home/lisi
chown -R  lisi:lisi /home/lisi

第十一步:切换zhangsan用户修改/home/lisi/.kube/config只保留张三用户信息

su - lisi
vim .kube/config

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DTXWER3n-1689421099459)(D:\MD归档文档\IMG\image-20230715193213838.png)]

测试使用lisi用户访问集群

kubectl get pods

OK,至此结束!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1393.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

k8s与集群管理

从docker讲起 终于有人把 Docker 讲清楚了,万字详解! Docker资源(CPU/内存/磁盘IO/GPU)限制与分配指南 默认情况下,Docker容器是没有资源限制的,它会尽可能地使用宿主机能够分配给它的资源。如果不对容器资…

chinese_lite OCR使用教程

目录 一、简介二、环境三、项目地址四、使用说明五、各语言的Demo地址六、效果展示 一、简介 超轻量级中文ocr,支持竖排文字识别, 支持ncnn、mnn、tnn推理 ( dbnet(1.8M) crnn(2.5M) anglenet(378KB)) 总模型仅4.7M 二、环境 python3.6linux/macos/windows 三…

JVM回收算法(标记-清除算法, 复制算法, 标记-整理算法)

1.标记-清除算法 最基础的算法,分为两个阶段,“标记”和“清除” 原理: - 标记阶段:collector从mutator根对象开始进行遍历,对从mutator根对象可以访问到的对象都打上一个标识,一般是在对象的header中&am…

自动化测试框架性能测试报告模板

目录 一、项目概述 二、测试环境说明 三、测试方案 四、测试结果 五、结果分析 总结: 一、项目概述 1.1 编写目的 本次测试报告,为自动化测试框架性能测试总结报告。目的在于总结我们课程所压测的目标系统的性能点、优化历史和可优化方向。 1.2 …

AUTOSAR CP标准的RTE和BSW各模块的设计及开发工作

AUTOSAR(Automotive Open System Architecture)是一种开放的汽车电子系统架构标准,旨在提供一种统一的软件架构,以实现汽车电子系统的模块化和可重用性。 AUTOSAR标准中的两个重要模块是RTE(Runtime Environment&…

【AI底层逻辑】——篇章5(上):机器学习算法之回归分类

目录 引入 一、何为机器学习 1、定规则和学规则 2、算法的定义 二、机器学习算法 1、常见学习方法 2、回归 3、分类 续下篇... 往期精彩: 引入 计算机发明初,专家通过将专业知识和经验梳理成规则输入计算机程序,但是这样跟不上知识…

【运维工程师学习五】数据库之MariaDB

【运维工程师学习五】数据库 1、常用的关系型数据库2、C/S结构3、MariaDB图形客户端4、安装MariaDB5、启动MariaDB及验证启动是否成功6、验证启动——端口7、验证启动——进程8、MariaDB配置文件路径主配置文件解读: 9、MariaDB的配置选项10、MariaDB客户端连接1、在…

设计模式 ~ 单例模式

单例模式 单例模式是一种设计模式,指在确保一个类只有一个实例,并提供一个全局访问点来访问该实例; 前端对于单例模式不常用,但是单例的思想无处不在; 创建之后缓存以便继续使用; 如:弹窗、遮罩…

【Python】json 格式转换 ( json 模块使用 | 列表转 json | json 转列表 | 字典转 json | json 转字典 )

文章目录 一、json 格式转换1、json 模块使用2、代码示例分析 - 列表转 json3、代码示例分析 - 字典转 json json 格式 字符串 与 Python 中的 字典 dict 和 列表 list 变量 可以无缝转换 ; 调用 json.dumps 函数 可以将 Python 列表 / 字典 转为 json ;调用 json.loads 函数 …

Elasticsearch 中的矢量搜索:设计背后的基本原理

作者:Adrien Grand 你是否有兴趣了解 Elasticsearch 用于矢量搜索(vector search)的特性以及设计是什么样子? 一如既往,设计决策有利有弊。 本博客旨在详细介绍我们如何选择在 Elasticsearch 中构建矢量搜索。 矢量搜索…

python和django中安装mysqlclient失败的解决方案

在Pychram中和pip中安装mysqlclient都不成功,只能直接下载二进制包进行安装了,下载页面中根据python的版本选择对应WHL包下载,下载地址 mysqlclient PyPIhttps://pypi.org/project/mysqlclient/#files 通过pip命令进行安装 pip install d:\…

考研线性代数考点总结

一.行列式 1.数字型行列式 数字行列式的计算含零子式的分块计算 2.行列式的性质 |A||A^T|交换行列,行列式的值变号含公因子的提出或乘进去把某行的K倍加到另一行,行列式的值不变。行列式可以根据某一行或某一列分拆 3.抽象行列式 n阶或高阶行列式 常…

《微服务架构设计模式》第十三章 微服务架构的重构策略

微服务架构的重构策略 一、重构到微服务需要考虑的问题1、为什么重构2、重构形式3、重构策略 二、设计服务与单体的协作方式三、总结 一、重构到微服务需要考虑的问题 1、为什么重构 单体地狱造成的业务问题: 交付缓慢充满故障的软件交付可扩展性差 2、重构形式 …

Visual Studio 向工程中添加现有文件夹

前言: 在创建C#类库(dll)工程后,需要把现有的C#文件添加进工程中 步骤1.将所有文件夹复制到工程中 步骤2. 点击这个图标,显示所有文件夹 工程目录下的所有文件夹都会被显示出来 选中需要添加的文件夹,右…

Linux安装MongoDB数据库,并内网穿透远程连接

文章目录 前言1. 配置Mongodb源2. 安装MongoDB3. 局域网连接测试4. 安装cpolar内网穿透5. 配置公网访问地址6. 公网远程连接7. 固定连接公网地址8. 使用固定地址连接 前言 MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富&…

虚拟化容器化与docker

虚拟化容器化与docker 基本概念虚拟化分类虚拟化实现主机虚拟化实现容器虚拟化实现命名空间namespace空间隔离 控制组群cgroup资源隔离 LXC(Linux Container) docker与虚拟机 基本概念 物理机: 实际的服务器或者计算机。相对于虚拟机而言的对实体计算机的称呼。物理…

初识Redis——Redis概述、安装、基本操作

目录 一、NoSQL介绍 1.1什么是NoSQL 1.2为什么会出现NoSQL技术 1.3NoSQL的类别 1.4传统的ACID是什么 1.5 CAP 1.5.1 经典CAP图 1.5.4 什么是BASE 二、Redis概述 2.1 什么是Redis 2.2 Redis能干什么 2.3 Redis的特点 2.4 Redis与memcached对比 2.5 Redis的安装 2.6 Docker安装 三…

二、学习回归 - 基于广告费预测点击量

山外风雨三尺剑 有事提剑下山去 云中花鸟一屋书 无忧翻书圣贤来 1.设置问题 以Web广告和点击量的关系为例来学习回归。 前提:投入的广告费越多,广告的点击量就越高。 根据以往的经验数据,可以得到下图: 那么假设我要投200块的广…

SeLa:Self Labeling Via Simultaneous Clustering and Representation Learning

方法论 有监督的分类任务实现 给定一个将数据I映射至特征向量 x ∈ R D x ∈ R^D x∈RD 的深度神经网络 Φ Φ Φ ,即 x Φ ( I ) x Φ ( I ) xΦ(I)。使用有N个样本 I 1 , … , I N I_1 , … , I_N I1​,…,IN​, 且具有标签 y 1 , … , y N ∈ { 1 , … , K }…

Office如何通过VSTO进行WORD插件开发?

文章目录 0.引言1.工具准备2.WORD外接程序创建和生成3.外接程序生成并使用 0.引言 VSTO(Visual Studio Tools for Office )是VBA的替代,是一套用于创建自定义Office应用程序的Visual Studio工具包。VSTO可以用Visual Basic 或者Visual C#扩展…