Kubernetes控制平面组件:APIServer 基于 引导Token 的认证机制

云原生学习路线导航页(持续更新中)

  • kubernetes学习系列快捷链接
    • Kubernetes架构原则和对象设计(一)
    • Kubernetes架构原则和对象设计(二)
    • Kubernetes架构原则和对象设计(三)
    • Kubernetes控制平面组件:etcd(一)
    • Kubernetes控制平面组件:etcd(二)
    • Kubernetes控制平面组件:etcd常用配置参数
    • Kubernetes控制平面组件:etcd高可用集群搭建
    • Kubernetes控制平面组件:etcd高可用解决方案
    • Kubernetes控制平面组件:Kubernetes如何使用etcd
    • kubectl 和 kubeconfig 基本原理
    • kubeadm 升级 k8s集群 1.17到1.20
    • Kubernetes常见问题解答
    • 查看云机器的一些常用配置

本文主要对kubernetes API Server 认证机制中的 引导Token 认证方式进行介绍,包括 引导Token 的设计理念、实现原理、认证流程,以及在 Kubernetes 中的具体应用

1.引导Token的认证方式简介

  • Kubernetes 的引导 Token(Bootstrap Token)认证是一种用于简化集群节点加入和初始化的机制。
  • 它允许新节点或组件通过临时 Token 加入集群,并在完成初始化后自动失效。
  • 这种方式常用于集群的自动化部署和扩展。

2.引导 Token 认证的工作原理

  • 引导 Token 是一种短期的、临时的 Token,用于以下场景

    • 节点加入集群:新节点使用引导 Token 向 API Server 认证并加入集群。
    • 初始化组件:如 kubeadm 初始化集群时,使用引导 Token 完成初始配置。
  • 引导 Token 的特点:

    • 短期有效:Token 有明确的过期时间,通常为 24 小时。
    • 自动失效:使用后会自动失效,避免长期暴露。
    • RBAC 支持:可以为引导 Token 绑定特定的 RBAC 权限,限制其使用范围。

3.引导 Token 的结构

  • 引导 Token 是一个由两部分组成的字符串,格式为:<token-id>.<token-secret>
    • 例如:abcdef.0123456789abcdef
    • Token ID:6 个字符的随机字符串,用于标识 Token。
    • Token Secret:16 个字符的随机字符串,用于验证 Token。

4.创建引导 Token

4.1.使用 kubeadm 创建引导 Token

kubeadm 提供了创建和管理引导 Token 的工具。

kubeadm token create

输出示例:

abcdef.0123456789abcdef

4.2.查看已创建的 Token

kubeadm token list

输出示例:

TOKEN                     TTL       EXPIRES                USAGES                   DESCRIPTION   EXTRA GROUPS
abcdef.0123456789abcdef   23h       2025-02-19T12:34:56Z   authentication,signing   <none>        system:bootstrappers:kubeadm:default-node-token

4.3.手动创建引导 Token

  • 如果需要手动创建引导 Token,可以按照以下步骤操作:

    • 生成 Token ID 和 Token Secret:

      TOKEN_ID=$(head -c 6 /dev/urandom | base64 | tr -d '/+' | head -c 6)
      TOKEN_SECRET=$(head -c 16 /dev/urandom | base64 | tr -d '/+' | head -c 16)
      BOOTSTRAP_TOKEN="${TOKEN_ID}.${TOKEN_SECRET}"
      echo "Bootstrap Token: ${BOOTSTRAP_TOKEN}"
      
    • 将 Token 写入 Kubernetes Secret:

      kubectl create secret generic bootstrap-token-${TOKEN_ID} \--namespace=kube-system \--type=bootstrap.kubernetes.io/token \--from-literal=token-id=${TOKEN_ID} \--from-literal=token-secret=${TOKEN_SECRET} \--from-literal=usage-bootstrap-authentication=true \--from-literal=usage-bootstrap-signing=true \--from-literal=expiration=$(date -d "+24 hours" -u +"%Y-%m-%dT%H:%M:%SZ")
      

5.使用引导 Token 加入集群

5.1.获取集群信息

  • 在 Master 节点上运行以下命令,获取集群的 CA 证书哈希和 API Server 地址:
    openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'
    kubectl cluster-info
    

5.2.在新节点上使用引导 Token 加入集群

  • 在新节点上运行以下命令,使用引导 Token 加入集群:

    kubeadm join <api-server-address>:<port> \--token <bootstrap-token> \--discovery-token-ca-cert-hash sha256:<ca-cert-hash>
    
  • 例如:

    kubeadm join 192.168.1.100:6443 \--token abcdef.0123456789abcdef \--discovery-token-ca-cert-hash sha256:1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef
    

6.引导 Token 的 RBAC 配置

  • 引导 Token 默认绑定到 system:bootstrappers:kubeadm:default-node-token 组,可以通过 RBAC 为其分配权限。

  • 例如,为新节点分配必要的权限:

    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRoleBinding
    metadata:name: kubeadm:node-autoapprove-bootstrap
    roleRef:apiGroup: rbac.authorization.k8s.iokind: ClusterRolename: system:node-bootstrapper
    subjects:
    - apiGroup: rbac.authorization.k8s.iokind: Groupname: system:bootstrappers:kubeadm:default-node-token
    

7.引导 Token 的过期和清理

  • 引导 Token 在过期后会自动失效,也可以通过以下命令手动删除:
    kubeadm token delete <token-id>
    
  • 例如:
    kubeadm token delete abcdef
    

8.总结

  • 引导 Token 认证是 Kubernetes 中一种简单且安全的机制,适用于集群节点的初始化和自动化部署。
  • 通过 kubeadm 工具可以轻松创建和管理引导 Token,并结合 RBAC 实现权限控制。
  • 在实际操作中,建议:
    • 定期清理过期的 Token。
    • 结合自动化工具(如 Ansible、Terraform)实现集群的自动化部署。
    • 在生产环境中使用更安全的认证方式(如 TLS 证书)替代引导 Token。

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

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

相关文章

DeepSeek 助力 Vue 开发:打造丝滑的缩略图列表(Thumbnail List)

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;今天给大家分享一篇文章&#xff01;并提供具体代码帮助大家深入理解&#xff0c;彻底掌握&#xff01;创作不易&#xff0c;如果能帮助到大家或者给大家一些灵感和启发&#xff0c;欢迎收藏关注哦 &#x1f495; 目录 Deep…

DeepSeek写俄罗斯方块手机小游戏

DeepSeek写俄罗斯方块手机小游戏 提问 根据提的要求&#xff0c;让DeepSeek整理的需求&#xff0c;进行提问&#xff0c;内容如下&#xff1a; 请生成一个包含以下功能的可运行移动端俄罗斯方块H5文件&#xff1a; 核心功能要求 原生JavaScript实现&#xff0c;适配手机屏幕 …

百问网(100ask)的IMX6ULL开发板的以太网控制器(MAC)与物理层(PHY)芯片(LAN8720A)连接的原理图分析(包含各引脚说明以及工作原理)

前言 本博文承接博文 https://blog.csdn.net/wenhao_ir/article/details/145663029 。 本博文和博文 https://blog.csdn.net/wenhao_ir/article/details/145663029 的目录是找出百问网(100ask)的IMX6ULL开发板与NXP官方提供的公板MCIMX6ULL-EVK(imx6ull14x14evk)在以太网硬件…

QT开发技术 【opencv图片裁剪,平均哈希相似度判断,以及获取游戏窗口图片】

