Kubernetes配置管理

目錄

  • 什么是ConfigMap
  • 創建ConfigMap
      • 1:基于目錄創建ConfigMap
        • 1.創建conf目錄,放置文件
        • 2.基于目錄下的所有文件創建ConfigMap
        • 3.查看當前創建的ConfigMap
      • 2:基于文件創建ConfigMap
        • 1.單個文件創建ConfigMap
        • 2.使用帶有key的命令創建ConfigMap
        • 3.多個文件創建ConfigMap
      • 3:基于ENV文件創建ConfigMap
        • 1.創建測試用的key-value文件
        • 2.創建ConfigMap
      • 4:基于字符值創建ConfigMap
      • 5:刪除創建的ConfigMap
  • ConfigMap實踐
      • 1:使用valueFrom定義容器的環境變量
        • 1.先以字符集的形式創建ConfigMap
        • 2.使用valueFrom從ConfigMap中定義變量
        • 3.創建此pod
      • 2:使用envFrom定義容器的環境變量
        • 1.使用envFrom從ConfigMap中定義變量
        • 2.創建此pod
      • 3:以文件形式掛載ConfigMap
        • 1.使用帶有key的命令創建ConfigMap
        • 2.編寫文件,將名為spec-config的ConfigMap掛載到容器的/etc/conf目錄下
        • 3.登錄容器
      • 4:自定義文件名掛載ConfigMap
        • 1.編寫pod文件
        • 2.創建此pod
        • 3.登錄容器
      • 5:指定掛載文件權限
        • 1.編寫pod文件
        • 2.創建此pod
        • 3.登錄容器
      • 6:利用SubPath解決掛載覆蓋的問題
        • 1.創建配置文件
        • 2.使用帶有key的命令創建ConfigMap
        • 3.創建pod文件,掛載文件
        • 4.登錄容器
  • 加密數據管理
      • 1:創建secret
        • 1.使用kubectl命令創建secret
        • 2.通過yaml文件創建secret
      • 2:解碼secret
      • 3:在pod中應用secret

什么是ConfigMap

在傳統架構中,配置文件往往被保存在宿主機上,程序啟動是可以指定某個配置文件,但是使用容器部署時,容器所在的節點并不固定,所以不能使用這種方式,此處在構建鏡像時,如果把配置文件也放在容器里面,那么配置文件一旦有更改的話,也是一件非常麻煩的事情。所以k8s 抽象了一個configMap的概念,將配置與 pod 和組件分開,這有助于保持工作負載的可移植性,使配置更易于更改和管理。比如在生產環境中,可以將 Nginx、Redis 等應用的配置文件存儲在 configMap 上,然后將其掛載即可使用。
相對于 secret,ConfigMap 更傾向于存儲和共享非敏感、未加密的配置信息,假如是集群中使用敏感信息,最好使用 secret。
ConfigMap 用來在鍵值對數據庫(etcd)中保存非加密數據。一般用來保存配置文件。
ConfigMap 可以用作環境變量、命令行參數或者存儲卷。
ConfigMap 將環境配置信息與 容器鏡像 解耦,便于配置的修改。
ConfigMap 在設計上不是用來保存大量數據的。
ConfigMap中保存的數據不可超過1mb。

創建ConfigMap

ConfigMap 可以用目錄(目錄下有多個文件)、單個文件或字符值的方式創建,使用 kubect1 創建一個 ConfigMap 的命令格式如下:

kubectl create configmap <map-name><data-source>

map-name:ConfigMap 的名稱
data-source:數據源,可以使數據的目錄、文件或字符值
ConfigMap 中的數據是以鍵值對(key-value pair)的形式保存的,其中🔑文件名或秘鑰
value:文件內容或字符值

1:基于目錄創建ConfigMap

假如一次性需要多個文件來創建 ConfigMap,可以使用 kubectl create configmap 命令從同一個
目錄中的多個文件創建 configMap。

1.創建conf目錄,放置文件

在這里插入圖片描述

2.基于目錄下的所有文件創建ConfigMap

