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


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


配置文件嵌入鏡像文件,是指用戶在 Dockerfile 中使用 COPY 指令把定義好的配置文件復制到鏡像文件系統上的目標位置,或者使用 RUN 指令調用 sed 或 echo 一類的命令修改配置文件,從而達到為容器化應用提供自定義配置文件之目的。


Docker 存儲卷能夠將宿主機之上的任何文件或目錄映射進容器文件系統上,因此,可以事先將配置文件放置于宿主機之上的某特定路徑中,而后在啟動容器時進行加載。這種方式靈活易用,但也依賴于用戶事先將配置數據提供在宿主機上的特定路徑


通過環境變量配置容器化應用時,需要在容器配置段中嵌套使用 env 字段,它的值是一個由環境變量構建的列表。每個環境變量通常由 name 和 value(或 valueFrom)字段構成。

name :環境變量的名稱,必選字段。

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


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


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


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


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


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


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


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


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


ConfigMap 無法替代配置文件,它僅在 Kubernetes 系統上代表對應用程序配置文件的引用,我們可以將它類比為在 Linux 主機上表示/etc 目錄及內部文件的一種方法

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/124393.html

相關文章

  • #yyds干貨盤點#K8S Secret 資源配置

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

    mcterry 評論0 收藏0
  • #yyds干貨盤點# k8s cgroup詳解

    摘要:是其中的一個子系統,它是用來限制進程的使用的。 CPU:? CPU Cgroup 是 Cgroups 其中的一個 Cgroups 子系統,它是用來限制進程的 CPU 使用的。 限制的是用戶態的CPU us和ni,對內核態不限制sy、wa、hi、si 目錄:/sys/fs/cgroup/cpu 重要參數:k8s資源限...

    alaege 評論0 收藏0
  • #yyds干貨盤點# k8s namespace詳解

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

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

    摘要:每個工作節點的組件通過持續監控著各及其關聯的對象,并將對象的創建或變動實時反映至當前工作節點上相應的或規則上。資源都可統一根據其工作邏輯分為和這種類型。 Service 是 Kubernetes 的核心資源類型之一,通常被看作微服務的一種實現。它事實上是一種抽象:通過規則定義出由多個 Pod 對象組合而成的邏輯集合,以及訪...

    silencezwm 評論0 收藏0
  • #yyds干貨盤點#Nginx的核心配置

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

    番茄西紅柿 評論0 收藏2637

發表評論

0條評論

Karuru

|高級講師

TA的文章

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