【问题标题】:How to run a container in Kubernetes without creating Deployment or Job?如何在不创建 Deployment 或 Job 的情况下在 Kubernetes 中运行容器?
【发布时间】:2016-05-24 10:44:05
【问题描述】:

我正在尝试在 Kubernetes 中运行一个交互式 Pod(容器),它不会创建作业或部署并在完成后自行删除。

容器的目的是为我们的开发人员提供一种访问我们的数据库的简单方法,该数据库没有公共 IP 地址。

目前,我们正在使用这个命令:

kubectl run -i --tty proxy-pgclient --image=private-registry.com/pgclient --restart=Never --env="PGPASSWORD=foobar" -- psql -h dbhost.local -p 5432 -U pg_admin -W postgres

这在你第一次运行时有效,但是,在退出会话后,如果你尝试再次运行上述以再次连接到数据库,我们会得到:

Error from server: jobs.extensions "proxy-pgclient" already exists

强制开发者删除作业:

kubectl delete job proxy-pgclient

在他们可以运行命令并再次连接之前。

有没有什么方法可以在 Kubernetes 中启动交互式容器 (Pod) 而无需创建 Job 或 Deployment 对象并在交互式会话关闭时删除该容器?

【问题讨论】:

标签: kubernetes


【解决方案1】:

在原始命令中添加“--rm”标志会导致在交互会话完成时删除作业(和 Pod),这就是我所追求的。然后命令变为:

kubectl run -i --tty --rm proxy-pgclient --image=private-registry.com/pgclient --restart=Never --env="PGPASSWORD=foobar" -- psql -h dbhost.local -p 5432 -U pg_admin -W postgres

【讨论】:

    【解决方案2】:

    没有一个简短的kubectl 命令可以完全满足您的需求。相反,您可以使用您的 pod 描述创建一个 yaml/json 文件并运行 kubectl create -f pod.yaml。您的 pod 可以设置为永不重启,因此它会在退出后终止。

    【讨论】:

      猜你喜欢
      • 2020-09-22
      • 1970-01-01
      • 1970-01-01
      • 2013-09-22
      • 2023-02-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多