【问题标题】:Create deployment vs run deployment创建部署与运行部署
【发布时间】:2019-09-25 20:00:47
【问题描述】:

关于 Kubernetes 的 Google 课程建议:

$ kubectl run kubernetes-bootcamp --image=gcr.io/google-samples/kubernetes-bootcamp:v1 --port=8080  
  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.

现在我正在尝试使用新语法:

$ kubectl create deployment kubernetes-bootcamp --image=gcr.io/google-samples/kubernetes-bootcamp:v1  
$ kubectl expose deployment/kubernetes-bootcamp --port=8080 type=NodePort

我确定它们不一样。谁能帮帮我?

Rr

不重复:我问的是两个命令的等价性

【问题讨论】:

  • 对不起,我知道如何用“创建部署”的方式设置“--port”。 8080上的服务是给节点的,我需要容器级的
  • 你的问题是什么?错误是什么?
  • 使用第一个命令,部署会创建一个带有 TCP.8080 上的容器端口的 POD。我不知道如何使用“创建部署”命令来做到这一点。
  • 这个问题不是重复的,这里提到的answer 不是这个问题或that 问题的确切答案。撇开煽动性的“命令式与声明式”不谈,应该说kubectl runkubectl create deployment 一样创建部署这一事实让新手感到困惑。 kubectl 开发人员在“道歉”错误消息“kubectl run ... 已弃用...改用 ... kubectl create”中承认这一点。 @Riccardo79,感谢您提出这个话题。

标签: kubernetes


【解决方案1】:

您可以通过执行试运行并检查生成的清单来查看这些命令的作用:

kubectl run kubernetes-bootcamp --image=gcr.io/google-samples/kubernetes-bootcamp:v1 --port=8080 \
  --dry-run -o yaml > kubectl-run.yaml

kubectl create deployment kubernetes-bootcamp --image=gcr.io/google-samples/kubernetes-bootcamp:v1 \
  --dry-run -o yaml >kubectl-create.yaml

两个清单之间唯一的实质性区别是kubectl-create.yaml 中没有ports 字段。

kubectl create deployment 命令没有用于指定容器的任何公开端口的选项,因此使用kubectl create 命令可能没有简单的方法来实现与kubectl run 完全相同的输出。

您使用的kubectl expose 命令只是创建一个服务资源,并没有修改部署资源。

一般来说,kubectl create <resource> 命令是相当有限的。它们对于创建仅具有默认设置的资源或使用 --dry-run -o yaml 创建清单的基础非常有用,然后您可以对其进行自定义。

【讨论】:

  • 好的。这意味着我需要手动编辑部署并添加容器端口。在这种情况下,该服务根本没有用
  • 没错,如果您想实现与kubectl run 相同的部署清单。如果您想让 Deployment 中的 Pod 可访问,您以后可能也需要该服务。
【解决方案2】:

Deployments 没有--port 选项,因为您猜对了。这是容器监听的端口,这会有所不同。

您用来公开部署的服务应该说明应该公开哪个容器端口 - 以及应该将容器端口映射到服务的哪个端口。

$ kubectl expose deployment/kubernetes-bootcamp --port=80  --container-port=8080 type=NodePort

上述命令通过端口 80 公开训练营。

【讨论】:

  • 感谢您指出这一具体差异!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-04-21
  • 2018-10-01
  • 2018-10-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多