k8s基础概念之三 ConfigMap

一般用configmap去管理一些配置文件,或者是大量的环境变量信息,configmap将配置和pod分开,有一个nginx,nginx.conf---》configmap.nginx。更易于配置文件的更改和管理

secret:secret根倾向于存储和共享敏感,加密的配置信息。

configmap加密,而secret不加密

 

 

ConfigMap的简单命令

复制代码
kubectl create configmap test --from-file=/root/yaml/nginx.yaml 
#将/root/yaml/nginx.yaml文件写入configmap  名字为test(存储配置文件)

kubectl create configmap test02 --from-file=/root/yaml/
#将/root/yaml/目录下的文件写入configmap,configmap 名字为test02

kubectl create configmap test01 --from-literal=MYSQL_ROOT_PASSWORD=123456
#变量储存到configmap,变量名为MYSQL_ROOT_PASSWORD,值为123456,可以跟更多变量,在尾部加--from-literal=key=value  即可


kubectl describe configmaps test
#查询上面的结果
复制代码

 

 

一个简单的configmap文件

复制代码
apiVersion: v1
kind: ConfigMap
metadata:
  nginx
data:
  MYSQL_ROOT_PASSWORD: '123456' 
  #定义一个变量,值类型为字符串,所以需要加引号
  my.cnf: |
    [mysqld]
    pid-file                        = /var/run/mysqld/mysqld.pid
    socket                          = /var/run/mysqld/mysqld.sock
    datadir                         = /var/lib/mysql
    character-set-server            = utf8
    log-error                       = /var/log/mysqld.log
    # 中继日志
    relay-log=mysql-relay-bin
    replicate-wild-ignore-table=mysql.%
    replicate-wild-ignore-table=test.%
    replicate-wild-ignore-table=information_schema.%
    
#文件名为 my.cnf 需要换行的话冒号后面需要加 |   
复制代码

 

简单的使用configmap

复制代码
apiVersion: v1
kind: ConfigMap
metadata:
  name: test04
data:
  MYSQL_ROOT_PASSWORD: '123456' 
  #定义一个变量,值类型为字符串,所以需要加引号
  my.cnf: |
    [mysqld]
    pid-file                        = /var/run/mysqld/mysqld.pid
    socket                          = /var/run/mysqld/mysqld.sock
    datadir                         = /var/lib/mysql
    character-set-server            = utf8
    log-error                       = /var/log/mysqld.log
    # 中继日志
    relay-log=mysql-relay-bin
    replicate-wild-ignore-table=mysql.%
    replicate-wild-ignore-table=test.%
    replicate-wild-ignore-table=information_schema.%
---
kind: Deployment
apiVersion: apps/v1
metadata:
  name: mysql
spec:
  selector:
    matchLabels:
      app: mysql
  template:
    metadata:
      labels:
        app: mysql
    spec:
      containers:
        - name: mysql
          image: mysql:5.7
          imagePullPolicy: IfNotPresent
          volumeMounts:
            - mountPath: /opt    #挂载到那个目录
              name: test
          command:
          - sh
          - -c
          - sleep 100
       
      volumes:
        - name: test  #存储卷的名称
          configMap:
            name: test04     #configmap名字
            items:
              - key: my.cnf   #configmap 内文件
                path: my.cnf   #configmap挂载到容器内的相对路径
复制代码

查看帮助:

kubectl explain deployment.spec.template.spec.volumes.configMap.items #查询每个字段下面有哪些子项,并且有其说明这里,作为参考

 

posted @   念长卿  阅读(2574)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端
点击右上角即可分享
微信分享提示

目录导航