ConfigMap 和 Secret 是 Kubernetes 系統(tǒng)上兩種特殊類型的存儲卷,前者用于為容器中的應(yīng)用提供配置數(shù)據(jù)以定制程序的行為,而敏感的配置信息,例如密鑰、證書等則通常由后者來配置。ConfigMap 和 Secret 將相應(yīng)的配置信息保存于資源對象中,而后在 Pod 對象上以存儲卷的形式將其掛載并加載相關(guān)的配置,降低了配置與鏡像文件的耦合關(guān)系。


Dockerfile 中的 ENTRYPOINT 和 CMD 指令用于指定容器啟動時(shí)要運(yùn)行的程序及其相關(guān)的參數(shù)。其中,CMD 指令以列表形式指定要運(yùn)行的程序及其相關(guān)的參數(shù),若同時(shí)存在 ENTRYPOINT 指令,則 CMD 指令中的列表所有元素均被視作由 ENTRYPOINT 指定程序的命令行參數(shù)。另外,在基于某鏡像創(chuàng)建容器時(shí),可以通過向 ENTRYPOINT 中的程序傳遞額外的自定義參數(shù),甚至還可以修改要運(yùn)行的應(yīng)用程序本向。


配置文件嵌入鏡像文件,是指用戶在 Dockerfile 中使用 COPY 指令把定義好的配置文件復(fù)制到鏡像文件系統(tǒng)上的目標(biāo)位置,或者使用 RUN 指令調(diào)用 sed 或 echo 一類的命令修改配置文件,從而達(dá)到為容器化應(yīng)用提供自定義配置文件之目的。


Docker 存儲卷能夠?qū)⑺拗鳈C(jī)之上的任何文件或目錄映射進(jìn)容器文件系統(tǒng)上,因此,可以事先將配置文件放置于宿主機(jī)之上的某特定路徑中,而后在啟動容器時(shí)進(jìn)行加載。這種方式靈活易用,但也依賴于用戶事先將配置數(shù)據(jù)提供在宿主機(jī)上的特定路徑。


通過環(huán)境變量配置容器化應(yīng)用時(shí),需要在容器配置段中嵌套使用 env 字段,它的值是一個(gè)由環(huán)境變量構(gòu)建的列表。每個(gè)環(huán)境變量通常由 name 和 value(或 valueFrom)字段構(gòu)成。

name :環(huán)境變量的名稱,必選字段。

value :環(huán)境變量的值,通過 $(VAR_NAME)引用,逃逸格式為 $$(VAR_NAME)默認(rèn)值為空。valueFrom :環(huán)境變量值的引用源,例如當(dāng)前 Pod 資源的名稱、名稱空間、標(biāo)簽等,不能與非空值的 value 字段同時(shí)使用,即環(huán)境變量的值要么源于 value 字段,要么源于 valueFrom 字段,二者不可同時(shí)提供數(shù)據(jù)。


ConfigMap 資源用于在運(yùn)行時(shí)將配置文件、命令行參數(shù)、環(huán)境變量、端口號以及其他配置工件綁定至 Pod 的容器和系統(tǒng)組件。Kubernetes 借助于 ConfigMap 對象實(shí)現(xiàn)了將配置文件從容器鏡像中解耦,從而增強(qiáng)了工作負(fù)載的可移植性,使配置更易于更改和管理,并防止將配置數(shù)據(jù)硬編碼到 Pod 配置清單中。但 ConfigMap 資源用于存儲和共享非敏感、未加密的配置信息,若要在集群中使用敏感信息,則必須使用 Secret 資源。


一個(gè) ConfigMap 對象就是一系列配置數(shù)據(jù)的集合,這些數(shù)據(jù)可注入到 Pod 的容器當(dāng)中為容器應(yīng)用所使用,注入的途徑有直接掛載存儲卷和傳遞為環(huán)境變量兩種。ConfigMap 支持存儲諸如單個(gè)屬性一類的細(xì)粒度的信息,也可用于存儲粗粒度的信息,例如將整個(gè)配置文件保存在 ConfigMap 對象之中。


ConfigMap 是 Kubernetes 標(biāo)準(zhǔn)的 API 資源類型,它隸屬名稱空間級別,支持命令式命令、命令式對象配置聲明式對象配置 3 種管理接口。命令式命令的創(chuàng)建操作可通過 kubectl create configmap 進(jìn)行,它支持基于目錄、文件或字面量(literal)值獲取配置數(shù)據(jù)完成 ConfigMap 對象的創(chuàng)建。


Pod 資源配置清單中,除了使用 value 字段直接給定變量值之外,容器環(huán)境變量的賦值還支持通過在 valueFrom 字段中嵌套 configMapKeyRef 來引用 ConfigMap 對象的鍵值。


