kubernetst

来源:互联网 发布:mac 解压rar命令 编辑:程序博客网 时间:2024/06/06 19:37

ConfigMap学习

ConfigMap

单独的ConfigMap存在是没有任何意义的,ConfigMap的存在就是为了让应用来使用它,所以ConfigMap通常会和具体的某一个或者多个应用相关联上。

ConfigMap使用

在k8s中,pod或者deploy或者其他的resource需要使用到ConfigMap,则会进行如下的步骤:

  1. 创建相应的ConfigMap
  2. 在pod或者deploy中,指定申明一个Volume,指定Volume名称,并指定类型为ConfigMap,指定ConfigMap的name为第一步中创建的ConfigMap的名称,并且指定读写权限
  3. 在Container中指定VolumeMount,name为第二步中指定的Volume名称,MountPath为挂载到容器中的目录
  4. 最后ConfigMap的data下的数据会呗挂载到容器指定目录下,表现的形式是:以data中的key为文件名,value为文件内容。

使用ConfigMap的json如下:

ConfigMap:

{            "kind": "ConfigMap",            "apiVersion": "v1",            "metadata": {                "name": "dashboard-application",                "namespace": "test",            },            "data": {                "2048": "{\"name\":\"test\",\"port\":8080\n}",                "test1": "asdasdasd"            }        }

Pod:不完整的pod,只是说明问题:

"spec": {"volumes": [    {        "name": "configmap-volume-1",        "configMap": {            "name": "dashboard-application",            "defaultMode": 420        }    },    {        "name": "default-token-6yrcs",        "secret": {            "secretName": "default-token-6yrcs",            "defaultMode": 420        }    }],"containers": [    {        "name": "game2048",        "image": "2048:latest",        "args": [            "nginx",            "-c",            "/etc/nginx/nginx.log.conf"        ],        "ports": [            {                "containerPort": 80,                "protocol": "TCP"            }        ],        "env": [            {                "name": "PATH",                "value": "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"            }        ],        "resources": {            "limits": {                "cpu": "100m",                "memory": "512Mi"            },            "requests": {                "cpu": "100m",                "memory": "512Mi"            }        },        "volumeMounts": [            {                "name": "configmap-volume-1",                "mountPath": "/opt"            },            {                "name": "default-token-6yrcs",                "readOnly": true,                "mountPath": "/var/run/secrets/kubernetes.io/serviceaccount"            }        ],        "terminationMessagePath": "/dev/termination-log",        "imagePullPolicy": "IfNotPresent"    }]