configMap的使用

2019-12-10  本文已影响0人  理想枫林晚

1、创建配置源文件

vi my.cnf

[mysqld]
user=mysql
port=3307

2、创建Pod容器文件

vi  test-mysql-config.yaml

apiVersion: v1
kind: Pod
metadata:
  name: test-configmap
spec:
  containers:
  - name: test-configmap-volume
    image: busybox
    args:
    - sleep
    - "86400"
    volumeMounts:
    - name: mysqlcfmap
      mountPath: "/mysqlcfmap"
      readOnly: true
  volumes:
  - name: mysqlcfmap
    configMap:
       name: mysqlcfmap

3、创建configMap

kubectl  create configmap mysqlcfmap --from-file=./my.cnf

4、查看configMap信息

kubectl get configmaps mysqlcfmap -o yaml

5、创建Pod

kubectl create -f test-mysql-config.yaml

6、进入Pod查看

kubectl exec -it test-configmap sh

cat mysqlcfmap/my.cnf

成功!!

configMap案例

1 从普通文件创建

  kubectl  create  configmap mysql-cnf  --from-file=my-cnf=./my.cnf

2 从 yaml 文件创建

# ./kustomization.yaml
configMapGenerator:
- name:  mysql-cnf
  files:
  - my-cnf=./my.cnf


kubectl apply -f ./kustomization.yaml

Pod使用

1、更新
更新 Etcd 中配置数据

apiVersion: v1
kind: Pod
metadata:
  name: test-configmap
spec:
  containers:
  - name: test-configmap-volume
    image: busybox
    args:
    - sleep
    - "86400"
    volumeMounts:
    - name: mysqlcfmap
      mountPath: "/etc/config" # 挂载到容器中目录,这个目录会自动创建
  volumes:
  - name: mysqlcfmap
    configMap:
       name: mycnf  # 创建 configmap 对象的名称
       items:
       - key: my-cnf   # 创建  configmap 对象时指定的 key
         path: my.cnf  # 容器 a 目录中的文件名

    # /etc/config/my.cnf  # 软链接

2、不更新

apiVersion: v1
kind: Pod
metadata:
  name: test-configmap
spec:
  containers:
  - name: test-configmap-volume
    image: busybox
    args:
    - sleep
    - "86400"
    volumeMounts:
    - name: mysqlcfmap
      mountPath: "/etc/my.cnf" # 挂载到容器中目录,这个目录会自动创建
      subPath: my.cnf
  volumes:
  - name: mysqlcfmap
    configMap:
       name: mycnf  # 创建 configmap 对象的名称
       items:
       - key: my-cnf   # 创建  configmap 对象时指定的 key
         path: my.cnf  # 容器 a 目录中的文件名

使用key,path的方式可以动态更新数据
注意: 使用subPath的方式,无法实现动态更新
根据场景合理使用

上一篇下一篇

猜你喜欢

热点阅读