在 Kubernetes 上安装 cRPD
Kubernetes 是一种用于管理容器化工作负载和服务的开源平台。容器是捆绑和运行应用程序的好方法。在生产环境中,您需要管理运行应用程序的容器,并确保不会出现停机时间。例如,如果容器停机,需要启动另一个容器。Kubernetes 为您提供了一个弹性运行分布式系统的框架。Kubernetes 提供了一个平台,支持跨主机容器群集的应用程序容器的部署自动化、扩展和操作。
前提
在 Linux 系统上安装 Kubernetes 并在两节点 Linux 集群上部署 Kubernetes,请参阅 Kubernetes 安装。
部署 Kubernetes 时,您将获得一个群集。Kubernetes 群集由一组称为节点的工人机器组成,用于运行容器化应用程序。每个群集至少有一个工工节点。工人节点托管应用程序组件的 POD。
本节概述了在 Kubernetes 上创建 cRPD Docker 映像的步骤。
安装 Kubernetes
要安装 Kubernetes:
Kubernetes 群集
Kubernetes 协调连接到单个单元工作的计算机群集。Kubernetes 以高效的方式跨群集实现 cRPD 的部署和调度自动化。
Kubernetes 群集由两种类型的资源组成:
主协调群集
节点是运行应用程序的工作者
主要负责管理群集。主要协调群集中的所有活动,例如安排应用程序、维护应用程序所需的状态、扩展应用程序和发布新更新。
节点是虚拟机或物理计算机,用作 Kubernetes 群集中的工人机器。每个节点都有一个 Kubelet,这是管理节点并与 Kubernetes 主设备通信的代理。该节点还应具有用于处理容器操作的工具,例如 Docker 或 rkt。处理生产流量的 Kubernetes 群集应至少有三个节点。
在 Kubernetes 上部署 cRPD 时,主设备将启动应用容器。主要计划容器在集群的节点上运行。节点使用主节点公开的 Kubernetes API 与主节点通信。最终用户还可以直接使用 Kubernetes API 与群集交互。
Pod 始终在节点上运行。节点是 Kubernetes 中的一台工人机器,可以是虚拟机或物理机器,具体取决于群集。每个节点都由主节点管理。一个节点可以有多个 Pod,而 Kubernetes 主设备会自动处理集群中节点上的计划。
每个 Kubernetes 节点至少运行:
Kubelet,一个流程,负责 Kubernetes Master 与节点之间的通信;它管理机器上运行的 Pod 和容器。
容器运行时间(如 Docker、rkt),负责从注册表中提取容器映像、拆开容器包装并运行应用程序。
要创建 minikube 群集:
下载 cRPD Docker 图片
要下载 docker 图片:
使用部署创建 cRPD Pod
Kubernetes Pod 是一组一个或多个容器,捆绑在一起以用于管理和网络目的。Kubernetes 部署检查 Pod 的运行状况,如果 Pod 容器终止,则重新启动。部署是管理 Pods 创建和扩展的推荐方式。
在部署中描述所需状态时,部署控制器将实际状态更改为所需状态。您可以定义部署以创建新的复制集,或移除现有部署并采用其所有资源以及使用新部署。
使用 YAML 创建 cRPD Pod
Pod 是 Kubernetes 应用程序的基本执行单元- 您创建或部署的 Kubernetes 对象模型中最小、最简单的单元。Pod 表示一个部署单元:Kubernetes 中的应用程序的单个实例,可能由单个容器或紧密耦合且共享资源的少量容器组成。Docker 是 Kubernetes Pod 中使用的最常见的容器运行时间。
您可以直接在 Kubernetes 中直接创建 Pod 或间接使用控制器。控制器可以创建和管理多个 Pods。控制器使用您提供的 Pod 模板来创建 Pods。Pod 模板是 Pod 规格,包含在其他对象中,例如复制控制器、Jobs 和守护程序集。
要使用 YAML 文件创建 cRPD Pod
每个 Pod 都意味着运行给定应用程序的单个实例。如果您想要水平扩展应用程序(例如运行多个实例),则应使用多个 Pods,每个实例一个。在 Kubernetes 中,这通常称为复制。
另请参阅
使用作业资源创建 cRPD Pod
作业创建一个或多个 Pod,并将继续重试执行 Pod,直至指定数量的 Pods 成功终止。到达指定数量的成功完成时,任务将完成。您也可使用作业并行运行多个 Pods。删除作业将清理其创建的 Pod。挂起作业将删除其活动 Pods,直至再次恢复工作。要使用 crpd_job.yaml 文件创建 cRPD Pod:
使用 DaemonSet 创建 cRPD Pod
DaemonSet 可确保所有(或部分)节点都运行一个 Pod 的副本。随着节点被添加到群集,Pods 会被添加到它们中。当节点从集群中移除时,这些 Pods 会被收集垃圾。删除守护程序集将清理其创建的 Pods。
使用 crpd_daemonset.yaml 文件创建 cRPD Pod
每个 Pod 都意味着运行给定应用程序的单个实例。如果您想要水平扩展应用程序(例如运行多个实例),则应使用多个 Pods,每个实例一个。在 Kubernetes 中,这通常称为复制。
另请参阅
cRPD 扩展
您可以使用 –replicas
kubectl run
命令参数根据需求创建多个 cRPD 实例。部署是一个可以拥有和管理其复制集的对象。
在扩展之前,我们应该有一个 Pod
要纵向扩展:
要缩小规模:
-
运行以下命令以将服务缩减为 2 个副本:
root@kubernetes-master:~# kubectl scale deployments crpdref --replicas=2
deployment.apps/crpdref scaled
-
运行以下命令以列出部署:
root@kubernetes-master:~# kubectl get deployments
-
运行以下命令以列出 Pods 的数量。您可以查看已终止的 2 个 Pod:
root@kubernetes-master:~# kubectl get pods -o wide
cRPD 部署的滚动更新
您可以使用新版本更新 Pod 实例。滚动更新可通过增量使用新 Pods 实例进行更新,从而在零停机的情况下进行部署更新。新 Pods 安排在具有可用资源的节点上。回滚更新可通过持续集成和持续交付应用程序(零停机时间)将应用程序从一个环境推广到另一个环境。在 Kubernetes 中,更新将进行版本化,任何部署更新均可恢复为之前的稳定版本。
要使用新映像更新 cRPD 部署并在更新后保留配置:
具有分配资源的 cRPD Pod 部署
Pod 提供两种共享资源,即容器的网络和存储。当 Pod 中的容器与 Pod 外部的实体通信时,它们必须协调如何使用共享网络资源(例如端口)。在 Pod 中,容器使用 IP 地址和端口进行 localhost
通信。
Pod 中的容器查看系统主机名与为 Pod 配置 name
的相同。
Pod 中的任何容器都可使用 privileged
容器规格上的标记来启用权限模式。对于使用操作系统管理功能(例如操作网络堆栈或访问硬件设备)的容器而言,这很有用。权限容器内的流程获得与容器外部处理几乎相同的权限。
要使用资源查看 Pod 部署:
使用安装容量的 cRPD Pod 部署
A emptyDir
是在 K8s 上支持的几种类型的卷中之一,最初创建时,Pod 被分配给节点,只要该 Pod 在该节点上运行,就存在。正如该名称所示, emptyDir
该卷最初是空的。Pod 中的所有容器都可以在卷中 emptyDir
读取和写入相同的文件,但是该卷可以安装在每个容器中的相同或不同路径上。当 Pod 出于任何原因从节点中移除时,中的 emptyDir
数据将被永久删除。
要通过在 Kubernetes 上安装存储路径来查看 cRPD Pod 部署: