有关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
不重复:我在问两个命令的等效性
答案 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公开了训练营。