小编IsK*_*Kor的帖子

在将args传递到容器时Kubernetes的pod /部署?

我是docker / k8s世界的新手,有人问我是否可以使用args部署容器来修改行为(通常是应用程序在“主”版本还是“从”版本中工作)。也许不是最佳解决方案,但它可以工作:

这是验证的简单测试。我用一个脚本创建了一个自定义图像:role.sh:

#!/bin/sh
ROLE=$1
echo "You are running "$ROLE" version of your app"
Run Code Online (Sandbox Code Playgroud)

Dockerfile:

FROM centos:7.4.1708

COPY ./role.sh /usr/local/bin
RUN chmod a+x /usr/local/bin/role.sh
ENV ROLE=""
ARG ROLE

ENTRYPOINT ["role.sh"]
CMD ["${ROLE}"]
Run Code Online (Sandbox Code Playgroud)

如果我使用以下命令从docker启动此容器:

docker run -dit --name test docker.local:5000/test master
Run Code Online (Sandbox Code Playgroud)

我最终得到以下日志,这正是我要查找的内容:

You are running master version of your app
Run Code Online (Sandbox Code Playgroud)

现在,我想使用yaml文件在k8s上具有相同的行为。我尝试了几种方法,但是都没有用。

YAML文件:

apiVersion: v1
kind: Pod
metadata:
  name: master-pod
  labels:
     app: test-master
spec:
  containers:
    - name: test-master-container
      image: docker.local:5000/test
      command: ["role.sh"]
      args: ["master"]
Run Code Online (Sandbox Code Playgroud)

我看到了很多不同的方法可以做到这一点,但我必须说,我仍然没有理解ARG和ENV之间的区别。

我也尝试过

 - name: test-master-container
   image: docker.local:5000/test …
Run Code Online (Sandbox Code Playgroud)

yaml args docker kubernetes

2
推荐指数
1
解决办法
2864
查看次数

标签 统计

args ×1

docker ×1

kubernetes ×1

yaml ×1