configmap和secret类似,不过configmap存放的非加密的信息,常用于存放服务的配置文件
一. 以volume形式挂载configmap文件
1. 创建配置文件
#创建一个配置文件 (假设是redis)
cat > redis.properties <<EOF
redis.host=127.0.0.1
redis.port=6379
redis.password=123456
EOF
2. 创建confimap
#获取yaml
kubectl create configmap redis-config --from-file=redis.properties -o yaml --dry-run > redis-config-configmap.yaml
#查看
apiVersion: v1
data:
redis.properties: |
redis.host=127.0.0.1
redis.port=6379
redis.password=123456
kind: ConfigMap
metadata:
creationTimestamp: null
name: redis-config
3. 部署
kubectl create -f redis-config-configmap.yaml
4. 查看详细信息
[root@k8s-master01 ~]# kubectl describe configmap redis-config
Name: redis-config
Namespace: default
Labels: <none>
Annotations: <none>
Data
====
redis.properties: #配置文件名称
---- #下面是包含的数据
redis.host=127.0.0.1
redis.port=6379
redis.password=123456
Events: <none>
5. 创建pod并添加挂载
cat > cm.yaml <<EOF
apiVersion: v1
kind: Pod
metadata:
name: mypod
spec:
containers:
- name: busybox
image: busybox
command: [ "/bin/sh","-c","cat /etc/config/redis.properties" ]
#执行命令,将挂载的文件信息输出
volumeMounts: #挂载到容器
- name: config-volume
mountPath: /etc/config #挂载的目录
volumes:
- name: config-volume
configMap: #指定为configmap文件
name: redis-config #刚才创建的redis-config的cm文件
restartPolicy: Never
EOF
#部署
kubectl create -f cm.yaml
查看容器信息
#查看
[root@k8s-master01 ~]# kubectl get pod
NAME READY STATUS RESTARTS AGE
mypod 0/1 Completed 0 20s
#因为执行的任务结束了,所以就退出了,Completed表示完成并退出
#查看日志
[root@k8s-master01 ~]# kubectl logs mypod
redis.host=127.0.0.1
redis.port=6379
redis.password=123456
二. 以变量形式挂载configmap文件
1.创建配置文件
cat > myconfig-var.yaml <<EOF
apiVersion: v1
kind: ConfigMap
metadata:
name: myconfig-var
data:
special.level: info
special.type: hello
EOF
#部署
kubectl create -f myconfig-var.yaml
2. 创建pod文件并关联
cat > mypod-var.yaml <<EOF
apiVersion: v1
kind: Pod
metadata:
name: mypod-var
spec:
containers:
- name: busybox
image: busybox:latest
command: [ "/bin/sh", "-c", "echo \$(LEVEL) \$(TYPE)" ]
env:
- name: LEVEL
valueFrom:
configMapKeyRef:
name: myconfig-var
key: special.level
- name: TYPE
valueFrom:
configMapKeyRef:
name: myconfig-var
key: special.type
restartPolicy: Never
EOF
#部署
kubectl create -f mypod-var.yaml
3. 查看容器信息
[root@k8s-master01 ~]# kubectl get pod
NAME READY STATUS RESTARTS AGE
mypod 0/1 Completed 0 8m57s
mypod-var 0/1 Completed 0 5s
[root@k8s-master01 ~]# kubectl logs mypod-var
info hello
#因为已经将配置挂载到容器变量中,所以可以输出对应变量的一个值