Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

在 Kubernetes 上安装 cRPD

Kubernetes 是一个用于管理容器化工作负载和服务的开源平台。容器是捆绑和运行应用程序的好方法。

管理在生产环境中运行应用程序的容器。确保没有停机时间。例如,如果一个容器出现故障,则需要启动另一个容器。Kubernetes 为您提供了一个弹性运行分布式系统的框架。Kubernetes 提供了一个平台,用于跨主机容器集群进行应用容器的部署、自动化、扩展和作。

先决条件

在 Linux 系统上安装 Kubernetes 并在双节点 Linux 集群上部署 Kubernetes,请参阅 Kubernetes 安装

部署 Kubernetes 时,会获得一个群集。Kubernetes 集群由一组运行容器化应用程序的工作计算机(称为节点)组成。每个群集至少有一个工作节点。工作节点托管作为应用程序组件的 Pod 的主机。

本节概述了在 Kubernetes 上创建 cRPD Docker 映像的步骤。

安装 Kubernetes

要安装 Kubernetes,请执行以下作:

  1. 以 root 用户身份登录。
  2. 下载并安装软件。
  3. 启动 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 集群,请执行以下作:

  1. 执行以下命令,验证minikube版本。
  2. 执行以下命令,启动集群。
  3. 执行以下命令,验证是否安装了 kubectl:
  4. 执行以下命令,查看集群详情。
  5. 执行以下命令,查看集群中的节点。

下载 cRPD Docker 镜像

先决条件
  • 在导入 cRPD 软件之前,请确保 Docker 已安装在 Linux 主机上,并且 Docker 引擎正在运行。

  • 请务必在下载 cRPD 软件之前向 瞻博网络支持 部门注册。

要下载 docker 映像,请执行以下作:

  1. 使用在 cRPD 销售履行过程中提供的凭据登录到 Juniper Docker 注册表。
    1. 创建文件-passwd.txt并复制访问令牌,不包括瞻博网络客户服务团队提供的报价。
    2. 使用以下命令登录到 Enterprise Hub:
      root@ubuntu-vm18$ cat passwd.txt | docker login -u"<registered-email-id>" --password-stdin enterprise-hub.juniper.net:443

      例如 root@ubuntu-vm18$ cat passwd.txt | docker login -u user@domain.com --password-stdin enterprise-hub.juniper.net:443

  2. 使用以下命令从下载站点拉取 docker 映像:

    root@dc-rpd-01# docker pull enterprise-hub.juniper.net:443/crpd-docker-prod/crpd:<release tag>

    例如

    root@ubuntu-vm18:~# docker pull enterprise-hub.juniper.net:443/crpd-docker-prod/crpd:22.3R1

  3. 验证 docker 映像存储库中的映像。

    root@dc-rpd-01# docker images

使用部署创建 cRPD Pod

Kubernetes Pod 是由一个或多个容器组成的组,出于管理和联网的目的而连接在一起。Kubernetes 部署会检查 Pod 的运行状况,并在容器终止时重新启动容器。部署是管理 Pod 创建和扩展的推荐方式。

当您在 Deployment 中描述所需状态时,Deployment Controller 会将实际状态更改为所需状态。您可以使用 Deployments 来创建新的 ReplicaSet。或者,您可以删除现有部署,并在新部署中采用其资源。

  1. 在 Kubernetes-primary 上创建 crpd.yaml 文件并添加以下文本内容:
  2. 保存 crpd.yaml 文件以创建 cRPD Pod。

    root@kubernetes-master:~# kubectl create -f crpd.yaml

  3. 执行以下命令,查看现有 Pod 列表。

    root@kubernetes-master:~# kubectl get pods

  4. 执行以下命令,查看 Pod 中的容器以及用于构建容器的镜像:

    root@kubernetes-master:~# kubectl describe pod crpd

使用 YAML 创建 cRPD Pod

Pod 是 Kubernetes 应用程序的基本执行单元,是您创建或部署的 Kubernetes 对象模型中最小和最简单的单元。Pod 表示一个部署单元:Kubernetes 中应用程序的单个实例,它可能由单个容器或少量紧密耦合并共享资源的容器组成。Docker 是 Kubernetes Pod 中最常用的容器运行时。

您可以在 Kubernetes 中直接创建 Pod 或间接使用 Controller。一个 Controller 可以创建和管理多个 Pod。控制器使用您提供的 Pod 模板来创建 Pod。Pod 模板是包含在其他对象(如复制控制器、作业和守护程序集)中的 Pod 规范。

