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

k8s-ServiceAccount 配置

在 Kubernetes 中
ServiceAccount 是一种为 Pod 提供身份认证的机制,允许 Pod 以特定的身份访问 Kubernetes API 服务器。
**Role(角色)**是 Kubernetes 中定义权限的资源对象,它只能在特定的命名空间内生效。Role 用于定义一组权限规则,这些规则定义了可以对 Kubernetes 资源执行的操作。
**RoleBinding(角色绑定)**是将 Role 分配给用户、组或 ServiceAccount 的资源对象。它定义了哪些主体(用户、组或服务账号)可以使用特定的 Role。
ClusterRole(集群角色) ClusterRole 与 Role 类似,但它定义的权限规则可以在整个集群范围内生效,而不是局限于某个命名空间。
ClusterRoleBinding(集群角色绑定) ClusterRoleBinding 是将 ClusterRole 分配给用户、组或 ServiceAccount 的资源对象。它定义了哪些主体可以使用特定的 ClusterRole。

以下是 ServiceAccount 的配置方法和使用指南:
1.创建 ServiceAccount
ServiceAccount 可以通过 kubectl 命令或 YAML 文件创建。
通过命令行创建:

kubectl create serviceaccount <service-account-name> --namespace=<namespace>

例如:

kubectl create serviceaccount my-service-account --namespace=default

通过 YAML 文件创建:
创建一个名为 service-account.yaml 的文件,内容如下:

apiVersion: v1
kind: ServiceAccount
metadata:name: my-service-accountnamespace: default

然后运行以下命令应用配置:

kubectl apply -f service-account.yaml

2.为 ServiceAccount 分配权限
ServiceAccount 需要与角色(Role 或 ClusterRole)结合使用,通过 RoleBinding 或 ClusterRoleBinding 来分配权限。
创建 Role:
创建一个名为 role.yaml 的文件,定义 Role 的权限:

apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:namespace: defaultname: pod-reader
rules:
- apiGroups: [""]resources: ["pods"]verbs: ["get", "watch", "list"]

然后应用该 Role:

kubectl apply -f role.yaml

创建 RoleBinding:
创建一个名为 rolebinding.yaml 的文件,将 Role 绑定到 ServiceAccount:

apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:name: pod-reader-bindingnamespace: default
subjects:
- kind: ServiceAccountname: my-service-accountnamespace: default
roleRef:kind: Rolename: pod-readerapiGroup: rbac.authorization.k8s.io

然后应用该 RoleBinding:

kubectl apply -f rolebinding.yaml

3.将 ServiceAccount 分配给 Pod
Pod 可以通过 spec.serviceAccountName 字段指定使用某个 ServiceAccount。
Pod 定义中指定 ServiceAccount:

apiVersion: v1
kind: Pod
metadata:name: my-pod
spec:serviceAccountName: my-service-accountcontainers:- name: my-containerimage: my-image

4.配置 ServiceAccount 的 Token
ServiceAccount 的 Token 是一个自动创建的 Secret,用于 Pod 访问 Kubernetes API。
查看 ServiceAccount 的 Token:

kubectl get secrets

或者

kubectl describe serviceaccount my-service-account

手动创建 Token:
如果需要手动创建一个 Token,可以使用以下命令:

kubectl create token my-service-account

5.配置 ImagePullSecrets
如果需要从私有镜像仓库拉取镜像,可以将 ImagePullSecrets 添加到 ServiceAccount。
创建 ImagePullSecrets:

kubectl create secret docker-registry my-secret \--docker-server=registry.example.com \--docker-username=admin \--docker-password=pass123

将 ImagePullSecrets 添加到 ServiceAccount:

apiVersion: v1
kind: ServiceAccount
metadata:name: my-service-account
imagePullSecrets:
- name: my-secret
http://www.xdnf.cn/news/567307.html

相关文章:

  • spring5-配外部文件-spEL-工厂bean-FactoryBean
  • 【疑难杂症】Mysql 无报错 修改配置文件后服务启动不起来 已解决|设置远程连接
  • Redis SETNX:分布式锁与原子性操作的核心
  • Docker run命令-p参数详解
  • Python打卡训练营day28-类的定义与方法
  • 2021-04-12 VSC++: 寻找N以内的亲密数对。(求因子和)
  • 【Node.js】Web开发框架
  • 牛客网NC15869:长方体边长和计算问题解析
  • Python中的常量和变量分别是怎么定义的?
  • 【QT】在界面A打开界面B时,界面A隐藏,界面B关闭时,界面A复现
  • chromedp -—— 基于 go 的自动化操作浏览器库
  • Redis 的 key 的过期策略是怎么实现的
  • Redis String 设计思想深度解析
  • 系统架构设计师案例分析题——数据库缓存篇
  • 解除diffusers库的prompt长度限制(SDXL版)
  • ArcGIS Pro 3.4 二次开发 - 核心主机
  • Linux yq 命令使用详解
  • 【Qt】QImage实战
  • 一文读懂迁移学习:从理论到实践
  • Git Clone 原理详解:为什么它比本地文件复制更快? -优雅草卓伊凡
  • word格式相关问题
  • C语言——函数递归与迭代
  • 微调后的模型保存与加载
  • Android13 wifi设置国家码详解
  • 结课作业01. 用户空间 MPU6050 体感鼠标驱动程序
  • SuperVINS:应对挑战性成像条件的实时视觉-惯性SLAM框架【全流程配置与测试!!!】【2025最新版!!!!】
  • flink 提交流程
  • 基于Flink的数据中台管理平台
  • CNN手写数字识别/全套源码+注释可直接运行
  • 基于moonshot模型的Dify大语言模型应用开发核心场景