国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

8、Kubernetes核心技術(shù) - ConfigMap

這篇具有很好參考價(jià)值的文章主要介紹了8、Kubernetes核心技術(shù) - ConfigMap。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

目錄

一、ConfigMap概述

二、ConfigMap創(chuàng)建

2.1、命令行方式創(chuàng)建

2.2、yaml 文件方式創(chuàng)建

三、ConfigMap查詢(xún)

四、ConfigMap更新

4.1、kubectl edit方式

4.2、kubectl apply方式

五、ConfigMap使用

5.1、spec.env 【環(huán)境變量】

5.2、spec.envFrom 【環(huán)境變量】

5.3、指定 items【卷掛載方式】

5.4、不指定 items【卷掛載方式】

六、ConfigMap刪除


一、ConfigMap概述

ConfigMap 功能在 Kubernetes1.2 版本中引入,許多應(yīng)用程序會(huì)從配置文件、命令行參數(shù)或環(huán)境變量中讀取配 置信息。ConfigMap API給我們提供了向容器中注入配置信息的機(jī)制,ConfigMap 可以被用來(lái)保存單個(gè)屬性,也可以用來(lái)保存整個(gè)配置文件或者JSON 二進(jìn)制大對(duì)象 。

ConfigMap 的主要作用就是為了讓鏡像和配置文件解耦,以便實(shí)現(xiàn)鏡像的可移植性和可復(fù)用性。

注意:ConfigMap 并不提供保密或者加密功能。 如果你想存儲(chǔ)的數(shù)據(jù)是加密的,請(qǐng)使用 Secret, 或者使用其他第三方工具來(lái)保證你的數(shù)據(jù)的私密性,而不是用 ConfigMap。

二、ConfigMap創(chuàng)建

2.1、命令行方式創(chuàng)建

讀取文件方式(也可以是目錄)通過(guò)--from-file參數(shù)從文件中讀取,可以指定 key 的名稱(chēng),若不指定,則默認(rèn)使用文件名為key。--from-file:指定在目錄下的所有文件都會(huì)被用在 ConfigMap 里邊創(chuàng)建一個(gè)鍵值對(duì),鍵的名字就是文件名,值就是文件里內(nèi)容。

vim configmap-file.properties

version:1.0
environment:dev

創(chuàng)建ConfigMap:

$ vim configmap-file.properties

# 通過(guò)kubectl create configmap創(chuàng)建ConfigMap
$ kubectl create configmap from-file-configmap --from-file=configmap-file.properties
configmap/from-file-configmap created

$ kubectl get configmap/from-file-configmap
NAME                  DATA   AGE
from-file-configmap   1      25s

# 查看ConfigMap的yaml資源清單
$ kubectl get configmap/from-file-configmap -o yaml
apiVersion: v1
data:
  configmap-file.properties: |			# ConfigMap的數(shù)據(jù),換行的話冒號(hào)后面需要加 |
    version:1.0
    environment:dev
kind: ConfigMap
metadata:
  creationTimestamp: "2023-01-05T05:33:28Z"
  name: from-file-configmap
  namespace: default
  resourceVersion: "3179"
  uid: a9f17c3a-af94-4a9a-9145-e06f3d3bf030

當(dāng)然,我們也可以通過(guò)--from-literal參數(shù),可以指定多個(gè),手動(dòng)指定ConfigMap中的鍵值對(duì)。如下:

$ kubectl create configmap cm-test --from-literal=MYSQL_ROOT_USERNAME=root --from-literal=MYSQL_ROOT_PASSWORD=123456
configmap/cm-test created

$ kubectl describe cm cm-test
Name:         cm-test
Namespace:    default
Labels:       <none>
Annotations:  <none>

Data
====
MYSQL_ROOT_PASSWORD:
----
123456
MYSQL_ROOT_USERNAME:
----
root

BinaryData
====

2.2、yaml 文件方式創(chuàng)建

創(chuàng)建資源清單:vim configmap.yaml