在這里插入圖片描述
注意:
ConfigMap 是按namespace 隔離的,不同的namespace 之間的configMap 的名稱可以相同,但是不能跨namespace 進行訪問,創建ConfigMap 時,可以使用-n選項指定資源所在的namespace。

3.查看當前創建的ConfigMap

在這里插入圖片描述
注意:
由于該 ConfigMap 是直接基于目錄創建的,沒有指定 ConfigMap 中的 key 名,因此默認是按照目錄下的文件名作為 ConfigMap 數據中的 key 名。

2:基于文件創建ConfigMap

1.單個文件創建ConfigMap

在這里插入圖片描述
注意:
由于沒有指定 ConfigMap 的 key,因此使用文件名作為 key。

2.使用帶有key的命令創建ConfigMap

在這里插入圖片描述

3.多個文件創建ConfigMap

在這里插入圖片描述

3:基于ENV文件創建ConfigMap

假如有一個文件 game-env-file.cfg,里面存儲的 key=value 形式的數據,此類文件可以當做某個應用的環境變量配置,此時可以使用–from-env-file 從 ENV 文件創建 configMap。

1.創建測試用的key-value文件

在這里插入圖片描述

2.創建ConfigMap

在這里插入圖片描述

4:基于字符值創建ConfigMap

利用字符值創建ConfigMap
在這里插入圖片描述

5:刪除創建的ConfigMap

在這里插入圖片描述

ConfigMap實踐

本實踐案例將 CM 創建的變量引入到 pod 內。
在 kubernetes 中,用戶可以使用環境變量引用 ConfigMap 中的數據,當容器啟動時,kubernetes會將 configMap 數據作為環境變量注入到容器的進程中。為了使用 configMap 中的數據,用戶需要在 pod的規范(spec)中定義一個 env 字段,并指定 configMap 中的“鍵值對”

1:使用valueFrom定義容器的環境變量

1.先以字符集的形式創建ConfigMap

在這里插入圖片描述

2.使用valueFrom從ConfigMap中定義變量

在這里插入圖片描述
在此案例中,env 用于定義環境變量,valueFrom 指定了環境變量的值來源于ConfigMap。“name:my-name01”用于定義容器中用的變量名,其值來自于 CM 中的 name1 的值。“name1”是在 CM 中定義的 key。
用 valueFrom 的方式引入 pod 中的變量名,可以在定義 pod 的之后指定成另一個名稱。相當于在 pod中起了一個新的名字,但是值還是原來 ConfigMap 中給定的值。

3.創建此pod

在這里插入圖片描述

2:使用envFrom定義容器的環境變量

k8s 從 1.6的版本開始,引入了一個新的字段 envFrom,實現了在 Pod 中將 configMap 中所有定義的key=value 自動生成為環境變量。
使用 envFrom 時,環境變量的名字是 configMap 中數據的 key 名。

備注:valueFrom 和envfrom的區別
通過 valueFrom 來配置環境變量,Pod 的環境變量名與 configMap 中定義的變量名不必相同valueFrom 是指定變量進行映射。
通過 envFrom 會把 configMap 的所有鍵值對都映射到 Pod 的環境變量中去envFrom 配置的環境變量和 Pod 的環境變量名是相同的

1.使用envFrom從ConfigMap中定義變量

在這里插入圖片描述

2.創建此pod

在這里插入圖片描述
在這里插入圖片描述

3:以文件形式掛載ConfigMap

大部分情況下,ConfigMap 定義的都是配置文件,而不是環境變量,因此需要將 ConfigMap 的文件掛載到 Pod 中,然后 Pod 中的容器就可以引用,此時可以通過 Pod 的 volume 字段進行掛載。

1.使用帶有key的命令創建ConfigMap

在這里插入圖片描述

2.編寫文件,將名為spec-config的ConfigMap掛載到容器的/etc/conf目錄下

在這里插入圖片描述
在這里插入圖片描述注意:
容器的/etc/config 目錄會被覆蓋掉

3.登錄容器

在這里插入圖片描述

4:自定義文件名掛載ConfigMap

