如何通过码头集装箱旗通过kubernetes吊舱

5q4ezhmt  于 2022-12-26  发布在  Kubernetes
关注(0)|答案(4)|浏览(172)

嗨,我正在运行kubernetes集群,我在那里运行mailhog容器。
但我需要运行它与自己的docker运行参数。如果我会运行它在docker直接。我会使用命令:

docker run  mailhog/mailhog -auth-file=./auth.file

但我需要通过Kubernetes pod运行它,我的pod看起来像:

apiVersion: extensions/v1beta1
    kind: Deployment
    metadata:
      name: mailhog
    spec:
      replicas: 1
      revisionHistoryLimit: 1
      strategy:
          type: RollingUpdate
      template:
        metadata:
          labels:
            app: mailhog
        spec:
          containers:
          - name: mailhog
            image: us.gcr.io/com/mailhog:1.0.0
            ports:
            - containerPort: 8025

如何通过kubernetes实现使用参数-auth-file=./auth.file运行Docker容器。谢谢。
我尝试在containers下添加

command: ["-auth-file", "/data/mailhog/auth.file"]

但之后我就

Failed to start container with docker id 7565654 with error: Error response from daemon: Container command '-auth-file' not found or does not exist.
wxclj1h5

wxclj1h51#

感谢@lang2
这是我部署yaml:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: mailhog
spec:
  replicas: 1
  revisionHistoryLimit: 1
  strategy:
      type: RollingUpdate
  template:
    metadata:
      labels:
        app: mailhog
    spec:
      volumes:
      - name: secrets-volume
        secret:
            secretName: mailhog-login
      containers:
      - name: mailhog
        image: us.gcr.io/com/mailhog:1.0.0
        resources:
          limits:
            cpu: 70m
            memory: 30Mi
          requests:
            cpu: 50m
            memory: 20Mi
        volumeMounts:
        - name: secrets-volume
          mountPath: /data/mailhog
          readOnly: true
        ports:
        - containerPort: 8025
        - containerPort: 1025
        args:
          - "-auth-file=/data/mailhog/auth.file"
n3schb8v

n3schb8v2#

在kubernetes中,command等同于ENTRYPOINT。在您的情况下,应该使用args
https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.19/#container-v1-core

mznpcxlj

mznpcxlj3#

您的思路是正确的,只是还需要将command数组中二进制文件的名称作为第一个元素,您可以通过查看相应的DockerfileCMD和/或ENTRYPOINT)来找到这一点。
在这种情况下:command: ["Mailhog", "-auth-file", "/data/mailhog/auth.file"]

mwkjh3gx

mwkjh3gx4#

我需要类似的任务(我的目标是将应用程序配置文件传递给应用程序),我所做的如下:
在kubernetes yml文件的部署部分设置环境变量。

env:
- name: PROFILE
  value: "dev"

在dockerfile中使用此环境变量作为命令行参数。

CMD java -jar -Dspring.profiles.active=${PROFILE} /opt/app/xyz-service-*.jar

相关问题