文章目录
1. configmap的作用
configmap和secret是两种特殊的存储卷,它们不是给pod提供存储空间用的,而是给管理员或者用户提供了从外部向pod内部注入信息的方式.
configmap:把配置文件放在配置中心上,然后多个pod读取配置中心的配置文件,不过,configmap中的配置信息都是明文的,所以不安全;
secret:功能和configmap一样,只不过配置中心存储的配置文件不是明文的.configmap和secret也是专属于某个名称空间的.
- Configmap用于保存配置数据,以
键值对
形式存储。 - configMap 资源提供了向 Pod 注入配置数据的方法。
- 旨在让镜像和配置文件解耦,以便实现镜像的可移植性和可复用性。
典型的使用场景:
- 填充环境变量的值
- 设置容器内的命令行参数
- 填充卷的配置文件
2.创建configmap的四种方式:
创建ConfigMap的方式有4种:
- 使用字面值创建
- 使用文件创建
- 使用目录创建
- 编写configmap的yaml文件创建
2.1 使用字面值创建
[kubeadm@server2 ~]$ kubectl create configmap cm1 --from-literal=key1=vules1 #cm1是名字,key1是键,vules1是值
configmap/cm1 created
[kubeadm@server2 ~]$ kubectl get cm
NAME DATA AGE
cm1 1 4s
[kubeadm@server2 ~]$ kubectl describe cm cm1
Name: cm1
Namespace: default
Labels: <none>
Annotations: <none>
Data
====
key1:
----
vules1
Events: <none>
[kubeadm@server2 ~]$ kubectl get cm -o yaml
apiVersion: v1
items:
- apiVersion: v1
data:
key1: vules1
kind: ConfigMap
metadata:
creationTimestamp: "2020-04-25T03:39:08Z"
managedFields:
- apiVersion: v1
fieldsType: FieldsV1
fieldsV1:
f:data:
.: {
}
f:key1: {
}
manager: kubectl
operation: Update
time: "2020-04-25T03:39:08Z"
name: cm1
namespace: default
resourceVersion: "652706"
selfLink: /api/v1/namespaces/default/configmaps/cm1
uid: dc90d656-0d27-4e94-ab7e-3b3ef9096c68
kind: List
metadata:
resourceVersion: ""
selfLink: ""
[kubeadm@server1 configmap]$ kubectl create configmap my-config --from-literal=key1=config1 --from-literal=key2=config2
configmap/my-config created
[kubeadm@server1 configmap]$ kubectl get cm
NAME DATA AGE
my-config 2 10s
[kubeadm@server1 configmap]$
2.2 使用文件创建
key的名称是文件名称
,value的值是文件的内容
[kubeadm@server2 ~]$ kubectl create configmap cm2 --from-file=/etc/resolv.conf # key的名称是文件名称,value的值是这个文件的内容
configmap/cm2 created
[kubeadm@server2 ~]$ kubectl get cm
NAME DATA AGE
cm1 1 5m2s
cm2 1 7s
[kubeadm@server2 ~]$ kubectl describe cm cm2
Name: cm2
Namespace: default
Labels: <none>
Annotations: <none>
Data
====
resolv.conf:
----
nameserver 114.114.114.114
Events: <none>
2.3 使用目录创建
目录中的文件名为key,文件内容是value
[kubeadm@server2 manifest]$ mkdir cm
[kubeadm@server2 manifest]$ cd cm
[kubeadm@server2 cm]$ cp /etc/resolv.conf .
[kubeadm@server2 cm]$ cp /etc/hosts .
[kubeadm@server2 cm]$ ls
hosts resolv.conf
[kubeadm@server2 cm]$ cd ..
[kubeadm@server2 manifest]$ kubectl create configmap cm3 --from-file=cm
# 目录中的文件名为key,文件内容是value
configmap/cm3 created
[kubeadm@server2 manifest]$ kubectl describe cm cm3
Name: cm3
Namespace: default
Labels: <none>
Annotations: <none>
Data
====
hosts:
----
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1