AVt天堂网 手机版,亚洲va久久久噜噜噜久久4399,天天综合亚洲色在线精品,亚洲一级Av无码毛片久久精品

當前位置:首頁 > 科技  > 軟件

為啥有的ConfigMap要重啟Pod才生效

來源: 責編: 時間:2023-10-20 10:02:20 241觀看
導讀在一般應用部署中,都是將程序和配置信息分離,這樣可以保證程序可以被各個環境復用。在容器場景中,將應用打包成鏡像后,可以通過環境變量或者文件掛載的方式,在創建容器時把配置注入進去。在Kubernetes場景中,則使用configMa

在一般應用部署中,都是將程序和配置信息分離,這樣可以保證程序可以被各個環境復用。q3h28資訊網——每日最新資訊28at.com

在容器場景中,將應用打包成鏡像后,可以通過環境變量或者文件掛載的方式,在創建容器時把配置注入進去。q3h28資訊網——每日最新資訊28at.com

在Kubernetes場景中,則使用configMap實現應用與配置分離。使用configMap的方式有多種,有的方式修改了configMap的配置,無需重啟Pod即可生效,有的方式需要重啟Pod才生效。看看你用的是哪一種吧。q3h28資訊網——每日最新資訊28at.com

q3h28資訊網——每日最新資訊28at.com

一、使用方式

使用configMap做程序和配置分離,那么首先就要定義configMap,然后部署configMap。q3h28資訊網——每日最新資訊28at.com

1.定義configMap

apiVersion: v1kind: ConfigMapmetadata:  name: democm  namespace: demodata:  db_name: demodb  db_host: 172.19.132.23

configMap有3種使用方式:env方式 、envFrom方式 、volumes方式。q3h28資訊網——每日最新資訊28at.com

2.env方式

這種方式是將configMap的key-value注入到容器的環境變量里,程序里使用時,使用env里定義的name即可獲取到對應的值。使用方式如下:q3h28資訊網——每日最新資訊28at.com

apiVersion: v1kind: Podmetadata:  name: pod-cm-1  namespace: demo  labels:    app: pod-cm-1spec:  containers:    - name: pod-cm-1      image: busybox      imagePullPolicy: IfNotPresent      tty: true      # 會出現在容器的環境變量里,程序里要使用env#name可以獲取到對應的值      env:        - name: db_name_app          valueFrom:            configMapKeyRef:              name: democm              key: db_name        - name: db_host_app          valueFrom:            configMapKeyRef:              name: democm              key: db_host

3.envFrom方式

這種方式也是將configMap的key-value注入到容器的環境變量里,使用方法與env方式類似,只不過在程序使用時,是直接使用configMap定義的key,即可獲取到對應的值。使用方式如下:q3h28資訊網——每日最新資訊28at.com

apiVersion: v1kind: Podmetadata:  name: pod-cm-2  namespace: demo  labels:    app: pod-cm-2spec:  containers:    - name: pod-cm-2      image: busybox      imagePullPolicy: IfNotPresent      tty: true      # 程序里使用configmap的key      envFrom:        - configMapRef:            name: democm

4.volumes方式

這種方式是以卷掛載的方式,將configMap的key-value寫入到文件里,key是文件名,value是文件內容。q3h28資訊網——每日最新資訊28at.com

使用方式如下:q3h28資訊網——每日最新資訊28at.com

apiVersion: v1kind: Podmetadata:  name: pod-cm-3  namespace: demo  labels:    app: pod-cm-3spec:  nodeName: k8s-worker-2  containers:    - name: pod-cm-3      image: nginx      imagePullPolicy: IfNotPresent      ports:        - containerPort: 80          hostPort: 8080      volumeMounts:        - name: workdir          mountPath: /usr/share/nginx/html  volumes:    - name: workdir      configMap:        name: democm        optional: true

觀察volume卷下面的內容:q3h28資訊網——每日最新資訊28at.com

進入到容器的/usr/share/nginx/html目錄下,可以看到configMap定義的key-value會出現此目錄下,并且會有一個類似時間的文件。進入到文件夾里,可以看到對應的db_host和db_name文件。q3h28資訊網——每日最新資訊28at.com

q3h28資訊網——每日最新資訊28at.com

