kubernetes——ConfigMap配置应用程序

ENTRYPOINT与CMD

我们使用entrypoint指定的是可执行文件,cmd指定的是可执行文件所需要的参数

通过使用yaml文件指定执行的命令和参数

apiVersion: v1
kind: Pod
metadata:
  name: kubia-ce
  labels:
    name: kubia-ce
spec:
  containers:
  - name: kubia-ce
    image: luksa/kubia
    resources:
      limits:
        memory: "128Mi"
        cpu: "500m"
    ports:
      - containerPort: 8080
    command:
      - "ls"
    args:
      - /var/

为容器设置环境变量

在声明pod时指定环境变量

apiVersion: v1
kind: Pod
metadata:
  name: kubia-ce
  labels:
    name: kubia-ce
spec:
  containers:
  - name: kubia-ce
    image: luksa/kubia
    resources:
      limits:
        memory: "128Mi"
        cpu: "500m"
    ports:
      - containerPort: 8080
    env:
      - name: port
        value: "8080"

需要注意的是,这里数字需要使用引号包裹,但是字符串不需要

ConfigMap

利用configMap将pod和配置解耦

configMap本质上就是一个键值对的映射,映射内容可以通过命令行,文件获取。

创建ConfigMap

#通过命令行
kubectl create configmap --from-literal=port=8080
#通过文件
kubectl create configmap --from-file=test.config
#注意通过文件创建的configmap不是将configmap中的键值对进行解析,设置成多个键值对,而是将文件名作为键,文件内容作为值,作为环境变量

如果引用不存在的configmap会发生什么?

kubernetes会正常调度pod并尝试运行所有的容器,引用不存在的configmap的容器会启动失败,其余容器可以正常启动,如果之后创建这个缺失的configmap,因为缺失configmap而启动失败的容器会自动启动,无需重新创建。

将configmap映射成为环境变量

apiVersion: v1
kind: Pod
metadata:
  name: kubia-ce
  labels:
    name: kubia-ce
spec:
  containers:
  - name: kubia-ce
    image: luksa/kubia
    resources:
      limits:
        memory: "128Mi"
        cpu: "500m"
    ports:
      - containerPort: 8080
    env:
      - name: port
        valueFrom:
          configMapKeyRef:
            name: testconfig
            key: env

将configmap中的键值对全部映射成为环境变量

apiVersion: v1
kind: Pod
metadata:
  name: kubia-ce
  labels:
    name: kubia-ce
spec:
  containers:
  - name: kubia-ce
    image: luksa/kubia
    resources:
      limits:
        memory: "128Mi"
        cpu: "500m"
    ports:
      - containerPort: 8080
    envFrom:
      - configMapRef:
          name: testconfig

将configmap映射成为容器中的配置文件

apiVersion: v1
kind: Pod
metadata:
  name: kubia-ce
  labels:
    name: kubia-ce
spec:
  containers:
  - name: kubia-ce
    image: luksa/kubia
    resources:
      limits:
        memory: "128Mi"
        cpu: "500m"
    ports:
      - containerPort: 8080
    volumeMounts:
      - mountPath: /var/test
        name: config
  volumes:
    - name: config
      configMap:
        name: fileconfig

将configmap中的每一个键值对,都以一个文件的形式挂载在/var/test下

挂载指定的条目至pod的文件夹

volums:
  volumes:
    - name: config
      configMap:
        name: fileconfig
        items:
          - key: my-nginx-config.conf#configmap中的键名
            path: gzip.conf#挂载到容器中的文件名

挂载特定的文件

    volumeMounts:
      - mountPath: /var/test/test.config
        name: config
        subPath: my-niginx-config.conf#configmap中的文件名,

将configmap中指定的配置文件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值