apiVersion: v1
data: 	# ConfigMap的Key 和 Value。 每一個(gè)鍵都映射到一個(gè)簡(jiǎn)單的值
  version: "1.0"    # 需要注意yaml的語(yǔ)法,key和value之間需要有空格
  environment: "dev"  # 定義一個(gè)變量,值類(lèi)型為字符串,需要加引號(hào)
kind: ConfigMap
metadata:
  name: from-yaml-configmap

創(chuàng)建ConfigMap:

$ vim configmap.yaml 
$ kubectl apply -f configmap.yaml 
configmap/from-yaml-configmap created

$ kubectl get cm 
NAME                  DATA   AGE
from-file-configmap   1      11m
from-yaml-configmap   2      19s
kube-root-ca.crt      1      13d

三、ConfigMap查詢(xún)

# 查看 configmap 列表
$ kubectl get configmap
NAME                  DATA   AGE
from-file-configmap   1      13m
from-yaml-configmap   2      2m2s
kube-root-ca.crt      1      13d

# 查看 configmap 詳情
$ kubectl describe configmap from-file-configmap
Name:         from-file-configmap
Namespace:    default
Labels:       <none>
Annotations:  <none>

Data
====
configmap-file.properties:
----
version:1.0
environment:dev


BinaryData
====

Events:  <none>


# 查看 yaml 輸出
$ kubectl get configmap from-file-configmap -o yaml
apiVersion: v1
data:
  configmap-file.properties: |
    version:1.0
    environment:dev
kind: ConfigMap
metadata:
  creationTimestamp: "2023-01-05T05:33:28Z"
  name: from-file-configmap
  namespace: default
  resourceVersion: "3179"
  uid: a9f17c3a-af94-4a9a-9145-e06f3d3bf030

四、ConfigMap更新

4.1、kubectl edit方式

$ kubectl describe configmap from-file-configmap
Name:         from-file-configmap
Namespace:    default
Labels:       <none>
Annotations:  <none>

Data
====
configmap-file.properties:
----
version:1.0									# 更新之前的version為1.0
environment:dev


BinaryData
====

Events:  <none>

# kubectl edit configmap其實(shí)是通過(guò)修改from-file-configmap這個(gè)ConfigMap對(duì)象資源清單中的值
controlplane $ kubectl edit configmap from-file-configmap
configmap/from-file-configmap edited

# 查看更新之后的ConfigMap的值
controlplane $ kubectl describe configmap from-file-configmap
Name:         from-file-configmap
Namespace:    default
Labels:       <none>
Annotations:  <none>

Data
====
configmap-file.properties:
----
version:2.0									# 更新之后的version為2.0
environment:dev


BinaryData
====

Events:  <none>

4.2、kubectl apply方式

這種方式,其實(shí)也是通過(guò)修改ConfigMap對(duì)象對(duì)應(yīng)的yaml資源清單文件,然后重新執(zhí)行kubectl apply -f xxx即可。

$ vim configmap.yaml

$ kubectl describe cm from-yaml-configmap
Name:         from-yaml-configmap
Namespace:    default
Labels:       <none>
Annotations:  <none>

Data
====
environment:
----
dev				# 修改之前的environment為dev
version:
----
1.0

BinaryData
====

Events:  <none>

$ kubectl apply -f configmap.yaml 
configmap/from-yaml-configmap configured

$ kubectl describe cm from-yaml-configmap
Name:         from-yaml-configmap
Namespace:    default
Labels:       <none>
Annotations:  <none>

Data
====
environment:
----
prod				# 修改之后的environment為prod
version:
----
1.0

BinaryData
====

Events:  <none>

五、ConfigMap使用

容器應(yīng)用對(duì) ConfigMap 的使用主要是兩種:

  • 通過(guò)環(huán)境變量獲取 ConfigMap 的內(nèi)容:spec.env和spec.envFrom
  • 通過(guò)卷 volume 掛載的方式將 ConfigMap 的內(nèi)容掛載到容器內(nèi)部的文件或目錄:spec.volumes

5.1、spec.env 【環(huán)境變量】

定義Pod資源清單:vim configmap-pod-demo01.yaml

apiVersion: v1
kind: Pod
metadata:
  name: tomcat
spec:
  containers:
  - name: tomcat
    image: tomcat:8
    command: [ "/bin/sh", "-c", "env | grep APP"]
    env:		# 配置環(huán)境變量
    - name: APP_VERSION         # 定義環(huán)境變量的名稱(chēng)
      valueFrom:            
        configMapKeyRef: 
          name: from-yaml-configmap    # 引用from-yaml-configmap這個(gè)ConfigMap,這個(gè)值來(lái)自 ConfigMap
          key: version    	# 需要取值的鍵,ConfigMap中的配置key為version
    - name: APP_ENVIRONMENT        # 定義環(huán)境變量的名稱(chēng)
      valueFrom: 
        configMapKeyRef: 
          name: from-yaml-configmap  # 引用from-yaml-configmap這個(gè)ConfigMap
          key: environment    # ConfigMap中的配置key為environment
  restartPolicy: Never

創(chuàng)建Pod,觀察控制臺(tái)輸出:

$ kubectl apply -f configmap-pod-demo01.yaml 
pod/tomcat created
$ kubectl get pod/tomcat
NAME     READY   STATUS      RESTARTS   AGE
tomcat   0/1     Completed   0          9s

$ kubectl logs tomcat
APP_ENVIRONMENT=prod
APP_VERSION=1.0

可以看到,from-yaml-configmap這個(gè)ConfigMap中的內(nèi)容已經(jīng)成功聲明為Pod中的兩個(gè)環(huán)境變量:

$APP_VERSION、$APP_ENVIRONMENT,并且值也正確。

5.2、spec.envFrom 【環(huán)境變量】

定義Pod資源清單:vim configmap-pod-demo02.yaml

apiVersion: v1
kind: Pod
metadata:
  name: tomcat
spec:
  containers:
  - name: tomcat
    image: tomcat:8
    imagePullPolicy: IfNotPresent
    command: ['/bin/sh','-c','env']
    envFrom:		# 配置環(huán)境變量
    - configMapRef:
        name: from-yaml-configmap    # 根據(jù)from-yaml-configmap這個(gè)ConfigMap中所有的key和value自動(dòng)生成環(huán)境變量
  restartPolicy: Never 	      	      	

創(chuàng)建Pod,觀察控制臺(tái)輸出:

$ kubectl apply -f configmap-pod-demo02.yaml 
pod/tomcat created

$ kubectl get pod/tomcat
NAME     READY   STATUS      RESTARTS   AGE
tomcat   0/1     Completed   0          32s

