在 Kubernetes 上安装 cRPD
管理在生产环境中运行应用程序的容器。确保没有停机时间。例如,如果一个容器出现故障,则需要启动另一个容器。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 主节点会自动处理跨群集中节点调度 Pod 的过程。
每个 Kubernetes 节点至少运行:
-
Kubelet,一个负责 Kubernetes 主节点和节点之间通信的进程;它管理机器上运行的 Pod 和容器。
-
容器运行时(如 Docker、rkt),负责从注册表中提取容器映像、解压缩容器并运行应用程序。
要创建 minikube 集群,请执行以下作:
下载 cRPD Docker 镜像
-
在导入 cRPD 软件之前,请确保 Docker 已安装在 Linux 主机上,并且 Docker 引擎正在运行。
-
请务必在下载 cRPD 软件之前向 瞻博网络支持 部门注册。
要下载 docker 映像,请执行以下作:
使用部署创建 cRPD Pod
Kubernetes Pod 是由一个或多个容器组成的组,出于管理和联网的目的而连接在一起。Kubernetes 部署会检查 Pod 的运行状况,并在容器终止时重新启动容器。部署是管理 Pod 创建和扩展的推荐方式。
当您在 Deployment 中描述所需状态时,Deployment Controller 会将实际状态更改为所需状态。您可以使用 Deployments 来创建新的 ReplicaSet。或者,您可以删除现有部署,并在新部署中采用其资源。
使用 YAML 创建 cRPD Pod
Pod 是 Kubernetes 应用程序的基本执行单元,是您创建或部署的 Kubernetes 对象模型中最小和最简单的单元。Pod 表示一个部署单元:Kubernetes 中应用程序的单个实例,它可能由单个容器或少量紧密耦合并共享资源的容器组成。Docker 是 Kubernetes Pod 中最常用的容器运行时。
您可以在 Kubernetes 中直接创建 Pod 或间接使用 Controller。一个 Controller 可以创建和管理多个 Pod。控制器使用您提供的 Pod 模板来创建 Pod。Pod 模板是包含在其他对象(如复制控制器、作业和守护程序集)中的 Pod 规范。
使用 YAML 文件创建 cRPD Pod 的步骤
每个 Pod 旨在运行给定应用程序的单个实例。如果要横向扩展应用程序(例如运行多个实例),则应使用多个 Pod,每个 Pod 对应一个。在 Kubernetes 中,这通常称为复制。
另见
使用作业资源创建 cRPD Pod
作业创建一个或多个 Pod,并将继续重试执行 Pod,直到指定数量的 Pod 成功终止。当达到指定数量的成功完成时,任务完成。您还可以使用作业并行运行多个 Pod。删除作业将清理它创建的 Pod。暂停作业将删除其活动 Pod,直到作业恢复。要使用 crpd_job.yaml 文件创建 cRPD Pod,请执行以下作:
使用 DaemonSet 创建 cRPD Pod
DaemonSet 确保所有(或某些)节点运行 Pod 的副本。将节点添加到集群中时,Pod 也会添加到集群中。当节点从集群中移除时,这些 Pod 将被垃圾回收。如果删除了 DaemonSet,则创建的 Pod 将被删除。
使用 crpd_daemonset.yaml 文件创建 cRPD pod
每个 Pod 旨在运行给定应用程序的单个实例。如果要横向扩展应用程序(例如运行多个实例),则应使用多个 Pod,每个 Pod 对应一个。在 Kubernetes 中,这通常称为复制。
另见
扩展 cRPD
您可以使用 –replicas 命令的 kubectl run 参数根据需求创建多个 cRPD 实例。部署是一个可以拥有和管理其 ReplicaSet 的对象。
在扩展之前我们应该有一个 pod
纵向扩展:
要缩减规模:
-
运行以下命令,将服务缩减为两个副本:
root@kubernetes-master:~# kubectl scale deployments crpdref --replicas=2deployment.apps/crpdref scaled
-
运行以下命令以列出部署:
root@kubernetes-master:~# kubectl get deployments -
执行以下命令,列出 Pod 数量。您可以查看两个 Pod 已终止:
root@kubernetes-master:~# kubectl get pods -o wide
cRPD 部署的滚动更新
您可以使用新版本更新 Pod 实例。滚动更新允许通过使用新 Pod 实例增量更新 Pod 实例,在零停机时间的情况下进行 部署 更新。新 Pod 安排在具有可用资源的节点上。回滚更新通过零停机时间的持续集成和持续交付应用程序,将应用程序从一个环境提升到另一个环境。在 Kubernetes 中,更新是有版本控制的,任何 部署 更新都可以还原到以前的稳定版本。
要使用新映像更新 cRPD 部署并在更新后保留配置:
使用分配的资源进行 cRPD Pod 部署
Pod 提供两种共享资源,即容器的网络和存储。当 Pod 中的容器与 Pod 外的实体通信时,它们必须协调如何使用共享的网络资源(例如端口)。在 Pod 中,容器通过 localhost 使用 IP 地址和端口进行通信。
Pod 中的容器查看的系统主机名与为 Pod 配置 name 的主机名相同。
Pod 中的任何容器都可以使用 privileged 容器规格上的标志启用特权模式。这对于需要作系统管理功能(如网络堆栈作或硬件设备访问)的容器非常有用。特权容器中的进程具有的权限与容器外部的进程几乎相同的权限。
要查看包含资源的 Pod 部署,请执行以下作:
使用挂载卷的 cRPD Pod 部署
an emptyDir 是 Kubernetes 上支持的一种卷类型。当一个 Pod 被分配给一个节点时,它就会被创建,只要该 Pod 在该节点上运行,它就会存在。顾名思义, emptyDir 卷最初是空的。Pod 中的所有容器都可以读取和写入卷中的 emptyDir 相同文件,尽管该卷可以在每个容器中的相同或不同路径上挂载。当 Pod 因任何原因从节点中删除时,Pod emptyDir 中的数据将被永久删除。
要通过在 Kubernetes 上挂载存储路径来查看 cRPD Pod 部署: