如何在 kubernetes 中 docker 运行 带有参数的图像

How to docker run an image with arguments in kubernetes

我想在 kubernetes 中使用以下命令 运行 无声 docker 图像。只是想知道有没有直接的解决方案。

docker run -d \
  --privileged
  --tmpfs /run  --tmpfs /run/lock  --tmpfs /tmp \
  --volume /sys/fs/cgroup:/sys/fs/cgroup:ro \
  --ulimit nofile=1024000:1024000 \
  --sysctl net.ipv4.ip_local_port_range='1025 65535' \
  --name kenterprise \
  --env KLOUDLESS_CONFIG="$(cat kloudless.yml)" \
  # [ports,/data volume|db config] \
  docker.kloudless.com/prod:1.29.0  docker_entry

我知道我们可以 运行 docker 通过在 pod yaml 中配置容器来使用类似配置在 kubernetes 中镜像。例如,如果我想给出 --privileged 参数,我可以

containers:
    securityContext:
      privileged: true

就是想知道有没有直接的方法

kubectl 运行 曾经存在。这可能是你要找的。 But it is depecrated now.

kubectl run -i --tty load-generator --image=busybox /bin/sh

最接近 运行 在不创建文件的情况下从命令行执行 pod/deployment 我能找到的是 kubectl create

kubectl create deployment prod --image=busybox -o yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  creationTimestamp: null
  labels:
    app: prod
  name: prod
spec:
  replicas: 1
  selector:
    matchLabels:
      app: prod
  strategy: {}
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: prod
    spec:
      containers:
      - image: busybox
        name: busybox
        resources: {}
status: {}

尽管如此,我强烈建议不要 运行 一次性使用这样的命令,因为它违背了 Kubernetes 通过使用清单鼓励的 infrastructure as code 的概念。

在 git 等版本控制系统中使用清单可以让您轻松探索命令和部署的历史记录,并管理对部署的更改分支。

但是,如果您想要做的是抽象您的部署,以便用户不必弄脏内部结构,那么我会推荐一个像 Helm 这样的工具,它允许您在发布时创建图表并更改简单值,如下所示:

helm install --set foo=bar ./mychart