创建部署与运行部署

时间:2019-09-25 06:49:39

标签: kubernetes

有关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

不重复:我在问两个命令的等效性

2 个答案:

答案 0 :(得分:2)

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

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

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

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

您使用的kubectl expose命令只会创建服务资源,而不会修改部署资源。

通常,kubectl create <resource>命令非常有限。它们对于创建仅具有默认设置的资源或使用--dry-run -o yaml创建清单然后可以自定义的清单非常有用。

答案 1 :(得分:1)

根据您的正确猜测,部署没有--port选项。差异是容器侦听的端口。

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

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

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