一、图片裁剪 int CJSAutoWidget::GetHouseNo(cv::Mat matMap) {cv::imwrite(m_strPath "/Data/map.png", matMap);for (int i 0; i < 4; i){for (int j 0; j < 6; j){// 计算当前子区域的矩形cv::Rect roi(j * 20, i * 17, 20, 17);// 提取子区域cv::Mat …

TiDB 是一个分布式 NewSQL 数据库

TiDB 是一个分布式 NewSQL 数据库。它支持水平弹性扩展、ACID 事务、标准 SQL、MySQL 语法和 MySQL 协议&#xff0c;具有数据强一致的高可用特性&#xff0c;是一个不仅适合 OLTP 场景还适合 OLAP 场景的混合数据库。 TiDB是 PingCAP公司自主设计、研发的开源分布式关系型数据…

请解释 Vue 中的生命周期钩子,不同阶段触发的钩子函数及其用途是什么?

vue生命周期钩子详解&#xff08;Vue 3版本&#xff09; 一、生命周期阶段划分 Vue组件的生命周期可分为四大阶段&#xff0c;每个阶段对应特定钩子函数&#xff1a; 创建阶段&#xff1a;初始化实例并准备数据挂载阶段&#xff1a;将虚拟DOM渲染为真实DOM更新阶段&#xff…

计算机专业知识【深入理解子网中的特殊地址:为何 192.168.0.1 和 192.168.0.255 不能随意分配】

在计算机网络的世界里&#xff0c;IP 地址是设备进行通信的关键标识。对于常见的子网&#xff0c;如 192.168.0.0/24&#xff0c;我们可能会疑惑为何某些地址不能分配给主机使用。接下来&#xff0c;我们就以 192.168.0.0/24 为例&#xff0c;详细解释为何 192.168.0.1 和 192.…

软件架构设计:软件工程

一、软件工程概述 软件工程的定义 软件工程是应用系统化、规范化、可量化的方法开发、运行和维护软件。 软件工程的目标 提高软件质量、降低开发成本、缩短开发周期。 软件生命周期 瀑布模型&#xff1a;需求分析→设计→编码→测试→维护。迭代模型&#xff1a;分阶段迭代开…

mysql 学习15 SQL优化,插入数据优化,主键优化,order by优化,group by 优化,limit 优化,count 优化,update 优化

插入数据优化&#xff0c; insert 优化&#xff0c; 批量插入&#xff08;一次不超过1000条&#xff09; 手动提交事务 主键顺序插入 load 从本地一次插入大批量数据&#xff0c; 登陆时 mysql --local-infile -u root -p load data local infile /root/sql1.log into table tb…

达梦数据库针对慢SQL,收集统计信息清除执行计划缓存

前言&#xff1a;若遇到以下场景&#xff0c;大概率是SQL走错了执行计划&#xff1a; 1、一条SQL在页面上查询特别慢&#xff0c;但拿到数据库终端执行特别快 2、一条SQL在某种检索条件下查询特别慢&#xff0c;但拿到数据库终端执行特别快 此时&#xff0c;可以尝试按照下述步…

使用JWT实现微服务鉴权

目录 一、微服务鉴权 1、思路分析 2、系统微服务签发token 3、网关过滤器验证token 4、测试鉴权功能 前言&#xff1a; 随着微服务架构的广泛应用&#xff0c;服务间的鉴权与安全通信成为系统设计的核心挑战之一。传统的集中式会话管理在分布式场景下面临性能瓶颈和扩展性…

广西壮族自治区园区投促中心党委书记陶德文率团到访深兰科技

2月16日&#xff0c;广西壮族自治区园区投促中心党委书记、主任&#xff0c;自治区园区办党组成员陶德文率团来到深兰科技集团上海总部考察调研&#xff0c;并与深兰科技集团创始人、董事长陈海波等集团管理层座谈交流&#xff0c;双方围绕深兰科技人工智能项目落地广西的相关事…

基于UnrealEngine(UE5)的太空探索

视频部分可参见&#xff1a;https://www.bilibili.com/video/BV1JWA8eSEVg/ 中国 天宫号 空间站 人造卫星可视化 星链卫星可视化 小行星分布及运动轨迹可视化 月球基地 可视化 八大行星轨道 太阳系宜居带可视化 阿波罗8号拍摄的地球升起 谷神星模型及轨迹可视化 星座可视化 十…

WLAN无线2.4G/5G频段划分和可用信道

互联网各领域资料分享专区(不定期更新)&#xff1a; Sheet

使用 OpenTelemetry 和 Langtrace 的 Elastic 分发跟踪基于 RAG 的聊天机器人

作者&#xff1a;来自 Elastic Bahubali Shetti 如何使用 Elastic 观察基于 OpenAI RAG 的应用程序。使用 Langtrace 对应用程序进行检测&#xff0c;收集日志、跟踪、指标&#xff0c;并了解 LLM 在 Kubernetes 上使用 OpenTelemetry 的 Elastic Distributions 的运行情况。 目…

基于机器学习的水文数据采集预测与可视化分析系统

【机器学习】基于机器学习的水文数据采集预测与可视化分析系统&#xff08;完整系统源码开发笔记详细部署教程&#xff09;✅ 目录 一、项目简介二、项目界面展示三、项目视频展示 一、项目简介 系统采用Python及Flask框架构建Web服务端&#xff0c;结合PyMySQL与MySQL实现数据…

三甲医院网络架构与安全建设实战

一、设计目标 实现医疗业务网/卫生专网/互联网三网隔离 满足等保2.0三级合规要求 保障PACS影像系统低时延传输 实现医疗物联网统一接入管控 二、全网拓扑架构 三、网络分区与安全设计 IP/VLAN规划表 核心业务配置&#xff08;华为CE6865&#xff09; interface 100G…

MySQL如何解决幻读?

目录 一、什么是幻读&#xff1f; 1.1 幻读的定义 1.2 幻读的示例 1.3 幻读产生的原因&#xff1f; 1.4?读已提交&#xff08;Read Committed&#xff09; 1.4.1 确定事务等级 1.4.2 非锁定读取 准备 示例 结论 1.4.3 锁定读取 准备 示例 分析 结论 1.5?可重…

Openssl之SM2加解密命令

### 1. 生成 SM2 私钥openssl genpkey -algorithm EC \-pkeyopt ec_paramgen_curve:sm2 \-out sm2_private_key.pem### 2. 从私钥导出 SM2 公钥openssl pkey -in sm2_private_key.pem \-pubout \-out sm2_public_key.pem### 3. 使用 SM2 公钥加密openssl pkeyutl -encrypt \-pu…