Vultr Kubernetes Engine (VKE) 参考指南

一、背景介绍

Vultr Kubernetes Engine (VKE) 是一个完全托管的 Kubernetes 产品,具有可预测的定价。部署 VKE 时,您将获得一个托管的 Kubernetes 控制平面,其中包括我们的云控制器管理器 (CCM) 和容器存储接口 (CSI)。此外,您可以配置块存储和负载均衡器,或安装附加组件,例如 Vultr 的外部 DNS 和证书管理器。我们使 Kubernetes 托管变得简单,因此您可以专注于扩展应用程序。

二、如何部署 VKE 群集

您只需单击几下即可部署新的 VKE 集群。下面介绍了如何开始。

  1. 导航到客户门户中的 Kubernetes 页面。
  2. 单击添加集群
  3. 输入群集名称的描述性标签。
  4. 选择 Kubernetes 版本。
  5. 选择部署位置。
  6. 创建节点池。关于节点池

    创建 VKE 群集时,可以为每个池分配一个或多个节点池,每个节点池有多个节点。对于每个节点池,您需要进行一些选择。

    节点池屏幕截图

    • 节点池名称:输入节点池的描述性标签。
    • 节点池类型:提供多种节点池类型;优化云将是默认节点池类型
    • 节点池类型的选择包括:
      • 优化的云
      • 常规云计算
      • 高频
      • 英特尔高性能
      • AMD 高性能
    • 计划:选择适合工作负荷的大小。池中的所有节点都是相同的计划,这意味着相同数量的 RAM、CPU 等。如果需要具有不同计划的节点,可以创建多个节点池。
    • 节点数:选择此池中应包含的节点数。强烈建议使用多个节点。

    节点池的月费率在您进行选择时计算。如果要部署多个节点池,请单击“添加另一个节点池”。

  7. 准备就绪后,单击立即部署

Kubernetes 需要一些时间来清点和配置节点。完成后,群集状态将更改为“正在运行”。

三、如何管理 VKE 群集

部署 VKE 群集后,您需要收集一些信息并进行管理。

导航到客户门户的Kubernetes部分,然后单击集群的名称以打开管理部分。您会在此区域找到几个选项卡。

3.1、“概述”选项卡

在“概述”选项卡中,你将看到有关群集的重要信息,例如 IP 地址、终结点 URL、可用子网和其他配置项。您可以在此处验证群集配置并下载文件。kubeconfig

“概述”选项卡

单击右上角的下载配置按钮以下载您的文件,这是一个 YAML 文件,其中包含控制集群所需的凭据和终端节点信息。该文件以实例的 UUID 命名,如下所示:kubeconfig

vke-8478867d-ffff-ffff-ffff-example00000.yaml

安装在本地工作站上,然后使用以下方法测试您的访问权限:kubectl

kubectl --kubeconfig=/PATH/TO/KUBECONFIG get nodes

3.1.1、关于 kubeconfig

kubectl使用一个配置文件,称为 kubeconfig,来访问你的 Kubernetes 集群。

一个 kubeconfig 文件包含集群的信息,比如用户、命名空间和认证机制。该命令使用 kubeconfig 来查找集群并与之通信。默认的 kubeconfig 是除非您在命令行或用环境变量覆盖该位置。你可以有多个 kubeconfig,kubectl 可以使用一个或多个合并在一起的。优先级顺序为:kubectl~/.kube/config

  1. 如果你设置了标志,kubectl 只加载那个文件。您只能使用一个标志,并且不会发生合并。--kubeconfig
  2. 如果设置了环境变量,则会根据系统的正常路径分隔规则将其解析为文件系统路径列表。$KUBECONFIG
  3. 否则,kubectl 使用文件,并且不会发生合并。~/.kube/config

有关合并的更多详细信息,请参阅Kubernetes 文档的这一部分。另外,请注意那里的严厉警告:

警告:仅使用来自可信来源的 kubeconfig 文件。使用特制的 kubeconfig 文件可能会导致恶意代码执行或文件暴露。如果您必须使用不受信任的 kubeconfig 文件,请先仔细检查它,就像检查 shell 脚本一样。

3.2“节点”选项卡

在“节点”选项卡中,您将在其中管理节点和节点池。

管理节点

