部署(Deployments): Deployment是您将Pod实际部署到群集的方式。 您可以在没有Deployment的情况下运行Pod,但如果没有Deployment,则无法轻松指定所需的副本数量,在失败时自动重新部署Pod,回滚到早期状态等。Deployment使代码生命周期管理变得更容易,并且您可以使用它来使Docker镜像在Kubernetes上运行。
服务(Service):服务允许您从一个Pod打开端口到其他Pod,并指定一个Pod的DNS名称,以便能够查找并连接到群集中的其他Pod。
入口(Ingress):Ingresses是你如何告诉你的Ingress控制器(通常是像Traefik这样的web server)向外界暴露什么,以及在哪个路径或主机名上。 入口将映射到将实际应答该请求的Pod。本教程也假设您已经配置了入口,虽然设置Traefik来做到这一点不应该非常困难(在用他们的教程时请使用Deployment方法)。
所有这些都可以使用命令行的kubectl创建,或者更安全地通过YAML文件创建,该文件将包含您要部署的内容的定义和详细信息(然后执行kubectl apply -f <yaml file>)。
概括地讲,您把容器放入pods中,这些pods将由deployment创建和部署,其网络将由service处理,并添加ingress以便外部世界可以访问您的服务器。
让我们逐个介绍这些部分,看看它们的YAML配置是什么样的。
The Pod
让我们看一下将在容器中运行Redis镜像的pod的YAML配置。 请记住,Pod并不是持久性的,所以你几乎不会直接使用它。 相反,您将使用deployment间接部署Pod,我们将在下面介绍。
以下配置示例仅供您进行修改。 你只需要看看它,然后继续阅读,不要停下来惊叹它的美丽。

正如您所看到的,它非常简单,您添加了一堆Kubernetes特定的东西,每个都只是复制粘贴,然后您声明此配置是为Pod,给它一个名称,指定在其中运行的容器和他们监听的端口,请删除整个文件吧,你已经准备好了!
Kubernetes官方文档中提供了更多关于Pod的信息。
The Deployment
以下是您实际运行上述Pod的方式,即使用deployment。 请记住,您根本不需要关注上面的Pod配置,我们将在deployment里重新定义它。

您会注意到这主要是上面的Pod配置,但有一些额外的配置,如副本(replica)等。这些定义了deployment的名称以及我们要部署的副本数量。 更改副本数量,将会部署更多template部分中指定的Pod。
Kubernetes官方文档中提供了更多关于Deployments的信息。
The Service
现在我们已经部署了一个Pod,我们需要将其端口暴露给集群的其余部分。 部署中的containerPort指令暴露了Docker端口,但实际上并不转发主机上的端口,因此多个Pod(不是同一Pod中的容器)可以使用相同的端口而不会发生冲突。










