当前位置: 首页 > article >正文

K8S如何让worker使用kubectl命令(RBAC方法)

背景

目前集群规划如下

1eb743bc6a1aeb9db5f17cf038b375f3.png

kubeadm安装集群master节点默认能使用kubectl命令,worker则不能使用。这是因为worker节点没授权。当然,你可以通过以下方式授权

mkdir .kube
scp master1:/root/.kube/config .kube/

但这样无疑给了worker节点非常大的权限,如何限制用户在worker的权限呢?(用户只有worker节点的登录密码,master节点用户是登录不上的)为了实现限制用户权限的需求,则要使用RBAC进行控制。

以下为worker使用者授权名称空间default的pod的查看权限

证书相关操作(生成与签名)

证书流程如下

在这里插入图片描述

申请者(test4)操作

# 创建私钥 保存在当前目录 文件名叫test4user.key
openssl genrsa -out test4user.key 2048
 
# 用此私钥创建一个csr(证书签名请求)文件
openssl req -new -key test4user.key -subj "/CN=test4user" -out test4user.csr

管理者(master)操作

以下可见,master节点有ca私钥,worker只有证书,所以签名证书只有管理员master才能做到

在这里插入图片描述
在这里插入图片描述

# 把签名请求文件csr给管理员(master),管理员用ca私钥、证书生成证书
openssl x509 -req -in test4user.csr -CA /etc/kubernetes/pki/ca.crt -CAkey /etc/kubernetes/pki/ca.key -CAcreateserial -out test4user.crt -days 365

集群设置

# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!命令1命令2只执行其中一条即可

# !!!!!!!!!!!!!!!!!!!!命令1
# 添加集群信息(默认是在~/.kube/config,用--kubeconfig指定参数)
# k8s的worker节点也会有ca证书,默认位置在/etc/kubernetes/pki/ca.crt
kubectl config set-cluster kubernetes --server=https://10.0.2.18:8443 --certificate-authority=/etc/kubernetes/pki/ca.crt --kubeconfig=/root/.kube/test4user_config

# !!!!!!!!!!!!!!!!!!!!命令2
# 添加集群信息(此处是~/.kube/config)
# worker节点推荐执行这个
# --server=https://10.0.2.18:8443 这个是我集群的负载均衡,你们可以改成master的ip加6443端口
kubectl config set-cluster kubernetes --server=https://10.0.2.18:8443 --certificate-authority=/etc/kubernetes/pki/ca.crt

# 添加用户信息
kubectl config set-credentials test4user --client-certificate=test4user.crt --client-key=test4user.key --embed-certs=true

# 添加上下文信息(环境)
kubectl config set-context test4user@kubernetes --cluster=kubernetes --user=test4user

# 查看当前上下文(环境)
kubectl config get-contexts

# 使用上下文
kubectl config use-context test4user@kubernetes

# 查看当前上下文
kubectl config get-contexts

6f3910d1c1a9f0ea040357d612ff1c77.png

授权(master操作)

cat >test4user-role-bind.yaml<<EOF
kind: Role  # 角色
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  namespace: default
  name: test4user-role
rules:
- apiGroups: [""]
  resources: ["pods"]
  verbs: ["get", "list", "watch"] #权限只读
---
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: test4user-rolebinding
  namespace: default
subjects: #绑定主体
- kind: User
  name: test4user
  apiGroup: rbac.authorization.k8s.io
roleRef: #绑定角色
  kind: Role
  name: test4user-role
  apiGroup: rbac.authorization.k8s.io
EOF
kubectl apply -f test4user-role-bind.yaml

测试验证

kubectl get pods
kubectl get pods -n default
kubectl get pods -n kube-system
kubectl get nodes

http://www.kler.cn/a/513170.html

相关文章:

  • 常用排序算法之插入排序
  • 如何在oracle关闭情况下如何修改spfile的参数
  • vue3+ts+uniapp 微信小程序(第一篇)—— 微信小程序定位授权,位置信息权限授权
  • Python绘制数据地图-MovingPandas
  • 三格电子——MODBUS TCP 转 CANOpen 协议网关
  • Docker配置国内镜像源
  • 机器学习-核函数(Kernel Function)
  • 使用xorriso v1.5.2和grub4dos 0.4.6a -2024-02-26制作可启动ISO文件
  • 《Keras 3 使用 Reptile 进行 Few-Shot 学习》
  • SSL证书的颁发格式和制作过
  • 第四天 安装DevEco Studio,配置HarmonyOS开发环境
  • 【集合】单列集合和双列集合
  • OpenCV简介、OpenCV安装
  • 25届自动化考研复试微机原理基础版题库
  • Y3编辑器2.0功能指引
  • js手写-实现Promise的实例方法
  • 深度学习中梯度的补充理解
  • 《探秘鸿蒙Next:如何保障AI模型轻量化后多设备协同功能一致》
  • Jira中bug的流转流程
  • mybatis plus 中 使用 updateById或updateBatchById 更新字段为null 不更新问题
  • 虚幻基础-1:cpu挑选(14600kf)
  • 【FPGA】MIPS 12条整数指令【1】
  • html,css,js的粒子效果
  • 【Elasticsearch】Elasticsearch文档操作
  • IoTDB 1.2 升级 1.3 后 Pipe 插件失效
  • vif-方差膨胀因子计算