久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

如何理解kubernetes的配置中心configmap

181次閱讀
沒有評論

共計 4122 個字符,預計需要花費 11 分鐘才能閱讀完成。

本篇文章給大家分享的是有關如何理解 kubernetes 的配置中心 configmap,丸趣 TV 小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著丸趣 TV 小編一起來看看吧。

在企業中,一般都有 2 - 4 種環境,開發,測試,交付,生產這四種。這幾種環境的配置也有所變化,我們在部署的時候通常不能一個配置文件部署四個環境。不通用。特別是容器化環境。

在容器化應用中,每個環境都要獨立的打一個鏡像再給鏡像一個特有的 tag,這很麻煩,這就要用到 k8s 原生的配置中心 configMap 就是用解決這個問題的。下面看示例。

使用 configMap 部署應用。
這里使用 nginx 來做示例,簡單粗暴。
默認的 nginx 數據目錄是在:/usr/share/nginx/html   目錄,下面我寫一個配置指定端口和數據目錄

1、先將配置文件加載到 configMap 中
編寫 nginx 配置

[root@server yaml]# vim nginx.conf 
server {
 listen 8081; ## 端口為 8081
 server_name _;
 root /html; ## 改數據目錄為 /html
 location / { }
}

將上面寫的 nginx.conf 加載到 configMap 中
創建 configMap 有三個方法
1) 單個 key
命令格式:
例:kubectl create configmap special-config –from-literal=special.how=very –from-literal=special.type=charm
查看:kubectl get configmaps special-config -o yaml

2)基于目錄,將目錄下的所有文件加載到 configMap 中
命令格式:
例:kubectl create configmap  tomcat-conf  –from-file=configmap/conf
查看:kubectl get configmaps tomcat-conf -o yaml

3)基于單個 file
命令格式:
例:kubectl create configmap game-conf  –from-file=configmap/conf/game.properties
查看:kubectl get configmaps tomcat-conf -o yaml

注意事項:
使用 configmap 的 pod 必須要和 configmap 配置在同一個 namespaces,否則識別不了。在創建 configmap 時在后面加上 -n namespaces 名稱
例:kubectl create configmap  tomcat-conf  –from-file=configmap/conf  -n tomcat

這里使用第 3 種:基于單個 file 的方法,其它方法也很簡單。
格式:
命令       動作   模塊           自定義名稱   加載的文件
kubectl create configmap nginx-config  –from-file=./nginx.conf

[root@server yaml]# kubectl create configmap nginx-config --from-file=./nginx.conf 
configmap/nginx-config created ## 提示創建成功
[root@server yaml]# 
[root@server yaml]# kubectl get configmaps ## 查看創建的 nginx-config 配置是否成功
NAME DATA AGE
nginx-config 1 5s

驗證 configMap 中的 nginx-config 配置是否和先前 vi 的 nginx.conf 一樣

[root@server yaml]# kubectl get configmaps/nginx-config -o yaml
apiVersion: v1
data:
 nginx.conf: |+ ## 這一段就是內容,nginx.conf 是該文件的鍵
 server {
 listen 8081;
 server_name _;
 root /html;
 location / { }
 }
kind: ConfigMap
metadata:
 creationTimestamp:  2019-01-31T09:20:08Z 
 name: nginx-config
 namespace: default
 resourceVersion:  416047 
 selfLink: /api/v1/namespaces/default/configmaps/nginx-config
 uid: 67199b66-2539-11e9-821c-000c2963b9a7
[root@server yaml]#

可以看到 data: 下面的 nginx.conf 里面的內容和我們上面 vi 的內容一致
接下來在部署應用的時候使用該配置

編寫部署應用的 yaml 文件

[root@server yaml]# vim nginx.yaml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
 name: my-nginx