以存儲卷方式引用的 ConfigMap 對象必須先于 Pod 對象存在,除非在 Pod 對象中把它們統(tǒng)統(tǒng)標(biāo)記為 optional,否則將會導(dǎo)致 Pod 無法正常啟動;同樣,即使 ConfigMap 對象存在,但引用的鍵名不存在時(shí),也會導(dǎo)致同樣的錯(cuò)誤。


以環(huán)境變量方式引用的 ConfigMap 對象的鍵不存在時(shí)會被忽略,Pod 對象可以正常啟動,但錯(cuò)誤引用的信息會以 InvalidVariableNames 事件記錄于日志中。


ConfigMap 對象是名稱空間級的資源,能夠引用它的 Pod 對象必須位于同一名稱空間。


Kubelet 僅支持那些由 API Server 管理的 Pod 資源來引用 ConfigMap 對象,因而那些由 kubelet 在節(jié)點(diǎn)上通過--manifest-url 或--config 選項(xiàng)加載配置清單創(chuàng)建的靜態(tài) Pod,以及由用戶直接通過 kubelet 的 RESTful API 創(chuàng)建的 Pod 對象。


ConfigMap 無法替代配置文件,它僅在 Kubernetes 系統(tǒng)上代表對應(yīng)用程序配置文件的引用,我們可以將它類比為在 Linux 主機(jī)上表示/etc 目錄及內(nèi)部文件的一種方法。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/124393.html

相關(guān)文章

  • #yyds干貨盤點(diǎn)#K8S Secret 資源配置

    摘要:對象存儲數(shù)據(jù)的機(jī)制及使用方式都類似于對象,它們以鍵值方式存儲數(shù)據(jù),在資源中通過環(huán)境變量或存儲卷進(jìn)行數(shù)據(jù)訪問。資源主要有兩種用途一是作為存儲卷注入對象上,供容器應(yīng)用程序使用二是用于為里的容器拉取鏡像時(shí)向私有倉庫提供認(rèn)證信息。 出于增強(qiáng)可移植性的需求,我們應(yīng)該從容器鏡像中解耦的不僅有配置數(shù)據(jù),還有默認(rèn)口令(例如 Redis 或...

    mcterry 評論0 收藏0
  • #yyds干貨盤點(diǎn)# k8s cgroup詳解

    摘要:是其中的一個(gè)子系統(tǒng),它是用來限制進(jìn)程的使用的。 CPU:? CPU Cgroup 是 Cgroups 其中的一個(gè) Cgroups 子系統(tǒng),它是用來限制進(jìn)程的 CPU 使用的。 限制的是用戶態(tài)的CPU us和ni,對內(nèi)核態(tài)不限制sy、wa、hi、si 目錄:/sys/fs/cgroup/cpu 重要參數(shù):k8s資源限...

    alaege 評論0 收藏0
  • #yyds干貨盤點(diǎn)# k8s namespace詳解

    摘要:常見查看容器的容器進(jìn)入安裝進(jìn)入容器 常見nsmnt uts ipc pid lsns:查看容器的ns [root@182 ~]# lsns NS TYPE NPROCS PID USER COMMAND4026531836 pid 2...

    cooxer 評論0 收藏0
  • #yyds干貨盤點(diǎn)#k8s Service 資源及其模型

    摘要:每個(gè)工作節(jié)點(diǎn)的組件通過持續(xù)監(jiān)控著各及其關(guān)聯(lián)的對象,并將對象的創(chuàng)建或變動實(shí)時(shí)反映至當(dāng)前工作節(jié)點(diǎn)上相應(yīng)的或規(guī)則上。資源都可統(tǒng)一根據(jù)其工作邏輯分為和這種類型。 Service 是 Kubernetes 的核心資源類型之一,通常被看作微服務(wù)的一種實(shí)現(xiàn)。它事實(shí)上是一種抽象:通過規(guī)則定義出由多個(gè) Pod 對象組合而成的邏輯集合,以及訪...

    silencezwm 評論0 收藏0
  • #yyds干貨盤點(diǎn)#Nginx的核心配置

    摘要:全局配置內(nèi)核的綁定添加核的個(gè)數(shù)開啟個(gè)核同時(shí)安排自動排序重啟客服端發(fā)送請求服務(wù)端查看是哪些的核在發(fā)生變化情況錯(cuò)誤日志最多打開這么多默認(rèn)是關(guān)閉以后就只有一個(gè)主進(jìn)程,性能很差開啟以后都只有一個(gè)主進(jìn)程了配置詳解 1.全局配置1.1 CPU內(nèi)核的綁定[root@c7-147 ~]# lscpu |grep -i cpuC...

    番茄西紅柿 評論0 收藏2637

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<