开发者的Kubernetes懒人指南( 二 )


一旦你的镜像成功上传到 Registry,你可以在目标服务器上登录到该注册表 。
docker login mysupersecret.registry.com一旦你在 Registry 上登录成功,你的 docker run 就能找到你的自定义镜像了 。
docker run --name my-new-ai-startup -p 80:8080 -d mynewaistartup//....SUCCESS!Docker Compose:同时运行多个容器如果你的应用程序不仅仅包含一个单独的 Docker 容器,比如说 , 因为你需要运行98354 个微服务?
Docker Compose 来拯救 。你将在一个传统而又经典的 YAML 文件,即compose.yaml文件中定义所有服务及其之间的依赖关系(运行这个或那个先) 。以下是一个定义两个服务的示例,一个是 Web 服务,另一个是 redis 服务 。
services:web:build: .ports:- "8000:5000"volumes:- .:/code- logvolume01:/var/logdepends_on:- redisredis:image: redisvolumes:logvolume01: {}然后只需运行docker compose up,整个环境(由所有独立服务在单独的 Docker 容器中运行组成)将被启动 。请注意 , 这意味着所有容器将在同一台机器上运行 。如果要将其扩展到多台机器上,您将需要使用Docker Swarm 。
虽然Docker Compose可能主要用于快速启动开发或测试环境,但它实际上也适用于(单主机)生产部署 。如果你的应用程序…

  • 没有特定的高可用性要求
  • 你不介意一些手动操作(ssh 登录,docker compose up/down)或使用辅助工具如Ansible
  • 或者你只是不想在 DevOps 团队上投入巨额资金
…使用 Docker Compose 进行生产部署将大有裨益 。
Kubernetes 101: 基础和概念那么我为什么需要 Kubernetes 呢?当你想要开始运行数百、数千(或是它们的倍数)的容器时,事情变得有趣起来 。如果你不关心或者不想知道这些容器将在哪台具体的硬件/主机上运行,但仍然希望能够合理地管理所有这些,那么 Kubernetes 就派上用场了!
(注:相当长时间以前 , 我读过一本关于 Kubernetes 的书 , 在介绍中他们规定了运行 Kubernetes 开始变得有意义的下限数字 , 我记得它从数百到数千开始,尽管我无法找到那本确切的书了 。)
让我们快速了解一下 Kubernetes 的基础概念 。
 
开发者的Kubernetes懒人指南

文章插图
图片
 
(工作,Worker)节点你的软件(或者在 Kubernetes 术语中称为工作负载)必须在某个地方运行,无论是虚拟机还是物理机器 。在 Kubernetes 中,这个地方被称为节点(Node) 。
此外,Kubernetes 部署和运行容器:你好,Docker,我的老朋友?。ㄗⅲ篕ubernetes 支持许多容器运行时,包括containerd、CRI-O、Docker Engine等 , 尽管 Docker 是最常用的)
实际上 , 这并不完全正确 。在 Kubernetes 的术语中,你部署(调度)Pods,一个 Pod 包含一个或多个容器 。
好吧,我们在节点上运行Pods,但是谁控制这些节点,以及你在这些节点上如何决定运行什么呢?
(小贴士:一个小映射表)
非 Kubernetes
Kubernetes 术语
软件/应用
工作负载
机器
节点
(1-多个)容器
Pod
部署
调度
控制平面认识控制平面 。为简单起见,我们可以将其视为控制节点的一个组件(与其包含的大约 9472 个组件相对) 。控制平面,除了其他许多功能…
  • 让你运行调度你的应用程序,即让你将一个 Pod 放到一个节点上 。
  • 检查所有的 Pod 是否处于期望的状态,例如它们是否响应 , 或者其中一个是否需要重新启动?
  • 实现每个工程师的幻想:“我们终于需要扩展 10 倍了,让我们快速启动 n 个更多的 Pod!”
Pods 与 Nodes如果Pods和Nodes之间的区别还有点不清楚 。Kubernetes 有一个所谓的调度器 。每当调度器发现新的 Pod(== 容器(们))需要调度时(耶?。?nbsp;, 它会尝试找到 Pod 的最佳节点 。这意味着很有可能多个 Pod 在同一节点上运行 , 或者在不同节点上运行 。如果你想深入了解这个主题 , 你可能需要阅读有关 "节点选择" 以及如何影响它的官方文档 。


推荐阅读