简单一点
  • 首页
  • 技术教程
  • 网络资源
  • 软件工具
  • 随心所欲
  • 编程笔记
  • 问答社区
  • 单词库
  1. 简单一点首页
  2. 编程

k8s Service Account详解

小蓝 • 2024-12-21 13:03 • 编程

一、Service Account的基本概念

在 Kubernetes 中,所有的 Pod 的运行都是在一个 Namespace 中,不同的 Namespace 中的 Pod 是相互隔离的。为了让 Pod 在 Kubernetes 中安全地运行,Kubernetes 引入了 Service Account 的概念。Service Account 是一个资源对象,它提供了一个安全的方式让 Pod 访问其它 Kubernetes API。

Service Account 可以使用 Kubernetes API 自身进行身份验证,同时还可以分配所需的角色(可以访问那些资源),从而提供 Kubernetes 集群中的访问控制。在 Kubernetes 集群中,每个命名空间都能够包含一个 “default” Service Account。


apiVersion: v1
kind: ServiceAccount 
metadata: 
  name: my-serviceaccount

二、Service Account 的创建、删除及更新

可以使用 kubectl 命令行工具创建 Service Account:


$ kubectl create serviceaccount my-serviceaccount
serviceaccount "my-serviceaccount" created

也可以使用以下 YAML 定义创建:


apiVersion: v1
kind: ServiceAccount 
metadata: 
  name: my-serviceaccount

要删除 Service Account:


$ kubectl delete serviceaccount my-serviceaccount
serviceaccount "my-serviceaccount" deleted

更新 Service Account 中的字段(比如 annotations):


$ kubectl patch serviceaccount my-serviceaccount -p '{"metadata": {"annotations":{"description" :"This is my service account"}}}' 

三、Service Account 与 RBAC

要访问 Kubernetes API,必须将 Service Account 分配给拥有访问 Kubernetes API 的角色。在授权时,需要区分不同的角色,给予他们适当的访问权限。这就是 RBAC(Role-Based Access Control):通过策略来限制授权访问。

首先,需要确定哪些角色可以访问 Kubernetes API。可以使用 Role 或 ClusterRole 定义需要访问的资源和操作。这些资源和操作通常在单个 Namespace 中可见,对于跨 Namespace 的操作需要 ClusterRole。

然后,需要为需要访问 Kubernetes API 的 Service Account 分配这些角色。这可以使用 RoleBinding 或 ClusterRoleBinding 完成。


apiVersion: rbac.authorization.k8s.io/v1
kind: Role 
metadata: 
  name: serviceaccount-reader
rules: 
- apiGroups: [""]
  resources: ["serviceaccounts"]
  verbs: ["get", "watch", "list"]
  
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding 
metadata: 
  name: serviceaccount-reader-binding
roleRef: 
  apiGroup: rbac.authorization.k8s.io
  kind: Role
  name: serviceaccount-reader
subjects: 
- kind: ServiceAccount
  name: my-serviceaccount

四、使用 Service Account 的 Pod

在创建 Pod 时,可以指定要使用的 Service Account,也可以使用默认 Service Account。可以使用以下 YAML 定义 Pod:


apiVersion: v1
kind: Pod
metadata:
  name: my-pod
spec:
  serviceAccountName: my-serviceaccount
  containers:
  - name: my-container
    image: nginx

上面的 YAML 定义了一个名为 my-pod 的 Pod,并使用了名为 my-serviceaccount 的 Service Account。Pod 还创建了一个名为 my-container 的容器,使用了 nginx 镜像。

五、总结

Service Account 是 Kubernetes 提供的微服务身份验证的一种方式。通过分配角色,Service Account 可以访问 Kubernetes API,并提供自动化身份验证。每个命名空间均可拥有一个默认 Service Account。RBAC 可以帮助限制不同 Service Account 对 Kubernetes 资源和操作的访问权限。

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/280341.html

