pee*_*z80 31 kubernetes kubectl
我正在使用kubectl run环境参数为我创建临时docker容器(例如,一些转发用于调试目的).几个星期以来kubectl一直在抱怨kubectl run被弃用.不幸的是我找不到合适的替代品.
这是旧命令:
$KUBECTL run -i -t --attach=false --image djfaze/port-forward --env="REMOTE_HOST=$REMOTE_HOST" --env="REMOTE_PORT=$REMOTE_PORT" $POD_NAME
Run Code Online (Sandbox Code Playgroud)
发出kubectl此消息时,请回复此消息:
kubectl run --generator=deployment/apps.v1beta1已弃用,将在以后的版本中删除.请改用kubectl create.
任何想法如何替换此运行命令?
sol*_*ysh 31
作为问题的作者,让我解释一下这种弃用背后的意图.就像Brendan在他的回答中解释的那样,kubectl run本身并没有被弃用,只有所有的发生器,除了为你创建Pod的那个.
这种变化的原因有两个:
kubectl run命令的绝大多数输入参数对于新手以及旧计时器来说都是压倒性的.弄清楚调用的结果并不容易.您需要考虑几个传递的选项以及服务器版本.
考虑到可能性矩阵的增长速度超过了我们的处理速度,它背后的代码也是一团糟.
这就是为什么我们试图让人们不再使用kubectl run他们的日常工作流程,并说服他们使用显式kubectl create命令更简单.最后,我们希望让使用docker或任何其他容器引擎的新手在运行容器的情况下与Kubernetes一起获得相同的体验,kubectl run只需在群集中运行Pod.
对不起最初的困惑,我希望这会让事情变得清晰起来.
Bre*_*rns 18
您可以使用:
kubectl run --generator=run-pod/v1 --image=busybox busybox --dry-run --env=foo=bar
Run Code Online (Sandbox Code Playgroud)
哪个没有被弃用.
kubectl run默认情况下,将创建一个Deployment。
完整的命令是:
kubectl run --generator=deployment/apps.v1 <deployment_name> --image=<image_to_use_in_the_container_of_the_deployment's_pod>
Run Code Online (Sandbox Code Playgroud)
因此,kubernetes在执行run命令时将创建的资源由--generator标志的值定义。
弃用消息提示的含义(也已通过@soltysh提供的答案加以澄清)是,将删除特定的做法。
因此,在将来的kubernetes版本中,该run命令将默认(且作为唯一选项)创建pod(而不是部署),即,该命令的完整扩展将变为:
kubectl run --generator=run-pod/v1 <pod_name> --image=<image_of_the_container_of_the_pod>
Run Code Online (Sandbox Code Playgroud)
如果您要创建任何其他kubernetes资源类型,则无法通过run命令来进行创建,因此您将不得不诉诸显式命令式create或声明式apply -f,后者指向kubernetes yml具有相应资源定义的文件,如
kubernetes apply -f <yaml_file_with_my_deployment.yml>
Run Code Online (Sandbox Code Playgroud)
我注意到在不指定生成器参数的情况下运行以下命令:
kubectl run <name> --image=<image>
Run Code Online (Sandbox Code Playgroud)
它返回此错误:
kubectl run --generator=deployment/apps.v1 is DEPRECATED and will be removed in a future version. Use kubectl run --generator=run-pod/v1 or kubectl create instead.
Run Code Online (Sandbox Code Playgroud)
此消息非常令人困惑的是,您从未首先指定 --generator 参数。但是,这里的要点是按照错误消息的指示明确指定生成器,如下所示:
kubectl run --generator=run-pod/v1 <name> --image=<image>
Run Code Online (Sandbox Code Playgroud)
然后它应该成功运行。(他们应该刚刚将生成器默认为 run-pod/v1 以避免这种混淆和/或只是鼓励使用 create)。
但是,根据@soltysh 的回答,听起来他们现在建议使用“创建”而不是“运行”。
| 归档时间: |
|
| 查看次数: |
8478 次 |
| 最近记录: |