专栏首页VVcblogDocker 基础知识-编排-在开发机上设置和使用 Kubernetes 环境

Docker 基础知识-编排-在开发机上设置和使用 Kubernetes 环境

前提条件

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

介绍

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

为了验证我们的容器化应用程序能否在 Kubernetes 上很好地工作,我们将在开发机上使用 Docker Desktop 内置的 Kubernetes 环境来部署我们的应用程序,然后将其移交到生产环境中一个完整的 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,表明这是什么类型的对象
    • metadata,将名字之类的东西应用到对象上
    • spec,指定对象的所有参数和配置

部署并检查应用程序

  1. 在终端中,导航到您创建 bb.yaml 的位置,并将应用程序部署到 Kubernetes: kubectl 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 将我们的应用程序部署到开发机上功能齐全的 Kubernetes 环境中。我们还没有对 Kubernetes 做太多的工作,但是现在大门已经打开了; 我们还没有对 Kubernetes 做太多的工作,但是大门已经打开了;您可以开始在您的应用程序中添加其他组件,并利用 Kubernetes 的所有特性和功能,就在您自己的机器上。

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

原文链接:https://www.cnblogs.com/ittranslator/p/13512250.html

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 你可能搞错了,Kubernetes和Docker并不是直接竞争对手

    尤其是上个月当Kubernetes宣布,自Kubernetes v1.20之后将弃用Docker作为容器运行,关于Docker的与kubernetes的讨论再度...

    了不起的云计算
  • 50多个有用的Docker工具集

    Kubernetes是市场上最实用的最受欢迎的容器编排引擎。最初作为一个Google项目开始,成千上万的团队使用它来部署生产中的容器。谷歌声称它每周使用Kube...

    shaonbean
  • 50+ 个有用的 Docker 工具

    Kubernetes是市场上最实用的最受欢迎的容器编排引擎。最初作为一个Google项目开始,成千上万的团队使用它来部署生产中的容器。谷歌声称它每周使用Kube...

    Java帮帮
  • Kubernetes vs. Docker Swarm:完整的比较指南

    有无数的辩论和讨论谈论Kubernetes和Docker。如果你没有深入研究,你会认为这两种开源技术都在争夺集装箱至上。让我们明确指出,Kubernetes和D...

    用户3382876
  • Kubernetes+Docker+Istio 容器云实践

    随着社会的进步与技术的发展,人们对资源的高效利用有了更为迫切的需求。近年来,互联网、移动互联网的高速发展与成熟,大应用的微服务化也引起了企业的热情关注,而基于K...

    宜信技术学院
  • 云原生世界里的 DevOps 编排

    目录 1、概要 2、数字服务交付的三大支柱 3、动机 4、思考 5、主要参与者 6、主要收获 7、附录:企业软件交付的历史和基础架构

    DevOps时代
  • Kubernetes(一) - Docker管理工具

    喵了个咪233
  • 浅入kubernetes(1):Kubernetes 入门基础

    我们要学习 Kubernetes Kubernetes ,就有首先了解 Kubernetes 的技术范围、基础理论知识库等,要学习 Kubernetes,肯定要...

    痴者工良
  • Kubernetes和Docker的关系是什么?

    作为一名容器时代的程序员相信你已经或多或少接触过Docker,但同时你也会发现Docker虽然流行了多年,但之前却很少有公司直接将线上应用通过Docker容器进...

    用户5927304
  • Kubernetes+Docker+Istio 容器云实践

    随着社会的进步与技术的发展,人们对资源的高效利用有了更为迫切的需求。近年来,互联网、移动互联网的高速发展与成熟,大应用的微服务化也引起了企业的热情关注,而基于K...

    宜信技术学院
  • 必知必会的 Docker 核心知识

    自 2013 年起,随着 Docker 的正式面世,容器技术迅速成为了基础技术领域中的热门。而在近两三年中,随着容器编排领域的混战结束,Kubernetes 已...

    Jintao Zhang
  • Kubernetes助力Nubank一周部署200次

    过去几年中,随着 Nubank 客户基数达到 2300 万,工程团队从最初的 30 人增至 520 人,这家金融科技初创企业面临不可变基础设施带来的挑战。“我们...

    CNCF
  • 容器 10 年,Docker 6 年

    自 2013 年起,随着 Docker 的正式面世,容器技术迅速成为了基础技术领域中的热门。而在近两三年中,随着容器编排领域的混战结束,Kubernetes 已...

    CSDN技术头条
  • 【推荐】50+有用的Docker工具

    容器生态系统比以往任何时候都增长和扩展得更快,而且有了这么多的Docker工具和服务,只要了解可用的选项,就会觉得这是一项艰巨的任务。无论你是初学者还是专家、开...

    liuxuewen
  • 云原生 (Cloud Native) = 微服务 + DevOps + 持续交付 + 容器化 ?

    https://dzone.com/articles/cloud-native-seeing-through-the-hype

    一个会写诗的程序员
  • Rancher简介与安装

    仓库地址:https://hub.docker.com/r/rancher/server/ 官网:https://rancher.com/ docs:htt...

    菲宇
  • Kubernetes在ShareThis生产环境中的实践

    Rainbond开源
  • 01 . 容器编排简介及Kubernetes核心概念

    ``docker run -H " 我的 Swarm 集群 API 地址 " " 我的容器 "`

    常见_youmen
  • 容器管理的8个顶级解决方案

    对于选择容器管理解决方案的组织来说,了解给定的解决方案以及提供该解决方案的供应商是很重要的。这是因为每个容器管理提供商的产品都提供了各种功能和工具,这些功能和工...

    静一

扫码关注云+社区

领取腾讯云代金券