使用 YAML 文件创建 cRPD Pod 的步骤

  1. 在 Kubernetes-primary 上创建 crpd.yaml 文件,添加以下文本内容:
  2. 保存 crpd.yaml 文件以创建 crpd Pod。

    root@kubernetes-master:~# kubectl create -f crpd.yaml

  3. 执行以下命令,查看现有 Pod 列表。

    root@kubernetes-master:~# kubectl get pods

  4. 执行以下命令,查看 Pod 中的容器以及用于构建容器的镜像:

    root@kubernetes-master:~# kubectl describe pod crpd

  5. 运行以下命令,在正在运行的容器内提供交互式 CLI:

    root@kubernetes-master:~# kubectl exec -it crpd cli

    在这里,您正在运行一个名为 crpd 的 pod,并连接到命令行模式。

  6. 执行以下命令查看路由。

    root@crpd:/> show route

每个 Pod 旨在运行给定应用程序的单个实例。如果要横向扩展应用程序(例如运行多个实例),则应使用多个 Pod,每个 Pod 对应一个。在 Kubernetes 中,这通常称为复制。

使用作业资源创建 cRPD Pod

作业创建一个或多个 Pod,并将继续重试执行 Pod,直到指定数量的 Pod 成功终止。当达到指定数量的成功完成时,任务完成。您还可以使用作业并行运行多个 Pod。删除作业将清理它创建的 Pod。暂停作业将删除其活动 Pod,直到作业恢复。要使用 crpd_job.yaml 文件创建 cRPD Pod,请执行以下作:

  1. 在工作节点上创建 crpd_job.yaml 文件,并添加以下文本内容:
  2. 保存 crpd_job.yaml 文件以创建 crpd Pod。

    root@kubernetes-master:~# kubectl create -f crpd_job.yaml

  3. 执行以下命令,查看现有 Pod 列表。

    root@kubernetes-master:~# kubectl get pods

  4. 执行以下命令,查看 Pod 中的容器以及用于构建容器的镜像:

    root@kubernetes-master:~# kubectl describe job/crpdjob

使用 DaemonSet 创建 cRPD Pod

DaemonSet 确保所有(或某些)节点运行 Pod 的副本。将节点添加到集群中时,Pod 也会添加到集群中。当节点从集群中移除时,这些 Pod 将被垃圾回收。如果删除了 DaemonSet,则创建的 Pod 将被删除。

使用 crpd_daemonset.yaml 文件创建 cRPD pod

  1. 在工作节点上创建 crpd_daemonset.yaml 文件,并添加以下文本内容:
  2. 保存 da1.yaml 文件以创建 crpd Pod。

    root@kubernetes-master:~# kubectl create -f crpd_daemonset.yaml

  3. 执行以下命令,查看现有 Pod 列表。

    root@kubernetes-master:~# kubectl get pods

  4. 执行以下命令,查看 Pod 中的容器以及用于构建容器的镜像:

    root@kubernetes-master:~# kubectl describe pod crpd

    root@kubernetes-master:~# kubectl describe pod crpd-5fc4fd79df-xr8f5

每个 Pod 旨在运行给定应用程序的单个实例。如果要横向扩展应用程序(例如运行多个实例),则应使用多个 Pod,每个 Pod 对应一个。在 Kubernetes 中,这通常称为复制。

扩展 cRPD

您可以使用 –replicas 命令的 kubectl run 参数根据需求创建多个 cRPD 实例。部署是一个可以拥有和管理其 ReplicaSet 的对象。

在扩展之前我们应该有一个 pod

纵向扩展:

  1. 创建 Pod。

    root@kubernetes-master:~# kubectl create -f crpd_replicatset.yaml

  2. 在 Kubernetes-primary 上创建 crpd_replicaSet.yaml 文件,添加以下文本内容:
  3. 执行以下命令查看 Pod。

    root@kubernetes-master:~# kubectl get pods

  4. 运行以下命令,将部署扩展到四个副本:

    root@kubernetes-master:~# kubectl scale deployments crpdref --replicas=4

  5. 运行以下命令以列出部署:

    root@kubernetes-master:~# kubectl get deployments

  6. 执行以下命令,查看已更改的 Pod 数量:

    root@kubernetes-master:~# kubectl get pods -o wide

  7. 执行以下命令,查看Pod详情。

    root@kubernetes-master:~# kubectl describe pods

要缩减规模:

  1. 运行以下命令,将服务缩减为两个副本:

    root@kubernetes-master:~# kubectl scale deployments crpdref --replicas=2

  2. 运行以下命令以列出部署:

    root@kubernetes-master:~# kubectl get deployments

  3. 执行以下命令,列出 Pod 数量。您可以查看两个 Pod 已终止:

    root@kubernetes-master:~# kubectl get pods -o wide

cRPD 部署的滚动更新

您可以使用新版本更新 Pod 实例。滚动更新允许通过使用新 Pod 实例增量更新 Pod 实例,在零停机时间的情况下进行 部署 更新。新 Pod 安排在具有可用资源的节点上。回滚更新通过零停机时间的持续集成和持续交付应用程序,将应用程序从一个环境提升到另一个环境。在 Kubernetes 中,更新是有版本控制的,任何 部署 更新都可以还原到以前的稳定版本。