您有几个控件可用:

  • 单击节点池名称以展开池并查看各个节点。您可以单独替换或删除节点。
  • 单击添加节点池以添加另一个
  • 单击调整池大小以减少或增加节点数。继续阅读以了解自动缩放程序功能。
  • 单击垃圾桶图标以销毁池。

重要:您必须使用 VKE Dashboard 或Vultr API 的 Kubernetes 端点来删除 VKE 工作节点。假设您在客户门户中的其他位置或使用Vultr API 的实例终端节点删除工作线程节点。在这种情况下,Vultr 将重新部署工作器节点以保留定义的 VKE 群集节点池配置。

3.2.1、关于自动缩放程序

调整池大小时,可以手动配置大小或使用自动缩放程序功能。以下是有关这两个选项的一些信息。

自动缩放程序(如下所示)允许你指定池大小的上限和下限。以下示例的最小节点计数为 3,最大节点计数为 6。顾名思义,VKE 将自动在这些值之间扩展节点数,以保持工作负载的响应能力。

自动缩放程序

手动选项允许您为节点数设置静态值,如果您的工作负载定义明确且可预测,这是一个不错的选择。

手动

3.3、“链接的资源”选项卡

要管理链接到 VKE 的资源(例如块存储和负载均衡器),请单击集群管理页面上的链接资源选项卡。

链接资源屏幕截图

3.4、“管理升级”选项卡

使用此选项卡可以管理群集升级。这是一个复杂的主题,因此我们编写了有关如何升级 VKE 集群的单独指南,您应该首先阅读该指南。

四、托管控制平面的功能

部署 VKE 时,会自动获得多个托管组件。尽管您不需要自己部署或配置它们,但以下是简要说明以及指向详细信息的链接。

4.1、云控制器管理器

Vultr 云控制器管理器 (CCM) 是将 Vultr 功能连接到 Kubernetes 集群的托管控制平面的一部分。CCM 监控节点的状态,分配其 IP 地址,并根据需要自动部署 Kubernetes 负载均衡器/入口服务的托管负载均衡器。在 GitHub 上了解有关 CCM 的更多信息。

4.2、容器存储接口

如果应用程序保留数据,则需要存储。VKE 的托管控制平面会自动部署 Vultr容器存储接口 (CSI),以将您的 Kubernetes 集群与 Vultr 的高速块存储连接起来。在 GitHub 上了解有关 CSI 的更多信息。

  • 注意:是 Vultr 块存储唯一允许的访问模式。ReadWriteOnce
  • 重要:应将块存储卷用于持久性数据。工作节点上的本地磁盘存储是暂时的,在 Kubernetes 升级期间会丢失。

Vultr提供两种块存储技术:HDD NVMe

4.2.1、硬盘块存储

HDD 是一种经济实惠的选择,它使用传统的旋转硬盘驱动器并支持大于 10 TB 的卷。

  • CSI 存储类:vultr-block-storage-hdd
  • 最小卷大小:40 GB
  • 最大卷大小:40 TB
  • 技术:旋转硬盘驱动器
  • 可用性:大多数 Vultr 地点
  • 主要特点:经济实惠的存储和最大的容量

4.2.2、NVMe 块存储

NVMe 是需要快速 I/O 的工作负载的更高性能选项。

  • CSI 存储类:vultr-block-storage
  • 最小卷大小:10 GB
  • 最大卷大小:10 TB
  • 技术:固态NVMe
  • 可用性:许多 Vultr 地点
  • 关键特性:最高性能 I/O

4.2.3、块存储可用性

使用API 终端节点发现您所在位置可用的存储类。/v2/regions

  • block_storage_storage_opt表示硬盘存储可用。
  • block_storage_high_perf表示 NVMe 存储可用。

某些位置支持这两种存储类。如果某个位置有可用的 NVMe 块存储,我们的 CSI 默认使用该类。

4.2.4、块存储使用情况

要将块存储与 VKE 配合使用,请部署持久卷声明 (PVC)。例如,要在您的帐户上为 VKE 部署具有 NMVe 支持的存储的 10Gi 块,请使用如下所示的 PersistentVolumeClaim 模板:

apiVersion: v1

kind: PersistentVolumeClaim

metadata:

  name: csi-pvc

spec:

  accessModes:

    - ReadWriteOnce

  resources:

    requests:

      storage: 10Gi

  storageClassName: vultr-block-storage