很多情況下,需要更改掛載的文件名,可以使用 path 字段指定 ConfigMap 掛載的文件名,比如將文件 app2.conf 掛載到/etc/conf 下,并重命名為 app2.cfg。

1.編寫pod文件

在這里插入圖片描述

2.創建此pod

在這里插入圖片描述

3.登錄容器

在這里插入圖片描述

5:指定掛載文件權限

1.編寫pod文件

在這里插入圖片描述
備注:
defaultMode:0666
沒有設置權限的其他文件默認的權限

2.創建此pod

在這里插入圖片描述

3.登錄容器

在這里插入圖片描述

6:利用SubPath解決掛載覆蓋的問題

當掛載 ConfigMap 或 Secret 到容器內部時,會覆蓋容器中的目錄,也就是是說,在容器中的對應的目錄中,就只剩下我們掛載進去的文件,此目錄中其他的文件都會丟失。從而導致容器無法正常運行。為了解決掛載覆蓋的問題,需要使用 subPath 的方式進行掛載。

1.創建配置文件

在這里插入圖片描述

2.使用帶有key的命令創建ConfigMap

在這里插入圖片描述
在這里插入圖片描述

3.創建pod文件,掛載文件

在這里插入圖片描述
備注:
mountPath 表示容器中目錄
subPath 表示configMap 中文件的key 名
items::這部分定義了如何將 configMap 中的鍵值對映射到文件系統中。
key: nginx.conf:這個鍵(key)是指 ConfigMap 中的一個鍵值對的鍵名,這里的鍵名是nginx.conf.
path:nginx.conf:這指定了當這個鍵被注入到容器的文件系統時,它將被寫入的具體路徑和文件名

在這里插入圖片描述

4.登錄容器

在這里插入圖片描述

加密數據管理

上一節講解的 ConfigMap 主要用于非安全的數據,與其對應的是 Secret 對象類型,用來保存敏感信息,例如密碼、令牌或 SSH Key,將這些信息放在 Serret 中比較安全和靈活。用戶可以創建 Secret 并且引用到 Pod 中,比如使用 Secre 初始化 Redres、MySQL 密碼等。

1:創建secret

1.使用kubectl命令創建secret

創建賬戶信息
在這里插入圖片描述
備注:
generic:通用類型
user-pass:創建的secret 的名字

查看Secret:
在這里插入圖片描述
備注:
Opaque:不透明的,表示 secret是加密的形式保存數據的
在這里插入圖片描述

在這里插入圖片描述
默認情況下,get 和 describe 命令都不會顯示文件的內容,這是為了防止 Secret 中的內容被意外暴露。所以,顯示出來的信息中 Data字段沒有對應的值,只顯示了文件的名字。

2.通過yaml文件創建secret

手動創建 Secret 時,每一項內容必須是 base64 編碼的,所以要先對明文進行編碼:
在這里插入圖片描述
在這里插入圖片描述
創建一個secret
在這里插入圖片描述

2:解碼secret

在這里插入圖片描述
在這里插入圖片描述

3:在pod中應用secret

secret 和 ConfigMap 的用法類似,也可以作為數據卷掛載,或作為環境變量以供 Pod 的容器使用。
和 configMap 一樣,可以在 Pod 的 volume 中使用 Secret:
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/90438.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/90438.shtml
英文地址,請注明出處:http://en.pswp.cn/web/90438.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

golang怎么實現每秒100萬個請求(QPS),相關系統架構設計詳解

一.需求 使用Golang,以Gin框架為基礎,設計一個能夠處理每秒100萬請求(QPS 1M)的系統架構 注意:100萬QPS是一個很高的數字,單機通常難以處理,所以必須采用分布式架構,并且需要多層次的架構設計和優化 二.搭建步驟 1.系統架構設計 為了實現高并發,需要考慮以下幾個方面…

HCIA再復習

第一章.網絡基礎1.1 網絡類型分類網絡按照二層鏈路類型分為以下四種&#xff1a;多點接入網絡&#xff08;MA&#xff09;&#xff1a;1&#xff0c;廣播型多點接入&#xff08;BMA&#xff09;&#xff1a;如以太網&#xff0c;支持廣播&#xff0c;設備通過MAC地址通信&#…