q3h28資訊網——每日最新資訊28at.com

如果configMap變化之后,對應的會生成新的文件:q3h28資訊網——每日最新資訊28at.com

q3h28資訊網——每日最新資訊28at.com

二、實踐

1.編排部署configMap

編排部署configMap,查看部署后的configMap信息:q3h28資訊網——每日最新資訊28at.com

[root@k8s-master configmap]# kubectl apply -f configmap.yamlconfigmap/democm created[root@k8s-master configmap]# kubectl get cm -n demoNAME     DATA   AGEdemocm   2      11s[root@k8s-master configmap]# kubectl describe cm democm -n demoName:         democmNamespace:    demoLabels:       <none>Annotations:  <none>Data====db_host:----172.19.132.23db_name:----demodbEvents:  <none>

2.env方式

從這里可以看到env方式定義的yaml里的env已經被放入到容器的環境變量里的,只不過env里的值是從configMap里取的。q3h28資訊網——每日最新資訊28at.com

[root@k8s-master configmap]# kubectl exec -it pod-cm-1 -n demo -- /bin/sh/ #/ # evn/bin/sh: evn: not found/ # envKUBERNETES_PORT=tcp://10.96.0.1:443KUBERNETES_SERVICE_PORT=443HOSTNAME=pod-cm-1SHLVL=1HOME=/rootTERM=xtermKUBERNETES_PORT_443_TCP_ADDR=10.96.0.1PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/binKUBERNETES_PORT_443_TCP_PORT=443KUBERNETES_PORT_443_TCP_PROTO=tcpdb_host_app=172.19.132.23KUBERNETES_PORT_443_TCP=tcp://10.96.0.1:443KUBERNETES_SERVICE_PORT_HTTPS=443KUBERNETES_SERVICE_HOST=10.96.0.1PWD=/db_name_app=demodb

3.envFrom方式

從這里可以看到envFrom方式是直接把configMap的key-value放入到容器的環境變量里的。q3h28資訊網——每日最新資訊28at.com

[root@k8s-master configmap]# kubectl apply -f pod_configmap_2.yamlpod/pod-cm-2 created[root@k8s-master configmap]# kubectl exec -it pod-cm-2 -n demo -- /bin/sh/ #/ # envKUBERNETES_SERVICE_PORT=443KUBERNETES_PORT=tcp://10.96.0.1:443HOSTNAME=pod-cm-2SHLVL=1HOME=/rootdb_name=demodbTERM=xtermKUBERNETES_PORT_443_TCP_ADDR=10.96.0.1PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/binKUBERNETES_PORT_443_TCP_PORT=443KUBERNETES_PORT_443_TCP_PROTO=tcpKUBERNETES_SERVICE_PORT_HTTPS=443KUBERNETES_PORT_443_TCP=tcp://10.96.0.1:443KUBERNETES_SERVICE_HOST=10.96.0.1PWD=/db_host=172.19.132.23

4.volumes方式

這種方式可以看到,volumes方式并沒有把configMap的值放入到環境變量。q3h28資訊網——每日最新資訊28at.com

[root@k8s-master configmap]# kubectl apply -f pod_configmap_3.yamlpod/pod-cm-3 created[root@k8s-master configmap]# kubectl exec -it pod-cm-3 -n demo -- /bin/sh# envKUBERNETES_SERVICE_PORT=443KUBERNETES_PORT=tcp://10.96.0.1:443HOSTNAME=pod-cm-3HOME=/rootPKG_RELEASE=1~bookwormTERM=xtermKUBERNETES_PORT_443_TCP_ADDR=10.96.0.1NGINX_VERSION=1.25.2PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/binKUBERNETES_PORT_443_TCP_PORT=443NJS_VERSION=0.8.0KUBERNETES_PORT_443_TCP_PROTO=tcpKUBERNETES_PORT_443_TCP=tcp://10.96.0.1:443KUBERNETES_SERVICE_PORT_HTTPS=443KUBERNETES_SERVICE_HOST=10.96.0.1PWD=/

但是可以看到configMap的key-value被寫入到了文件里。q3h28資訊網——每日最新資訊28at.com

# cd /usr/share/nginx/html# lsdb_host  db_name# cat db_host172.19.132.23# cat db_namedemodb

