k8s配置資源管理:
Secret
Configmap
Secret:保存密碼,token,敏感的k8s資源
這類數(shù)據(jù)可以存放在鏡像當中,但是防止secret當中可以更方便控制,減少暴露的風險
保存加密的信息
Secret的類型:
四種類型:
Docker-registry:存儲docker倉庫認證信息,以及docker組件認證成功(私有)
Generic:是secret的默認模式,opaque base64加密編碼的secret用戶自定義的密碼,密鑰等等
Tls: tls/SSL用于存儲證書和私鑰,https
系統(tǒng)自建的kubenetes.io/server-account-token用來訪問系統(tǒng)的apiVersion,pod會使用kubenetes.io/server-account-token創(chuàng)建的secret和apiversion通信,自動掛載到pod的/run/secret/kubenetes.io/serveraccount
三種使用方式:
- 掛載的方式,secret掛載到pod當中一個或多個容器上的卷里面
- 把secret作為容器的環(huán)境變量
- Docker-register可以作為集群拉取鏡像時使用,使用secret可以實現(xiàn)免密登錄
演示掛載方式:
陳述式創(chuàng)建:
聲明試創(chuàng)建:
Date里面保存的是加密的核心信息,到了容器內(nèi)部可以直接引用,解密狀態(tài)
再舉一例:
加密
查看詳情
陳述式演示:
將剛剛創(chuàng)建的pod
apiVersion: v1
kind: Pod
metadata:
??name: mypod
spec:
??containers:
??- name: nginx
????image: nginx:1.22
????volumeMounts:
????- name: secrets
??????mountPath: "/etc/secrets"
??????readOnly: false
??volumes:
??- name: secrets
????secret:
??????secretName: mysecret2
去容器內(nèi)驗證:
演示把secret作為容器的環(huán)境變量
演示Docker-register可以作為集群拉取鏡像時使用,使用secret可以實現(xiàn)免密登錄
kubectl create secret docker-registry myharbor --docker-server=20.0.0.74 --docker-username=admin --docker-password=123456
apiVersion: v1
kind: Pod
metadata:
??name: mypod2
spec:
??containers:
??- name: nginx1
????image: hub.test.com/library/nginx:v1
??imagePullSecrets:
??- name: myharbor
退出登錄,方便演示
指定節(jié)點
apiVersion: v1
kind: Pod
metadata:
??name: mypod3
spec:
??containers:
??- name: nginx1
????image: hub.test.com/library/nginx:v1
??imagePullSecrets:
??- name: myharbor
??nodeName: master01 ?????????
總結(jié)secret的三種方式:
創(chuàng)建可以時陳述式創(chuàng)建和聲明試創(chuàng)建
引用方式:
掛載使用
設(shè)定環(huán)境變量
Docker-register
ConfigMap:(重要)
保存的是不需要加密的信息,configMap是1.2引入的功能,應(yīng)用程序會從配置文件,命令參數(shù),以及環(huán)境變量當中讀取配置信息
Configmap在創(chuàng)建容器中,給他注入我們需要的配置信息,既可以是單個的屬性也可以是整個容器的配置文件
創(chuàng)建方式:陳述式和聲明式
kubectl create configmap game --from-file=/opt/configmap/wang.txt --from-file=/opt/configmap/zhao.txt
從指定文件創(chuàng)建,可以是一個文件,還可以是多個文件
使用字面值創(chuàng)建
信息不再是加密的
演示聲明式:
創(chuàng)建已完成,如何使用;
apiVersion: v1
kind: Pod
metadata:
??name: mypod5
spec:
??containers:
??- name: nginx
????image: nginx:1.22
????env:
??????- name: USER
????????valueFrom:
??????????configKeyRef:
????????????name: game5
????????????key: wdf
??????- name: UESR1
????????valueFrom:
??????????configKeyRef:
????????????name: game5
????????????key: kb
數(shù)據(jù)卷使用configmap(必問)
1.我們通過數(shù)據(jù)卷的形式,把配置文件傳給了pod內(nèi)部容器
2.Configmap的熱更新,熱更新是不會重啟的,在pod運行的情況下,對configmap的部署進行修改,直接生效(反應(yīng)到容器當中)
3.Configmap的熱更新不會觸發(fā)pod的滾動更新機制(deployment)
4.Version/configmap來觸發(fā)滾動更新
worker_processes ?2;
events {
????worker_connections ?1024;
}
http {
????default_type ?application/octet-stream;
????sendfile ???????on;
????keepalive_timeout ?65;
????server {
????????listen ??????8081;
????????server_name ?localhost;
????????charset utf-8;
????????location / {
????????????root ??html;
????????????index ?index.html index.php;
????????}
????????error_page ??500 502 503 504 ?/50x.html;
????????location = /50x.html {
????????????root ??html;
????????}
}
}
kind: Deployment
metadata:
??name: nginx1
??labels:
????app: nginx1
spec:
??replicas: 3
??selector:
????matchLabels:
??????app: nginx1
??template:
????metadata:
??????labels:
????????app: nginx1
????spec:
??????containers:
??????- name: nginx1
????????image: nginx:1.22
????????ports:
????????- containerPort: 8081
????????volumeMounts:
??????????- name: nginx-config
????????????mountPath: /etc/nginx
??????????- name: nginx-mount
????????????mountPath: /usr/share/nginx/html
??????volumes:
??????- name: nginx-config
????????configMap:
??????????name: nginx-con
??????- name: nginx-mount
????????hostPath:
??????????path: /opt/html
??????????type: DirectoryOrCreate
1.我們通過數(shù)據(jù)卷的形式,把配置文件傳給了pod內(nèi)部容器
2.Configmap的熱更新,熱更新是不會重啟的,在pod運行的情況下,對configmap的部署進行修改,直接生效(反應(yīng)到容器當中)
3.Configmap的熱更新不會觸發(fā)pod的滾動更新機制(deployment)
4.Version/configmap來觸發(fā)滾動更新
顯示還是404,配置文件沒有重啟
kubectl patch deployments.apps nginx1 --patch '{"spec": {"template": {"metadata": {"annotations": {"version/config": "20240116"}}}}}'
總結(jié):
Secret:主要保存加密文件,主要使用方式就是掛載方式
Configmap:把配置文件傳送給容器,主要方式也是掛載方式
Configmap的熱更新:熱更新可以直接反應(yīng)到容器的內(nèi)部,也不會觸發(fā)pod的更新機制,如果不是需要重啟的配置,都可以直接生效
Version/configmap來觸發(fā)滾動更新
kubectl patch deployments.apps nginx1 --patch '{"spec": {"template": {"metadata": {"annotations": {"version/config": "20240116"}}}}}'
需要重啟時,可以重啟pod
更新:就是把配置信息傳送給容器內(nèi),重啟也是一樣文章來源:http://www.zghlxwxcb.cn/news/detail-810857.html
Configmap:就是把配置信息傳送給容器,鍵值對形式保存的,非加密的信息文章來源地址http://www.zghlxwxcb.cn/news/detail-810857.html
到了這里,關(guān)于k8s配置資源管理的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!