Qt 數據庫連接池實現與管理

在 Qt 應用程序中&#xff0c;頻繁創建和銷毀數據庫連接會帶來顯著的性能開銷。數據庫連接池通過復用現有連接&#xff0c;避免重復創建和銷毀連接的開銷&#xff0c;從而提高應用程序的響應速度和吞吐量。本文將詳細介紹 Qt 中數據庫連接池的實現與管理方法。 一、數據庫連接池…

數據采集分析:從信息洪流中掘金的科學與藝術

——如何將原始數據轉化為商業決策的黃金&#xff1f;&#x1f310; 引言&#xff1a;我們正淹沒在數據的海洋&#xff0c;卻渴求著知識的甘泉每天全球產生 2.5萬億字節 數據&#xff08;相當于每秒下載4.5萬部高清電影&#xff09;&#xff0c;但未經分析的數據如同未提煉的原…

Oracle國產化替代:一線DBA的技術決策突圍戰

從“如履薄冰”到“游刃有余”,中國數據庫的自主之路正重塑技術人的思維地圖。 “凌晨三點的最后一次數據校驗通過,割接系統綠燈全亮——**河北移動核心賬務系統的Oracle數據庫已被GoldenDB完全替代**。”2025年6月底,這場持續兩年的攻堅戰畫上句號。當全省業務流量平穩切…

OS19.【Linux】進程狀態(1)

目錄 1.情景引入 2.操作系統學科對進程狀態的分類 運行狀態 基于時間片的輪轉調度算法 阻塞狀態 等待IO設備的例子 等待其他進程中需要獲取的數據 進程喚醒 掛起狀態(全稱為阻塞掛起狀態) 簡單談談虛擬內存管理 就緒狀態 筆面試題 3.Linux對進程狀態的分類 R和S狀…

Hadoop小文件合并技術深度解析:HAR文件歸檔、存儲代價與索引結構

HDFS小文件問題的背景與挑戰在Hadoop分布式文件系統&#xff08;HDFS&#xff09;的設計哲學中&#xff0c;"大文件、流式訪問"是核心原則。然而現實場景中&#xff0c;海量小文件&#xff08;通常指遠小于HDFS默認塊大小128MB的文件&#xff09;的涌入卻成為系統性能…

Verilog 提取信號的上升沿或者下降沿

上升沿提取代碼&#xff1a;reg [1:0] F1;always (posedge clk)beginif(rst_n 1b0) F1[1:0]<2b00;else F1[1:0]<{F1[0],start_i};endwire start_l2h (F1[1:0]2b01)?1b1:1b0;下降沿提取代碼&#xff1a;reg [1:0] F1;always (posedge clk)b…

.Net core 部署到IIS出現500.19Internal Server Error 解決方法

.Net core 部署到IIS&#xff0c;網頁出現500.19Internal Server Error 解決方法解決方法 在URL:https://dotnet.microsoft.com/zh-tw/download/dotnet/8.0下載并安裝dotnet-hosting-8.0.18-win.exe 重啟IIS服務器

Linux 基本命令整理

&#x1f427; Linux 基本命令整理 為了方便初學者快速掌握 Linux 常用命令&#xff0c;以下是經過分類整理的核心命令及用法說明。 &#x1f4c2; 目錄操作與文件管理 pwd 核心功能&#xff1a;打印當前工作目錄的絕對路徑&#xff0c;明確用戶所在位置。 實操示例&#x…

牛客周賽 Round 101(題解的token計算, 76修地鐵 ,76選數,76構造,qcjj寄快遞,冪中冪plus)

A題解的token計算要記住c中的對數函數&#xff1a;log(n) 是自然對數&#xff08;以e為底&#xff09;ln(nlog10(n) 是以10為底的對log1p(n) 是ln(1n)&#xff0c;提供更高的數值精log2(n) 是以2為底的對logl(n) 和 log10l(n) 是long double版#define _CRT_SECURE_NO_WARNINGS …