$ kubectl logs tomcat
KUBERNETES_SERVICE_PORT=443
KUBERNETES_PORT=tcp://10.96.0.1:443
LANGUAGE=en_US:en
HOSTNAME=tomcat
LD_LIBRARY_PATH=/usr/local/tomcat/native-jni-lib
TOMCAT_SHA512=e595e906d62ff16545318108478aa101103181569dc6f4549dd0cdf8744147f7e9ba8a88cab6d33237b22981acb1085de86e7b2a4f1659efdbd4804df1303561
HOME=/root
CATALINA_HOME=/usr/local/tomcat
TOMCAT_MAJOR=8
version=1.0				# 根據(jù)from-yaml-configmap這個(gè)ConfigMap資源自動(dòng)生成環(huán)境變量:version
JAVA_VERSION=jdk-17.0.5+8
environment=prod	# 根據(jù)from-yaml-configmap這個(gè)ConfigMap資源自動(dòng)生成環(huán)境變量:environment
GPG_KEYS=05AB33110949707C93A279E3D3EFE6B686867BA6 07E48665A34DCAFAE522E5E6266191C37C037D42 47309207D818FFD8DCD3F83F1931D684307A10A5 541FBE7D8F78B25E055DDEE13C370389288584E7 5C3C5F3E314C866292F359A8F3AD5C94A67F707E 765908099ACF92702C7D949BFA0C35EA8AA299F1 79F7026C690BAA50B92CD8B66A3AD3F4F22C4FED 9BA44C2621385CB966EBA586F72C284D731FABEE A27677289986DB50844682F8ACB77FC2E86E29AC A9C5DF4D22E99998D9875A5110C01C5A2F6059E7 DCFD35E0BF8CA7344752DE8B6FB21E8933C60243 F3A04C595DB5B6A5F1ECA43E3B7BBB100D811BBE F7DA48BB64BCB84ECBA7EE6935CD23C10D498E23
KUBERNETES_PORT_443_TCP_ADDR=10.96.0.1
PATH=/usr/local/tomcat/bin:/opt/java/openjdk/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
KUBERNETES_PORT_443_TCP_PORT=443
KUBERNETES_PORT_443_TCP_PROTO=tcp
LANG=en_US.UTF-8
TOMCAT_VERSION=8.5.84
KUBERNETES_SERVICE_PORT_HTTPS=443
KUBERNETES_PORT_443_TCP=tcp://10.96.0.1:443
JAVA_HOME=/opt/java/openjdk
LC_ALL=en_US.UTF-8
KUBERNETES_SERVICE_HOST=10.96.0.1
PWD=/usr/local/tomcat
TOMCAT_NATIVE_LIBDIR=/usr/local/tomcat/native-jni-lib

如上,可以看到,通過(guò)envFrom可以實(shí)現(xiàn)根據(jù)某個(gè)ConfigMap資源自動(dòng)生成環(huán)境變量,這樣在Pod中就可以使用這些環(huán)境變量了。

env 和 envFrom 的區(qū)別:

env可以自定義變量名,但需要重復(fù)性操作;

envFrom不可以自定義變量名,但是很便捷

5.3、指定 items【卷掛載方式】

定義Pod資源清單:vim configmap-pod-demo03.yaml

apiVersion: v1
kind: Pod
metadata:
  name: tomcat
spec:
  containers:
  - name: tomcat
    image: tomcat:8
    volumeMounts:
    - name: config-volume
      mountPath: /conf			# 掛載configmap-file.properties到Pod的/conf目錄下
  volumes:
  - name: config-volume   
    configMap:   # 你可以在 Pod 級(jí)別設(shè)置卷,然后將其掛載到 Pod 內(nèi)的容器中
      name: from-file-configmap		# 要掛載的 ConfigMap 的名字
      items:		# 來(lái)自 ConfigMap 的一組鍵,將被創(chuàng)建為文件
      - key: "configmap-file.properties"   # 來(lái)自 ConfigMap 的一組鍵,將被創(chuàng)建為文件
        path: "configmap-file.properties"		# ConfigMap掛載到容器內(nèi)的相對(duì)路徑
  restartPolicy: Never

創(chuàng)建Pod,然后進(jìn)入Pod中/conf目錄,查看configmap-file.properties文件是否掛載進(jìn)去:

$ kubectl apply -f configmap-pod-demo03.yaml 
pod/tomcat created

$ kubectl get pod/tomcat
NAME     READY   STATUS    RESTARTS   AGE
tomcat   1/1     Running   0          20s

$ kubectl exec -it tomcat -c tomcat -- bash
root@tomcat:/usr/local/tomcat# cat /conf/configmap-file.properties 
version:2.0
environment:dev

5.4、不指定 items【卷掛載方式】

定義Pod資源清單:vim configmap-pod-demo04.yaml

apiVersion: v1
kind: Pod
metadata:
  name: tomcat
spec:
  containers:
  - name: tomcat
    image: tomcat:8
    volumeMounts:
    - name: configmap-volume
      mountPath: /conf
  volumes:
  - name: configmap-volume
    configMap:  # 創(chuàng)建一個(gè)ConfigMap類(lèi)型的數(shù)據(jù)卷
      name: from-yaml-configmap		# 引用的ConfigMap的名稱(chēng)
  restartPolicy: Never

