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