要使用新映像更新 cRPD 部署并在更新后保留配置:

  1. 创建 cRPD Pod。

    root@crpd-01:~# kubectl kubectl create -f crpd_deploy.yaml

  2. 在 Kubernetes-primary 上创建 crpd_deploy.yaml 文件,添加以下文本内容:
  3. 运行以下命令以列出部署:

    root@kubernetes-master:~# kubectl get deployments

  4. 执行以下命令,列出正在运行的Pod。

    root@kubernetes-master:~# kubectl get pods

    root@kubernetes-master:~# kubectl get pods -o wide

  5. 执行以下命令,查看当前cRPD镜像版本。

    root@kubernetes-master:~# kubectl exec -it crpd-deploy4-674b4fcfb5-8xc5d -- cli

  6. 执行以下命令,查看当前镜像版本:

    root@crpd-deploy4-674b4fcfb5-8xc5d> show version

  7. 执行以下命令,将应用镜像更新为新版本:

    root@crpd-deploy4-674b4fcfb5-8xc5d:~$ sudo kubectl edit deployment/crpd-deploy4

  8. 执行以下命令,确认镜像是否更新:

    root@crpd-deploy4-674b4fcfb5-8xc5d:~$ sudo kubectl rollout status deployment/crpd-deploy4

  9. 执行以下命令查看 Pod。

    root@crpd-deploy4-674b4fcfb5-8xc5d> kubectl get pods

  10. 执行以下命令,查看cRPD镜像版本。

    root@kubernetes-master:~$ sudo kubectl exec -it crpd-deploy4-6ff476994d-8z2kr -- bash

  11. 执行以下命令,查看当前镜像版本:

    root@crpd-deploy4-6ff476994d-8z2kr> show version

使用分配的资源进行 cRPD Pod 部署

Pod 提供两种共享资源,即容器的网络和存储。当 Pod 中的容器与 Pod 外的实体通信时,它们必须协调如何使用共享的网络资源(例如端口)。在 Pod 中,容器通过 localhost 使用 IP 地址和端口进行通信。

Pod 中的容器查看的系统主机名与为 Pod 配置 name 的主机名相同。

Pod 中的任何容器都可以使用 privileged 容器规格上的标志启用特权模式。这对于需要作系统管理功能(如网络堆栈作或硬件设备访问)的容器非常有用。特权容器中的进程具有的权限与容器外部的进程几乎相同的权限。

要查看包含资源的 Pod 部署,请执行以下作:

  1. 在 Kubernetes-primary 上创建 crpd_res.yaml 文件,添加以下文本内容:
  2. 保存 crpd_res.yaml 文件以创建 crpd Pod。

    root@kubernetes-master:~# kubectl create -f crpd_res.yaml

  3. 执行以下命令,查看现有 Pod 列表。

    root@kubernetes-master:~# kubectl get pods

  4. 执行以下命令,查看 Pod 中的容器以及用于构建容器的镜像:

    root@kubernetes-master:~# kubectl describe pod crpres

使用挂载卷的 cRPD Pod 部署

an emptyDir 是 Kubernetes 上支持的一种卷类型。当一个 Pod 被分配给一个节点时,它就会被创建,只要该 Pod 在该节点上运行,它就会存在。顾名思义, emptyDir 卷最初是空的。Pod 中的所有容器都可以读取和写入卷中的 emptyDir 相同文件,尽管该卷可以在每个容器中的相同或不同路径上挂载。当 Pod 因任何原因从节点中删除时,Pod emptyDir 中的数据将被永久删除。

要通过在 Kubernetes 上挂载存储路径来查看 cRPD Pod 部署:

  1. 在 Kubernetes-primary 上创建 crpd_volume.yaml 文件,添加以下文本内容:
  2. 保存 crpd_volume.yaml 文件以创建 crpd Pod。

    root@kubernetes-master:~# kubectl create -f crpd_volume.yaml

  3. 执行以下命令,查看现有 Pod 列表。

    root@kubernetes-master:~# kubectl get pods

  4. 执行以下命令,查看 Pod 中的容器以及用于构建容器的镜像:

    root@kubernetes-master:~# kubectl describe pod crpd-volume

  5. 执行以下命令,执行cRPD实例。

    root@kubernetes-master:~# kubectl exec -it crpd-volume bash

  6. 执行以下命令,查看路径中的文件。

    root@crpd-volume:/# ls

  7. 运行以下命令以导航到存储路径:

    root@crpd-volume:/# cd var/log/crpd-storage/

    root@crpd-volume:/var/log/crpd-storage/#