商場導航軟件:3D+AI 基于Deepseek 模型的意圖識別技術解析

本文面向室內導航工程師、商場導航系統優化師及LBS 應用開發的技術員&#xff0c;解析商場室內導航系統 3DAI 三大核心技術模塊&#xff0c;并提供可直接復用的工程解決方案。如需獲取商場導航系統技術方案可前往文章最下方獲取&#xff0c;如有項目合作及技術交流歡迎私信作者…

借助Aspose.HTML控件,使用 Python 編程將網頁轉換為 PDF

使用 Python 將網頁轉換為 PDF 有時您需要離線訪問網頁&#xff0c;使其更易于訪問。因此&#xff0c;將HTML頁面轉換為PDF即可滿足您的需求。令人驚訝的是&#xff0c;您可以在幾秒鐘內在 Python 項目中啟用 HTML 到 PDF 的轉換。本指南將為 Python 開發人員介紹一個功能強大…

數據結構:找出字符串中重復的字符(Finding Duplicates in a String)——使用位運算

目錄 預備知識 左移運算&#xff08;<<&#xff09; 位運算 一、從最樸素的方法開始 二、如果只關心“有沒有出現過”&#xff0c;不關心“次數”&#xff0c;還能不能更省&#xff1f; 三、有沒有一種更“緊湊”的方式表示26個開關&#xff1f; 四、用一個整數的…

DevOps 完整實現指南:從理論到實踐

DevOps 是一種集軟件開發&#xff08;Dev&#xff09;與 IT 運維&#xff08;Ops&#xff09;于一體的文化、實踐和工具鏈&#xff0c;旨在通過自動化流程、持續集成/持續交付&#xff08;CI/CD&#xff09;、基礎設施即代碼&#xff08;IaC&#xff09;和跨團隊協作&#xff0…

使用 5 種安全解決方案將 Android 短信導出為PDF

想要將安卓手機短信導出為 PDF 格式&#xff0c;用于法律用途、情感表達或僅僅為了記錄&#xff1f;總之&#xff0c;您可以保存安卓手機短信并將其轉換為 PDF 格式&#xff0c;確保它們井然有序&#xff0c;方便打印。快來獲取解決方案吧&#xff01;第 1 部分&#xff1a;如何…

再談fpga開發(fpga開發的幾個差異)

【 聲明&#xff1a;版權所有&#xff0c;歡迎轉載&#xff0c;請勿用于商業用途。 聯系信箱&#xff1a;feixiaoxing 163.com】學習嵌入式的同學都知道&#xff0c;嵌入式一般分成這幾種chip&#xff0c;有51&#xff0c;有stm32 mcu&#xff0c;有soc&#xff0c;有dsp&#…

Kafka運維實戰 11 - kafka查看消息的具體內容【實戰】

目錄kafka 消息查看1. 直接查看日志文件內容步驟&#xff1a;2. 使用 Kafka 工具查看日志主要參數說明常用命令&#xff1a;輸出說明&#xff1a;3. 注意事項kafka 消息日志文件詳解我們有時候遇到這樣的需求&#xff0c;需要查看下kafka消息的內容。 kafka 消息查看 查看 Ka…

【自動化測試】JMeter+Jenkins自動化接口與性能測試環境部署指南

環境準備與基礎配置 軟硬件環境要求 工具鏈安裝部署 工具鏈安裝部署涉及JDK、JMeter、Jenkins等核心組件,其在Linux與Windows環境下的安裝流程存在顯著差異,企業級部署需重點關注靜默安裝、權限控制及數據備份配置。以下從組件安裝差異、企業級部署要點及備份配置三方面展開…

三步實現Android系統級集成:預裝Google TTS + 默認引擎設置 + 語音包預緩存方案

在定制Android系統時&#xff0c;預裝Google TTS引擎并實現開箱即用的語音服務能顯著提升用戶體驗。本文將詳解預裝APK→設為默認引擎→語音包預緩存的實現方案&#xff0c;適用于ROM開發者或系統定制場景。分步實現方案 預裝Google TTS APK 預裝APK這里可以采用很多種方式&…