部署到Kubernetes
预计阅读时间:5分钟
先决条件
- 按照方向和设置中的说明下载并安装Docker Desktop 。
- 在第2部分中通过容器化应用程序进行工作。
- 确保在Docker桌面上启用了Kubernetes:
- Mac:单击菜单栏中的Docker图标,导航至“首选项”,并确保“ Kubernetes”旁边有绿灯。
- Windows:单击系统任务栏中的Docker图标,然后导航到“设置”,并确保“ Kubernetes”旁边有绿灯。
如果Kubernetes没有运行,请按照本教程的编排中的说明完成设置。
介绍
既然我们已经证明了应用程序的各个组件是作为独立容器运行的,现在是时候安排它们由Kubernetes这样的协调器来管理了。Kubernetes提供了许多工具来扩展,联网,保护和维护您的容器化应用程序,这超出了容器本身的能力。
为了验证我们的容器化应用程序是否可以在Kubernetes上正常运行,我们将在开发机器上使用Docker Desktop内置的Kubernetes环境来部署我们的应用程序,然后再将其移交给生产环境中的完整Kubernetes集群。Docker Desktop创建的Kubernetes环境具有全部功能,这意味着它具有您的应用程序将在真实集群上享受的所有Kubernetes功能,可通过开发机器的便利性进行访问。
使用Kubernetes YAML描述应用
Kubernetes中的所有容器都计划为pod,它们是共享一些资源的位于同一位置的容器的组。此外,在实际的应用程序中,我们几乎从不创建单个吊舱。取而代之的是,我们的大多数工作负载都按部署计划,这些部署是Kubernetes自动维护的可扩展Pod组。最后,所有Kubernetes对象都可以并且应该在称为Kubernetes YAML文件的清单中进行描述。这些YAML文件描述了Kubernetes应用程序的所有组件和配置,可用于在任何Kubernetes环境中轻松创建和销毁您的应用程序。
-
您已经在本教程的业务流程概述部分中编写了一个非常基本的Kubernetes YAML文件。现在,让我们编写一个稍微复杂一些的YAML文件来运行和管理公告栏。将以下内容放在名为的文件中
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文件中,我们有两个对象,以分隔
---
:- A
Deployment
,描述一组可扩展的相同Pod。在这种情况下,您将仅获得replica
pod的一个或副本,并且该pod(在template:
键下进行了描述)中仅包含一个容器,这是基于bulletinboard:1.0
本教程上一步中的图像得出的。 - 一种
NodePort
服务,它将流量从主机上的端口30001路由到它所路由的Pod内部的端口8080,从而使您可以从网络到达公告板。
另外,请注意虽然Kubernetes YAML乍看起来可能很长很复杂,但它几乎总是遵循相同的模式:
- 的
apiVersion
,表示Kubernetes API,它分析该对象 - 该
kind
指示的排序对象的这个是什么 - 一些
metadata
将诸如名称之类的东西应用于您的对象 - 在
spec
指定所有对象的参数和配置。
- A
部署并检查您的应用程序
-
在终端中,导航到创建位置,
bb.yaml
然后将应用程序部署到Kubernetes:kubectl apply -f bb.yaml
您应该看到如下所示的输出,表明您的Kubernetes对象已成功创建:
deployment.apps/bb-demo created service/bb-entrypoint created
-
通过列出您的部署来确保一切正常:
kubectl get deployments
如果一切顺利,则您的部署应列出如下:
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE bb-demo 1 1 1 1 48s
这表明您在YAML中要求的所有Pod都已启动并正在运行。对您的服务进行相同的检查:
kubectl get services NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE bb-entrypoint NodePort 10.106.145.116 <none> 8080:30001/TCP 53s kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 138d
除了默认
kubernetes
服务之外,我们还看到我们的bb-entrypoint
服务,该服务接受端口30001 / TCP上的流量。 -
打开浏览器,访问位于的公告板
localhost:30001
;网址为:您应该看到您的公告板,就像我们在《快速入门》教程的第2部分中将其作为独立容器运行时一样。 -
一旦满意,请拆除您的应用程序:
kubectl delete -f bb.yaml
结论
至此,我们已经成功地使用Docker Desktop将我们的应用程序部署到开发机器上的功能齐全的Kubernetes环境中。我们对Kubernetes的工作还不多,但现在已经敞开了大门。您可以在自己的机器上开始向应用程序添加其他组件,并利用Kubernetes的所有功能和强大功能。
除了部署到Kubernetes,我们还将应用程序描述为Kubernetes YAML文件。这个简单的文本文件包含在运行状态下创建应用程序所需的一切。我们可以将其检入版本控制并与同事共享,从而使我们可以轻松地将应用程序分发到其他集群(例如可能在我们的开发环境之后的测试和生产集群)。
Kubernetes参考
有关本文中使用的所有新Kubernetes对象的更多文档,请参见:
kubernetes,pods,部署,kubernetes服务