AccountK8sService详解
赞 (0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
0
生成海报
java语言杨辉三角,java写杨辉三角
上一篇 2024-12-21 13:03
CMS在线识别:如何让你的网站更具吸引力和可访问性?
下一篇 2024-12-21 13:03

相关推荐

  • 如何解决Docker+k8s报错413 Request Entity Too Large

    对于使用Docker容器和Kubernetes集群的开发人员,在处理HTTP请求时,常常会遇到413 Request Entity Too Large的报错。这通常是由于请求的大小…

    编程 2025-04-27
  • k8s节点设置cpu高于多少就不调度

    本文将从以下几个方面详细阐述k8s节点设置cpu高于多少就不调度的相关内容: 一、k8s节点设置的概念和原理 k8s是Google开源的容器集群管理系统,用于自动化部署、扩展和管理…

    编程 2025-04-27
  • 神经网络代码详解

    神经网络作为一种人工智能技术,被广泛应用于语音识别、图像识别、自然语言处理等领域。而神经网络的模型编写,离不开代码。本文将从多个方面详细阐述神经网络模型编写的代码技术。 一、神经网…

    编程 2025-04-25
  • Linux sync详解

    一、sync概述 sync是Linux中一个非常重要的命令,它可以将文件系统缓存中的内容,强制写入磁盘中。在执行sync之前,所有的文件系统更新将不会立即写入磁盘,而是先缓存在内存…

    编程 2025-04-25
  • Linux修改文件名命令详解

    在Linux系统中,修改文件名是一个很常见的操作。Linux提供了多种方式来修改文件名,这篇文章将介绍Linux修改文件名的详细操作。 一、mv命令 mv命令是Linux下的常用命…

    编程 2025-04-25
  • nginx与apache应用开发详解

    一、概述 nginx和apache都是常见的web服务器。nginx是一个高性能的反向代理web服务器,将负载均衡和缓存集成在了一起,可以动静分离。apache是一个可扩展的web…

    编程 2025-04-25
  • 详解eclipse设置

    一、安装与基础设置 1、下载eclipse并进行安装。 2、打开eclipse,选择对应的工作空间路径。 File -> Switch Workspace -> [选择…

    编程 2025-04-25
  • Python安装OS库详解

    一、OS简介 OS库是Python标准库的一部分,它提供了跨平台的操作系统功能,使得Python可以进行文件操作、进程管理、环境变量读取等系统级操作。 OS库中包含了大量的文件和目…

    编程 2025-04-25
  • MPU6050工作原理详解

    一、什么是MPU6050 MPU6050是一种六轴惯性传感器,能够同时测量加速度和角速度。它由三个传感器组成:一个三轴加速度计和一个三轴陀螺仪。这个组合提供了非常精细的姿态解算,其…

    编程 2025-04-25
  • Python输入输出详解

    一、文件读写 Python中文件的读写操作是必不可少的基本技能之一。读写文件分别使用open()函数中的’r’和’w’参数,读取文件…

    编程 2025-04-25

发表回复

请登录后评论...
登录后才能评论
小蓝
小蓝

这个人很懒,什么都没有留下~

最近文章

  • 探究request.session()
  • 深入浅出JS解构赋值
  • Python函数编写:提高代码模块性和重复利用性
  • javajson聚合(java组合和聚合)
  • mysql数据库中间表如何设计,mysql数据库表的设计

可能喜欢

  • AI Logo 制作工具 LogoAI.ai,快速生成高质量 Logo

    AI Logo 制作工具 LogoAI.ai,快速生成高质量 Logo

  • 可灵AI悄然上线独立APP!

    可灵AI悄然上线独立APP!

  • Epic免费领游戏:荒野的召唤:垂钓者+无敌少侠:原子伊芙

    Epic免费领游戏:荒野的召唤:垂钓者+无敌少侠:原子伊芙

  • 提升敲命令体验的 Raycast 插件:快命令

    提升敲命令体验的 Raycast 插件:快命令

  • krenz平面设计构成色彩第12期

    krenz平面设计构成色彩第12期

  • 4核8G云服务器适合装宝塔MySQL 那个版本

    4核8G云服务器适合装宝塔MySQL 那个版本

  • 0基础入门实战深度学习Pytorch

    0基础入门实战深度学习Pytorch

  • NAS性能CPU天梯图:你的NAS排名如何?

    NAS性能CPU天梯图:你的NAS排名如何?

  • 在Steam上体验《黑神话悟空》的最经济便宜购买途径

    在Steam上体验《黑神话悟空》的最经济便宜购买途径

  • 一款去中心化的 YouTube 弹幕插件

    一款去中心化的 YouTube 弹幕插件

  • Base64编码解码
  • 剪映字幕导出工具
  • 导入剪映字幕工具

Copyright © 2024 简单一点 版权所有 滇ICP备2024022404号-1 Powered by 506064.Com