spec:
 replicas: 1
 template:
 metadata:
 labels:
 app: my-nginx
 spec:
 containers:
 - name: my-nginx
 image: nginx:1.9
 ports:
 - containerPort: 8081
 volumeMounts: -- 就是這一段使用 configMap 配置
 - mountPath: /etc/nginx/conf.d -- 將配置文件掛載到哪里
 name: config
 - mountPath: /html -- 指定數據目錄
 name: data
 volumes:
 - name: data -- 指定數據目錄創建
 emptyDir: {}
 - name: config -- 指定 config 使用 configMap
 configMap:
 name: nginx-config -- 指定使用 configMap 中的 nginx-config 配置
 items: -- 注:也可不指定 items,那默認是 nginx-config 里的所有值都掛載
 - key: nginx.conf -- 使用 nginx-config 配置的 nginx.conf 鍵里的內容
 path: nginx.conf
apiVersion: v1
kind: Service
metadata:
 name: nginx-svc
spec:
 type: NodePort
 selector:
 app: my-nginx
 ports:
 - protocol: TCP
 port: 8081
 targetPort: 8081
 nodePort: 28081

部署應用

[root@server yaml]# kubectl create -f nginx.yaml 
deployment.extensions/my-nginx created
service/nginx-svc created
[root@server yaml]# 
[root@server yaml]# 
[root@server yaml]# kubectl get pod 
NAME READY STATUS RESTARTS AGE
my-nginx-55fd7587b7-7fscq 1/1 Running 0 9s
[root@server yaml]# 
[root@server yaml]# kubectl get svc |grep nginx
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
nginx-svc NodePort 10.68.230.130  none  8081:28081/TCP 15s

部署成功,pod 已經成功運行,服務發現已經做好了 28081 外部訪問入口

2、驗證 nginx 應用是否使用了 configMap 中的 nginx-config
登陸部署的應用 pod 里去查看一下

[root@server yaml]# kubectl exec -it my-nginx-55fd7587b7-7fscq bash -- 登陸容器
root@my-nginx-55fd7587b7-7fscq:/# 
root@my-nginx-55fd7587b7-7fscq:/# cat /etc/nginx/conf.d/nginx.conf -- 查看配置確實是上面 vi 的內容
server {
 listen 8081;
 server_name _;
 root /html;
 location / { }
root@my-nginx-55fd7587b7-7fscq:/# 
root@my-nginx-55fd7587b7-7fscq:/# ls -d /html/ -- 數據目錄也已經創建好了
/html/
root@my-nginx-55fd7587b7-7fscq:/#
root@my-nginx-55fd7587b7-7fscq:/# ls -l /etc/nginx/conf.d/
total 0
lrwxrwxrwx 1 root root 17 Jan 31 09:31 nginx.conf -  ..data/nginx.conf 
 -- 可以看到這個配置文件是一個相對路徑不是實體文件

上面已經驗證了應用確實使用了 configMap 的配置

這樣我們就可以把不同的環境配置文件都在 k8s 里建一份,在部署的時候指定對應環境的配置文件即可。
這就解決了不同環境,在部署應用時要重新打包鏡像的問題。

以上就是如何理解 kubernetes 的配置中心 configmap,丸趣 TV 小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注丸趣 TV 行業資訊頻道。

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-08-25發表,共計4122字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 龙门县| 扶绥县| 陇南市| 阿勒泰市| 庆安县| 普陀区| 若尔盖县| 陈巴尔虎旗| 合水县| 榆树市| 托克托县| 新巴尔虎左旗| 金阳县| 丹江口市| 宽城| 梁山县| 舞阳县| 阿勒泰市| 体育| 高安市| 嘉祥县| 荥经县| 碌曲县| 双城市| 双辽市| 荆州市| 阿巴嘎旗| 广汉市| 肃北| 新泰市| 姜堰市| 会泽县| 陆丰市| 华安县| 南靖县| 通辽市| 文安县| 九龙城区| 威信县| 建瓯市| 巨鹿县|