视频来源:B站《(2022版)最新、最全、最详细的Kubernetes(K8s)教程,从K8s安装到实战一套搞定》 一边学习一边整理老师的课程内容及试验笔记,并与大家分享,侵权即删,谢谢支持! 附上汇总贴:(2022版)一套教程搞定k8s安装到实战汇总COCOgsta的博客CSDN博客 Secret用来保存敏感信息的,比如密码、令牌或者key、Redis、MySQL密码。 Secret介绍地址:kubernetes。iodocsconcep 特殊字符单引号无需转义 ImagePullSecret:Pod拉取私有镜像仓库时使用的账号密码,里面的帐号信息,会传递给kubelet,然后kubelet就可以拉去有密码的仓库里面的镜像。 创建一个dockerregistry的secret〔rootk8smasterlb〕kubectlcreatesecretdockerregistrydockersecret2dockerserverhub。docker。comdockerusernameDOCKERUSERdockerpasswordDOCKERPASSWORDdockeremailDOCKEREMAILsecretdockersecret2created复制代码 testenvpod。yamlapiVersion:v1kind:Podmetadata:name:dapitestpodspec:nodeName:k8snode01imagePullSecrets:name:dockersecret2containers:name:testcontainerimage:busybox:1。28imagePullPolicy:IfNotPresentcommand:〔binsh,c,sleep3600〕volumeMounts:name:configvolumemountPath:mntenvFrom:configMapRef:name:specialconfigenv:Definetheenvironmentvariablename:SPECIALLEVELKEYvalueFrom:configMapKeyRef:TheConfigMapcontainingthevalueyouwanttoassigntoSPECIALLEVELKEYname:specialconfigSpecifythekeyassociatedwiththevaluekey:special。howname:testvalue:testvaluename:mysqlHostAddressvalue:10。10。10。10name:mysqlPortvalue:3306onlystringrestartPolicy:Nevervolumes:name:configvolumeconfigMap:name:specialconfig复制代码 subPath解决目录覆盖的问题apiVersion:v1kind:Podmetadata:name:dapitestpodspec:nodeName:k8snode01imagePullSecrets:name:dockersecret2containers:name:testcontainerimage:busybox:1。28imagePullPolicy:IfNotPresentcommand:〔binsh,c,sleep3600〕volumeMounts:mountPath:etcnginxnginx。confname:configvolumesubPath:etcnginxnginx。confenvFrom:configMapRef:name:specialconfigenv:Definetheenvironmentvariablename:SPECIALLEVELKEYvalueFrom:configMapKeyRef:TheConfigMapcontainingthevalueyouwanttoassigntoSPECIALLEVELKEYname:specialconfigSpecifythekeyassociatedwiththevaluekey:special。howname:testvalue:testvaluename:mysqlHostAddressvalue:10。10。10。10name:mysqlPortvalue:3306onlystringrestartPolicy:Nevervolumes:configMap:defaultMode:420items:key:nginx。confpath:etcnginxnginx。confname:nginxconfname:configvolume复制代码 ConfigMap和Secret如果是以subPath的形式挂载的,那么Pod是不会感知到ConfigMap和Secret的更新的。 如果Pod的变量来自于ConfigMap和Secret中定义的内容,那么ConfigMap和Secret更新后,也不会更新Pod中的变量。 解决办法apiVersion:v1kind:Podmetadata:name:dapitestpodspec:nodeName:k8snode01imagePullSecrets:name:dockersecret2containers:name:testcontainerimage:busybox:1。28imagePullPolicy:IfNotPresentcommand:〔binsh,c,sleep3600〕volumeMounts:mountPath:etcnginxnginx。confname:configvolumesubPath:etcnginxnginx。confmountPath:mntname:configvolumenonsubpathenvFrom:configMapRef:name:specialconfigenv:Definetheenvironmentvariablename:SPECIALLEVELKEYvalueFrom:configMapKeyRef:TheConfigMapcontainingthevalueyouwanttoassigntoSPECIALLEVELKEYname:specialconfigSpecifythekeyassociatedwiththevaluekey:special。howname:testvalue:testvaluename:mysqlHostAddressvalue:10。10。10。10name:mysqlPortvalue:3306onlystringrestartPolicy:Nevervolumes:configMap:defaultMode:420items:key:nginx。confpath:etcnginxnginx。confname:nginxconfname:configvolumeconfigMap:defaultMode:420name:nginxconfname:configvolumenonsubpath复制代码 postStart:容器启动之前执行的命令 preStop:容器停止之前执行的命令 热更新ConfigMap或Secret:kubectlcreatecmnginxconffromfilenginx。confdryrunoyamlkubectlreplacef复制代码 immutable:在ConfigMap和Secret的最后加上如下内容,则不再可以edit该ConfigMap或Secretimmutable:true复制代码