要将此 PVC 附加到 Pod 中,请在 Pod 模板中定义一个卷节点。请注意,下面是 csi-pvc,引用了上面示例中的 PersistentVolumeClaim。claimName

kind: Pod

apiVersion: v1

metadata:

  name: readme-app

spec:

  containers:

    - name: readme-app

      image: busybox

      volumeMounts:

        - mountPath: "/data"

          name: vultr-volume

      command: [ "sleep", "1000000" ]

  volumes:

    - name: vultr-volume

      persistentVolumeClaim:

        claimName: csi-pvc

要了解有关持久卷的更多信息,请参阅Kubernetes 文档。如果您想了解有关 Vultr CSI 的更多信息。

五、VKE 负载均衡器

VKE 中的负载均衡器提供与独立托管负载均衡器相同的所有特性和功能。要为应用程序部署 VKE 负载均衡器,请将 atype 添加到服务配置文件,并使用元数据注释告知 CCM 如何配置 VKE 负载均衡器。VKE 会根据您的服务配置部署 Kubernetes 服务负载均衡器,并将其附加到集群中。LoadBalancer

下面是一个示例服务配置文件,该文件为端口 80 上的 HTTP 流量声明负载均衡器。应用选择器与集群上的现有 Pod 服务集匹配。app-name

apiVersion: v1

kind: Service

metadata:

  annotations:

    service.beta.kubernetes.io/vultr-loadbalancer-protocol: "http"

  name: vultr-lb-http

spec:

  type: LoadBalancer

  selector:

    app: app-name

  ports:

    - port: 80

      name: "http"

请注意元数据部分中的注释。注释是配置负载均衡器的方式,您可以在我们的 GitHub 存储库中找到可用注释的完整列表。

下面是另一个侦听 HTTP 端口 80 和 HTTPS 端口 443 的负载均衡器示例。SSL 证书声明为名为 Kubernetes TLS 机密,此示例假定已部署该机密。ssl-secret

apiVersion: v1

kind: Service

metadata:

  annotations:

    service.beta.kubernetes.io/vultr-loadbalancer-protocol: "http"

    service.beta.kubernetes.io/vultr-loadbalancer-https-ports: "443"

    # You will need to have created a TLS Secret and pass in the name as the value

    service.beta.kubernetes.io/vultr-loadbalancer-ssl: "ssl-secret"

  name: vultr-lb-https

spec:

  type: LoadBalancer

  selector:

    app: app-name

  ports:

    - port: 80

      name: "http"

    - port: 443

      name: "https"

当您增加或减少集群工作器节点的数量时,VKE 会管理它们与负载均衡器的连接。

六、VKE 证书管理器

VKE 证书管理器将证书和证书颁发者添加为 VKE 中的资源类型,并简化了获取、续订和使用这些证书的过程。我们的 Cert Manager文档在 GitHub 上,您可以使用Vultr 的 Helm 图表来安装 Cert Manager。

七、VKE 外部域名解析

ExternalDNS 使 Kubernetes 资源可以通过公共 DNS 服务器发现。

八、常见问题

8.1、什么是 Vultr Kubernetes Engine?

Vultr Kubernetes Engine 是一个完全托管的产品,具有可预测的定价,使 Kubernetes 易于使用。Vultr 管理控制平面和工作器节点,并提供与其他托管服务(如负载均衡器、块存储和 DNS)的集成。

8.2、Vultr Kubernetes Engine 的成本是多少?

Vultr Kubernetes Engine 免费包含托管控制平面。您需要为部署的工作线程节点、负载均衡器和块存储资源付费。工作节点和负载均衡器在您选择的具有 2 GB 或更多 RAM 的 Vultr 云服务器实例上运行。

8.3、块存储卷是否有最小大小限制?

是的,块存储卷的最小大小为10GB。

8.4、可以将裸机服务器部署到我的 Kubernetes 集群吗?

Kubernetes使用Vultr云服务器。它不支持裸机服务器。

8.5、VKE 是否附带入口控制器?

否,VKE 未预配置入口控制器。Vultr 负载均衡器将与您部署的任何入口控制器配合使用。流行的入口控制器包括Nginx,HAProxy 和 Traefik。

8.6、VKE 使用什么容器网络接口 (CNI)?

VKE 使用 Calico。

赞(0)
未经允许不得转载:主机百科 » Vultr Kubernetes Engine (VKE) 参考指南