創(chuàng)建Pod,然后進(jìn)入容器查看相關(guān)內(nèi)容:文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-625623.html

$ kubectl apply -f configmap-pod-demo04.yaml 
pod/tomcat created

$ kubectl get pod/tomcat
NAME     READY   STATUS    RESTARTS   AGE
tomcat   1/1     Running   0          10s

$ kubectl exec -it tomcat -c tomcat -- bash
root@tomcat:/usr/local/tomcat# ls -l /conf
total 0
lrwxrwxrwx 1 root root 18 Jan  5 07:01 environment -> ..data/environment
lrwxrwxrwx 1 root root 14 Jan  5 07:01 version -> ..data/version

六、ConfigMap刪除

# 方式一:通過(guò) yaml 文件刪除
kubectl delete -f configmap.yaml


# 方式二:直接刪除資源
kubectl delete configmap from-yaml-configmap

# 方式三: 刪除所有configmap
kubectl delete configmap --all

到了這里,關(guān)于8、Kubernetes核心技術(shù) - ConfigMap的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【云原生】Kubernetes核心技術(shù)(下)

    【云原生】Kubernetes核心技術(shù)(下)

    博主昵稱(chēng):跳樓梯企鵝 博主主頁(yè)面鏈接: 博主主頁(yè)傳送門(mén) 博主專(zhuān)欄頁(yè)面連接: 專(zhuān)欄傳送門(mén)--網(wǎng)路安全技術(shù) 創(chuàng)作初心:本博客的初心為與技術(shù)朋友們相互交流,每個(gè)人的技術(shù)都存在短板,博主也是一樣,虛心求教,希望各位技術(shù)友給予指導(dǎo)。 博主座右銘:發(fā)現(xiàn)光,追隨光,

    2024年01月17日
    瀏覽(24)
  • 6、Kubernetes核心技術(shù) - Pod

    6、Kubernetes核心技術(shù) - Pod

    目錄 一、概述 二、Pod機(jī)制 2.1、共享網(wǎng)絡(luò) 2.2、共享存儲(chǔ) 三、Pod資源清單 四、 Pod 的分類(lèi) 五、Pod階段 六、Pod 鏡像拉取策略 ImagePullBackOff 七、Pod 資源限制 八、容器重啟策略 Pod 是可以在 Kubernetes 中 創(chuàng)建和管理的、最小的可部署的計(jì)算單元 。Pod 里面是由一個(gè)或多個(gè)容器組成

    2024年02月15日
    瀏覽(24)
  • 7、Kubernetes核心技術(shù) - Secret

    7、Kubernetes核心技術(shù) - Secret

    目錄 一、Secret概述 二、Secret 三種類(lèi)型 2.1、Opaque 2..2、kubernetes.io/dockerconfigjson 2.3、kubernetes.io/service-account-token 三、Secret創(chuàng)建 3.1、命令行方式創(chuàng)建 Secret 3.2、yaml方式創(chuàng)建 Secret 四、Secret解碼 五、Secret使用 5.1、將 Secret 掛載到 Volume 中 5.2、將 Secret 設(shè)置為環(huán)境變量 5.3、通過(guò)volu

    2024年02月14日
    瀏覽(16)
  • 19、Kubernetes核心技術(shù) - 資源限制

    19、Kubernetes核心技術(shù) - 資源限制

    目錄 一、概述 二、Kubernetes 中的資源單位 2.1、CPU資源單位 2.2、內(nèi)存資源單位 三、Pod資源限制 四、namespace資源限制 4.1、為命名空間配置內(nèi)存和 CPU 配額 4.2、為命名空間配置默認(rèn)的內(nèi)存請(qǐng)求和限制 4.3、為命名空間配置默認(rèn)的CPU請(qǐng)求和限制 五、超過(guò)容器限制的內(nèi)存 當(dāng)定義 Po

    2024年01月20日
    瀏覽(18)
  • 云原生Kubernetes系列 | Kubernetes Secret及ConfigMap

    ?? 使用某些鏡像例如mysql,是需要變量來(lái)傳遞密

    2024年02月04日
    瀏覽(28)
  • Kubernetes技術(shù)--k8s核心技術(shù) Secret

    Kubernetes技術(shù)--k8s核心技術(shù) Secret

    1.概述 ? ? ?Secret 解決了密碼、token、密鑰等敏感數(shù)據(jù)的配置問(wèn)題,而不需要把這些敏感數(shù)據(jù)暴露到鏡像或者 Pod Spec中。Secret可以以 Volume 或者環(huán)境變量的方式使用。 作用 ? ? ? 加密數(shù)據(jù)存儲(chǔ)在/etc中 ,使得 pod 容器以掛載volume方式進(jìn)行訪問(wèn) 。在進(jìn)行的數(shù)據(jù)存儲(chǔ)中是以 base64

    2024年02月10日
    瀏覽(24)
  • Kubernetes技術(shù)--k8s核心技術(shù)Helm

    1.引入 我們先回顧一下之前部署 一個(gè)應(yīng)用 的過(guò)程,如部署nginx,實(shí)現(xiàn)效果如下所示: -1.編寫(xiě)deployment的yaml文件,然后運(yùn)行。 -2.使用service中的NodePort對(duì)外暴漏端口 -3.為了彌補(bǔ)Nodeport的缺陷,使用ingress實(shí)現(xiàn)轉(zhuǎn)發(fā) ? ? ? ?這樣一個(gè)應(yīng)用就部署完了,這一種情況相對(duì)于如果你需要部署

    2024年02月09日
    瀏覽(26)
  • Kubernetes技術(shù)--k8s核心技術(shù) ingress

    1.引入 ? ? ? ?我們之前在部署應(yīng)用(如nginx)的時(shí)候,如果你需要外部進(jìn)行訪問(wèn),使用的是service中的nodePort方式進(jìn)行對(duì)外的暴露。然后外部就可以使用ip + 端口號(hào)來(lái)進(jìn)行訪問(wèn)部署應(yīng)用。 ? ? ? ? 其實(shí)這一種方式是存在著較為明顯的缺陷,每一個(gè)端口你只能夠使用一次,一個(gè)端口

    2024年02月10日
    瀏覽(24)
  • Kubernetes技術(shù)--k8s核心技術(shù)Service服務(wù)

    Kubernetes技術(shù)--k8s核心技術(shù)Service服務(wù)

    1.service概述 ? ? ? ? Service 是 Kubernetes 最核心概念, 通過(guò)創(chuàng)建 Service,可以為一組具有相同功能的容器應(yīng)用提供一個(gè)統(tǒng)一的入口地址,并且將請(qǐng)求負(fù)載分發(fā)到后端的各個(gè)容器應(yīng)用上 。 2.service存在的意義 -1: 防止pod失聯(lián)(服務(wù)發(fā)現(xiàn)) 我們先說(shuō)一下什么叫pod失聯(lián)。 ?? ?-2:

    2024年02月10日
    瀏覽(22)
  • kubernetes存儲(chǔ)-configmap

    kubernetes存儲(chǔ)-configmap

    目錄 一、字面值創(chuàng)建 二、通過(guò)文件創(chuàng)建 三、通過(guò)目錄創(chuàng)建 四、通過(guò)yaml文件創(chuàng)建 五、使用configmap設(shè)置環(huán)境變量 六、使用conigmap設(shè)置命令行參數(shù) 七、通過(guò)數(shù)據(jù)卷使用configmap 八、configmap熱更新 ? ? ? 在Kubernetes中,ConfigMap是一種存儲(chǔ)配置數(shù)據(jù)的對(duì)象。它允許將配置數(shù)據(jù)分離出來(lái)

    2024年02月06日
    瀏覽(22)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包