欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 家装 > 【Kubernetes】k8s集群配置资源管理

【Kubernetes】k8s集群配置资源管理

2024/10/24 19:16:14 来源:https://blog.csdn.net/weixin_68840588/article/details/141315273  浏览:    关键词:【Kubernetes】k8s集群配置资源管理

目录

一.Secret

1.Secret概念

2.Secret 的类型: 

3.Opaque的创建、使用

1)挂载方式引用Opaque

2)环境变量方式引用

二、ConfigMap

1.概念

2.创建 ConfigMap

3.Pod 中使用 ConfigMap 

1)作为数据卷挂载使用

2)作为环境变量引用使用

4.补充知识


一.Secret

1.Secret概念

Secret 是用来保存密码、token、密钥等敏感数据的 k8s 资源,这类数据虽然也可以存放在 Pod 或

者镜像中,但是放在 Secret 中是为了更方便的控制如何使用数据,并减少暴露的风险。

2.Secret 的类型: 

1)kubernetes.io/service-account-token:由 Kubernetes 自动创建,用来访问 APIServer 的 Secret,Pod 会默认使用这个 Secret 与 APIServer 通信, 并且会自动挂载到 Pod 的 /var/run/secrets/kubernetes.io/serviceaccount 目录中;
2)Opaque :base64 编码格式的 Secret,用来存储用户自定义的密码、密钥等,默认的 Secret 类型;
3)kubernetes.io/dockerconfigjson :用来存储私有 docker registry 的认证信息。
4)kubernetes.io/tls :用来存储 TLS 证书和私钥信息。

Pod 需要先引用才能使用某个 secret,Pod 有 3 种方式来使用 secret:

  • 作为挂载到一个或多个容器上的卷 中的文件。
  • 作为容器的环境变量。
  • 由 kubelet 在为 Pod 拉取镜像时使用

3.Opaque的创建、使用

kubectl create -n xy101 secret generic liliang-cecret --from-file=./username.txt --from-file=./password.txtkubectl create secret -n xy101 generic li-secret --from-file=demo/kubectl create -n xy101 secret generic scj-secret --from-literal=myname=scj --from-literal=myclass=xy101

1)挂载方式引用Opaque

将 Secret 挂载到 Volume 中,以 Volume 的形式挂载到 Pod 的某个目录下

 vim demo1-pod.yaml
apiVersion: v1
kind: Pod
metadata:labels:run: demo1-podname: demo1-podnamespace: xy101
spec:volumes:- name: secret-volsecret:secretName: liliang-cecretcontainers:- image: nginxname: myappports:- containerPort: 80resources: {}volumeMounts:- name: secret-volmountPath: /mntdnsPolicy: ClusterFirstrestartPolicy: Always

2)环境变量方式引用

将 Secret 导出到环境变量中

vim demo2-pod.yaml
apiVersion: v1
kind: Pod
metadata:creationTimestamp: nulllabels:run: demo2-podname: demo2-podnamespace: xy101
spec:containers:- image: nginxname: myappports:- containerPort: 80resources: {}env:- name: MYSCHOOLvalueFrom:secretKeyRef:name: scj-secretkey: mynameenvFrom:- secretRef:name: scj-secretdnsPolicy: ClusterFirstrestartPolicy: Always
status: {}

二、ConfigMap

1.概念

与Secret类似,区别在于ConfigMap保存的是不需要加密配置的信息。
ConfigMap 功能在 Kubernetes1.2 版本中引入,许多应用程序会从配置文件、命令行参数或环境变量中读取配置信息。ConfigMap API 给我们提供了向容器中注入配置信息的机制,ConfigMap 可以被用来保存单个属性,也可以用来保存整个配置文件或者JSON二进制大对象。
应用场景:应用配置

2.创建 ConfigMap

方法一

只要指定为一个文件就可以从单个文件中创建 ConfigMap
--from-file 这个参数可以使用多次,即可以使用两次分别指定上个实例中的那两个配置文件kubectl create cm demo-cm --from-file=chen.cfg --from-file=tan.cfg
--from-file 指定在目录下的所有文件都会被用在 ConfigMap 里面创建一个键值对,键的名字就是文件名,值就是文件的内容
kubectl create cm demo1-cm --from-file=configmap/

方法二

使用文字值创建,利用 --from-literal 参数传递配置信息
kubectl create cm kv-cm --from-literal=myname=scj --from-literal=myclass=xy101 --from-literal=mylove=tangjun

3.Pod 中使用 ConfigMap 

1)作为数据卷挂载使用

vim demo1-pod.yaml
apiVersion: v1
kind: Pod
metadata:creationTimestamp: nulllabels:run: demo-podname: demo-pod
spec:volumes:- name: cm-vol       #定义存储卷名称configMap:        name: demo-cm    #指定cm资源名称containers:- image: soscscs/myapp:v1name: myappports:- containerPort: 80resources: {}volumeMounts:      #指定挂载容器信息- name: cm-volmountPath: /mntdnsPolicy: ClusterFirstrestartPolicy: Always
status: {}

2)作为环境变量引用使用

vim demo2-pod.yaml
apiVersion: v1
kind: Pod
metadata:creationTimestamp: nulllabels:run: demo2-podname: demo2-pod
spec:containers:- image: soscscs/myapp:v1name: myappports:- containerPort: 80resources: {}env:               #指定环境变量- name: MYNAME  value: tc- name: MYCLASS valueFrom:         #变量值从什么地方而来configMapKeyRef:name: kv-cmkey: myclassdnsPolicy: ClusterFirstrestartPolicy: Always
status: {}
vim demo3-pod.yaml
apiVersion: v1
kind: Pod
metadata:creationTimestamp: nulllabels:run: demo3-podname: demo3-pod
spec:containers:- image: soscscs/myapp:v1name: myappports:- containerPort: 80resources: {}envFrom:- configMapRef:name: kv-cmdnsPolicy: ClusterFirstrestartPolicy: Always
status: {}

4.补充知识

kubectl create cm web-cm --from-file=./vim demo4-pod.yaml
apiVersion: v1
kind: Pod
metadata:creationTimestamp: nulllabels:run: demo4-podname: demo4-pod
spec:volumes:- name: web-volconfigMap:name: web-cmcontainers:- image: soscscs/myapp:v1name: myappports:- containerPort: 80resources: {}volumeMounts:- name: web-volmountPath: /usr/share/nginx/htmldnsPolicy: ClusterFirstrestartPolicy: Always
status: {}kubectl apply -f demo4-pod.yaml 
kubectl edit cm web-cm   修改其中的chen.html为tc通过数据卷挂载使用的支持热更新
vim demo3-pod.yaml
apiVersion: v1
kind: Pod
metadata:creationTimestamp: nulllabels:run: demo3-podname: demo3-pod
spec:containers:- image: soscscs/myapp:v1name: myappports:- containerPort: 80resources: {}envFrom:- configMapRef:name: kv-cmdnsPolicy: ClusterFirstrestartPolicy: Always
status: {}
kubectl edit cm kv-cm需改其中myclass为xy102环境变量引用的方式使用configmap在线修改内容不会进行更新

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com