q3h28資訊網——每日最新資訊28at.com

5.修改configMap值

修改configMap值,然后重新部署configMap,繼續觀察這3種方式。q3h28資訊網——每日最新資訊28at.com

用命令kubectl exec -it pod-cm-xxxxxx -n demo -- /bin/sh進入到容器后,可以觀察到:q3h28資訊網——每日最新資訊28at.com

  • env方式和envFrom方式方式對應的值沒有變化,需要重啟Pod后才生效。
  • volumes方式的值會自動變化。

三、總結

本文總結了configMap使用的3種方式:env方式、envFrom方式、volumes方式。q3h28資訊網——每日最新資訊28at.com

env方式和envFrom方式方式說白了是往容器里注入了環境變量,在容器啟動的時候,就已經注入了,無法修改。每次修改configMap的key-value,需要重啟Pod才能生效。q3h28資訊網——每日最新資訊28at.com

volumes方式的方式,實際上把configMap的key-value寫入到了容器對應的volume卷下,而且每次configMap變更,都會把最新值寫入到volume卷下,這樣容器每次都能取到最新值。q3h28資訊網——每日最新資訊28at.com

本文鏈接:http://www.tebozhan.com/showinfo-26-14316-0.html為啥有的ConfigMap要重啟Pod才生效

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 前端項目重構的深度思考和復盤

下一篇: 圖形編輯器開發:實現自定義規則輸入框組件

標簽:
  • 熱門焦點
  • 摸魚心法第一章——和配置文件說拜拜

    為了能摸魚我們團隊做了容器化,但是帶來的問題是服務配置文件很麻煩,然后大家在群里進行了“親切友好”的溝通圖片圖片圖片圖片對比就對比,簡單對比下獨立配置中心和k8s作為配
  • K8S | Service服務發現

    一、背景在微服務架構中,這里以開發環境「Dev」為基礎來描述,在K8S集群中通常會開放:路由網關、注冊中心、配置中心等相關服務,可以被集群外部訪問;圖片對于測試「Tes」環境或者
  • 三言兩語說透柯里化和反柯里化

    JavaScript中的柯里化(Currying)和反柯里化(Uncurrying)是兩種很有用的技術,可以幫助我們寫出更加優雅、泛用的函數。本文將首先介紹柯里化和反柯里化的概念、實現原理和應用
  • 深度探索 Elasticsearch 8.X:function_score 參數解讀與實戰案例分析

    在 Elasticsearch 中,function_score 可以讓我們在查詢的同時對搜索結果進行自定義評分。function_score 提供了一系列的參數和函數讓我們可以根據需求靈活地進行設置。近期
  • Temu起訴SHEIN,跨境電商戰事升級

    來源 | 伯虎財經(bohuFN)作者 | 陳平安日前據外媒報道,拼多多旗下跨境電商平臺Temu正對競爭對手SHEIN提起新訴訟,訴狀稱Shein&ldquo;利用市場支配力量強迫服裝廠商與之簽訂獨家
  • 認真聊聊東方甄選:如何告別低垂的果實

    來源:山核桃作者:財經無忌爆火一年后,俞敏洪和他的東方甄選依舊是頗受外界關心的&ldquo;網紅&rdquo;。7月5日至9日,為期5天的東方甄選&ldquo;甘肅行&rdquo;首次在自有App內直播,
  • 超級標準版旗艦!iQOO 11S全球首發iQOO超算獨顯芯片

    上半年已接近尾聲,截至目前各大品牌旗下的頂級旗艦都已悉數亮相,而下半年即將推出的頂級旗艦已經成為了數碼圈爆料的主流,其中就包括全新的iQOO 11S系
  • 英特爾Xe-HP項目終止,將專注Xe-HPC/HPG系列顯卡

    據10 月 31 日消息報道,英特爾高級副總裁兼加速計算系統和圖形事業部總經理 表示,Xe-HP“ Arctic Sound” 系列服務器 GPU 已經應用于 oneAPI devcloud 云服
  • 利用職權私自解除被封帳號 Meta開除20多名員工

    11月18日消息,據外媒援引知情人士表示,過去一年時間內,Facebook母公司Meta解雇或處罰了20多名員工以及合同工,指控這些人通過內部系統以不當方式重置用戶帳號,其
Top