欢迎光临
我们一直在努力

Docker 基础知识 - 在生产环境中运行您的应用 - 编排 - 部署到 Kubernetes

本站教程收集整理的这篇文章主要介绍了Docker 基础知识 – 在生产环境中运行您的应用 – 编排 – 部署到 Kubernetes,本站教程本站觉得挺不错的,现在分享给大家,也给大家做个参考。

前提条件

  • 下载并安装 Docker Desktop,详见情况介绍和安装。
  • 在第二部分中完成应用程序的容器化。
  • 在您的 Docker Desktop 中确保 Kubernetes 是启用的:
    • @H_154_10@mac:点击菜单栏中的 Docker 图标,导航到 Preferences,确保“Kubernetes”旁边有绿灯。
    • Windows:点击系统托盘中的 Docker 图标,导航到 SetTings,确保“Kubernetes”旁边有绿灯。
      如果 Kubernetes 没有运行, 请按照本教程编排(Orchestration)概述中的说明完成设置。

介绍

既然我们已经演示了应用程序的各个组件作为独立容器运行,那么现在就可以安排它们由类似 Kubernetes 的编排器管理了。Kubernetes 提供了许多缩放、联网、保护和维护您的容器化应用程序的工具,这些工具超出了容器本身的能力。

为了验证我们的容器化应用程序能否在 Kubernetes 上很好地工作,我们将在开发机上使用 Docker Desktop 内置的 Kubernetes 环境来部署@R_307_9616@程序,然后将其移交到生产环境中一个完整的 Kubernetes 集群上运行。Docker Desktop 创建的 Kubernetes 环境功能齐全,这意味着它拥有您的应用程序将在真实集群上享受到的所有 Kubernetes 功能,可以通过您的开发机方便地访问。

使用 Kubernetes YAML 描述应用程序

Kubernetes 中的所有容器都被安排为 pods,即共享一些资源的位于同一位置的容器组。此外,在实际的应用程序中,我们几乎从不创建单独的 pod;相反,我们的大部分工作负载被安排为部署(deployments),部署是由 Kubernetes 自动维护的可缩放的 pods 组。最后,所有 Kubernetes 对象都可以并且应该在名为 Kubernetes YAML 文件的清单中进行描述。这些 YAML 文件描述了 Kubernetes 应用程序的所有组件和配置,可用于在任何 Kubernetes 环境中轻松地创建和销毁应用程序。

  1. 您已经在本教程的编排(Orchestration)概述部分中编写了一个非常基本的 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 文件中,有两个对象,以 --- 分隔:

    • 一个 部署(Deployment),描述一个可缩放的相同 pods 组。在本例中,您只会得到一个 副本(replica),即您的 pod 的副本,并且该 pod(在 template: 键下描述) 中只有一个容器,这个容器基于本教程前一步骤中的 bulleTinboard:1.0 镜像。
    • 一个 NodePort 服务,它将流量从您的主机上的 30001 端口转发到它所路由到的 pods 内的 8080 端口,允许您从网络到达您的公告栏应用。

    另外,请注意,虽然 Kubernetes YAML 一开始可能看起来又长又复杂,但它几乎总是遵循相同的模式:

    • apiVersion,表明解析该对象的 Kubernetes API
    • kind,表明这是什么类型的对象
    • @H_310_44@metadata,将名字之类的东西应用到对象上
    • spec,指定对象的所有参数和配置

部署并检查应用程序

  1. 在终端中,导航到您创建 bb.yaml 的位置,并将应用程序部署到 Kubernetes:

    美国高防vpskubectl apply -f bb.yaml
    

    您将看到如下所示的输出,表明 Kubernetes 对象已成功创建:

    deployment.apps/bb-demo created
    service/bb-entrypoint created
    
  2. 通过列出部署确保一切正常:

    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 上的流量。

  3. 打开浏览器并访问您的公告栏 localhost:30001; 您将看到您的公告栏,就像我们在 Docker 快速入门的第二部分中将其作为独立容器运行时一样。

  4. 一旦满意,请拆除您的应用程序:

    kubectl delete -f bb.yaml
    

结论

至此,我们已经成功地使用 Docker Desktop 将@R_307_9616@程序部署到开发机上功能齐全的 Kubernetes 环境中。我们还没有对 Kubernetes 做太多的工作,但是现在大门已经打开了;
我们还没有对 Kubernetes 做太多的工作,但是大门已经打开了;您可以开始在您的应用程序中添加其他组件,并利用 Kubernetes 的所有特性和功能,就在您自己的机器上。

除了部署到 Kubernetes 之外,我们还将应用程序描述为 Kubernetes YAML 文件。这个简单的文本文件包含我们需要创建的@R_307_9616@程序在运行状态下所需的一切内容。我们可以将其签入版本控制并与同事共享,从而使我们能够轻松地将应用程序分发到其他集群(比如开发环境之后可能出现的测试和生产集群)。

Kubernetes 参考文献

本文中使用的所有新 Kubernetes 对象的进一步文档请参看:

  • Kubernetes Pods
  • Kubernetes Deployments
  • Kubernetes services

Kubernetes 中文文档:https://kubernetes.io/zh/docs/home/


本站总结

以上是本站教程为你收集整理的Docker 基础知识 – 在生产环境中运行您的应用 – 编排 – 部署到 Kubernetes全部内容,希望文章能够帮你解决Docker 基础知识 – 在生产环境中运行您的应用 – 编排 – 部署到 Kubernetes所遇到的程序开发问题。

如果觉得本站教程网站内容还不错,欢迎将本站教程推荐给好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。

赞(0)
【声明】:本博客不参与任何交易,也非中介,仅记录个人感兴趣的主机测评结果和优惠活动,内容均不作直接、间接、法定、约定的保证。访问本博客请务必遵守有关互联网的相关法律、规定与规则。一旦您访问本博客,即表示您已经知晓并接受了此声明通告。