zoukankan      html  css  js  c++  java
  • k8s中configmap的使用方法

      ConfigMaps允许您将配置构件与映像内容解耦,以保持容器化应用程序的可移植性。本文展示如何创建configmap,修改configmap以及如何把configmap应用于pod.

    创建configmap


    1.configmap的yaml文件 myconfigmap.yaml,该文件包含两个configmap,以第一个configmap为例说明。special-config是该configmap的名称,default是该configmap所属的域名。该configmap仅包含一个数据special.how,值是very.内容如下:

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: special-config
      namespace: default
    data:
      special.how: very
    ---
    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: env-config
      namespace: default
    data:
      log_level: INFO
    

    2.创建configmap,以下命令都可以

    kubectl create -f myconfigmap.yaml
    kubectl create configmap gameconfig --from-file=myconfigmap.yaml -n test
    

    第一行命令完全按照yaml文件中的设定来可以同时创建多个configmap;而第二条命令是gameconfig是新创建的configmap的名称,只能创建出一个configmap,其中包含多个数值,test是namespace. 正常会输出

    configmap/gameconfig created
    

    如果报错Error from server (NotFound): namespaces "test" not found则需要先创建该域名。
    3.查看configmap,假设我们之前用kubectl create -f myconfigmap.yaml创建了configmap,那么查看结果如下

    [root@k8s-master sj]# kubectl get configmap --all-namespaces
    NAMESPACE     NAME                                 DATA   AGE
    default       env-config                           1      2s
    default       special-config                       1      2s
    
    [root@k8s-master sj]# kubectl describe configmap special-config
    Name:         special-config
    Namespace:    default
    Labels:       <none>
    Annotations:  <none>
    
    Data
    ====
    special.how:
    ----
    very
    Events:  <none>
    
    

    使用configmap中的数值来定义容器的环境变量


    用configmap中的数值来创建一个容器环境变量

    1.定义一个configmap数值,可以用如上的方法定义,也可以使用如下的命令:

    kubectl create configmap special-config --from-literal=special.how=very
    

    2.在Pod specification中,环境变量 SPECIAL_LEVEL_KEY 的值由configmap的special.how来定义,同样的也可以使用多个configmap中多个值来定义多个环境变量。pod yaml文件 configmap-pod.yaml 如下所示:

    apiVersion: v1
    kind: Pod
    metadata:
      name: dapi-test-pod
    spec:
      containers:
        - name: test-container
          image: k8s.gcr.io/busybox
          command: [ "/bin/sh", "-c", "env" ]
          env:
            - name: SPECIAL_LEVEL_KEY
              valueFrom:
                configMapKeyRef:
                  name: special-config
                  key: special.how
            - name: LOG_LEVEL
              valueFrom:
                configMapKeyRef:
                  name: env-config
                  key: log_level
      restartPolicy: Never
    

    然后创建Pod:
    kubectl create -f configmap-pod.yaml
    现在,Pod的启动输出了它所有的环境变量其中包括变量 SPECIAL_LEVEL_KEY=veryLOG_LEVEL=INFO

  • 相关阅读:
    SQLServer 获取汉字拼音的首字母(大写)函数
    MySQL动态SQL的拼接以及执行、分页
    Jdbc连接sqlserver,mysql,oracle
    MySQL之排序显示行号
    List的分组,求和,过滤操作
    linux 常用命令集合
    redis 基本类型和命令(一)
    ORCLE 创建表空间,用户,赋予角色以及授权
    游标
    【应用服务 App Service】App Service中上传文件/图片(> 2M)后就出现500错误(Maximum request length exceeded).
  • 原文地址:https://www.cnblogs.com/janeysj/p/11615463.html
Copyright © 2011-2022 走看看