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.pswp.cn/news/896011.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/896011.shtml
英文地址,請注明出處:http://en.pswp.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…