既然我们已经演示了应用程序的各个组件作为独立容器运行,那么现在就可以安排它们由类似 Kubernetes 的编排器管理了。Kubernetes 提供了许多缩放、联网、保护和维护您的容器化应用程序的工具,这些工具超出了容器本身的能力。
为了验证我们的容器化应用程序能否在 Kubernetes 上很好地工作,我们将在开发机上使用 Docker Desktop 内置的 Kubernetes 环境来部署我们的应用程序,然后将其移交到生产环境中一个完整的 Kubernetes 集群上运行。Docker Desktop 创建的 Kubernetes 环境功能齐全,这意味着它拥有您的应用程序将在真实集群上享受到的所有 Kubernetes 功能,可以通过您的开发机方便地访问。
Kubernetes 中的所有容器都被安排为 pods,即共享一些资源的位于同一位置的容器组。此外,在实际的应用程序中,我们几乎从不创建单独的 pod;相反,我们的大部分工作负载被安排为部署(deployments),部署是由 Kubernetes 自动维护的可缩放的 pods 组。最后,所有 Kubernetes 对象都可以并且应该在名为 Kubernetes YAML 文件的清单中进行描述。这些 YAML 文件描述了 Kubernetes 应用程序的所有组件和配置,可用于在任何 Kubernetes 环境中轻松地创建和销毁应用程序。
bb.yaml
的文件中:
apiVersion: apps/v1 kind: Deployment metadata: name: bb-demo namespace: default spec: replicas: 1 selector: matchLabels: bb: web template: metadata: labels: bb: web spec: containers: - name: bb-site image: bulletinboard:1.0 --- apiVersion: v1 kind: Service metadata: name: bb-entrypoint namespace: default spec: type: NodePort selector: bb: web ports: - port: 8080 targetPort: 8080 nodePort: 30001
在此 Kubernetes YAML 文件中,有两个对象,以 ---
分隔:
部署(Deployment)
,描述一个可缩放的相同 pods 组。在本例中,您只会得到一个 副本(replica)
,即您的 pod 的副本,并且该 pod(在 template:
键下描述) 中只有一个容器,这个容器基于本教程前一步骤中的 bulletinboard:1.0
镜像。NodePort
服务,它将流量从您的主机上的 30001 端口转发到它所路由到的 pods 内的 8080 端口,允许您从网络到达您的公告栏应用。另外,请注意,虽然 Kubernetes YAML 一开始可能看起来又长又复杂,但它几乎总是遵循相同的模式:
apiVersion
,表明解析该对象的 Kubernetes APIkind
,表明这是什么类型的对象metadata
,将名字之类的东西应用到对象上spec
,指定对象的所有参数和配置bb.yaml
的位置,并将应用程序部署到 Kubernetes:
kubectl apply -f bb.yaml
您将看到如下所示的输出,表明 Kubernetes 对象已成功创建:
deployment.apps/bb-demo created service/bb-entrypoint createdkubernetes
服务之外,我们还看到 bb-entrypoint
服务,它接受端口 30001/TCP 上的流量。localhost:30001
; 您将看到您的公告栏,就像我们在 Docker 快速入门的第二部分中将其作为独立容器运行时一样。至此,我们已经成功地使用 Docker Desktop 将我们的应用程序部署到开发机上功能齐全的 Kubernetes 环境中。我们还没有对 Kubernetes 做太多的工作,但是现在大门已经打开了; 我们还没有对 Kubernetes 做太多的工作,但是大门已经打开了;您可以开始在您的应用程序中添加其他组件,并利用 Kubernetes 的所有特性和功能,就在您自己的机器上。
除了部署到 Kubernetes 之外,我们还将应用程序描述为 Kubernetes YAML 文件。这个简单的文本文件包含我们需要创建的我们的应用程序在运行状态下所需的一切内容。我们可以将其签入版本控制并与同事共享,从而使我们能够轻松地将应用程序分发到其他集群(比如开发环境之后可能出现的测试和生产集群)。
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。