VHM 和 Kubernetes

您可以使用虚拟主机管理器 (VHM) 管理 Kubernetes 群集。

VHM 允许 SUSE Manager 获取并报告有关您的群集的信息。有关 VHM 的详细信息,请参见 虚拟主机管理器

要将 SUSE Manager 与 Kubernetes 搭配使用,您需要将 SUSE Manager 服务器配置为进行容器管理,为其配置所有必需的通道,并且有可用的已注册容器构建主机。

此外还需满足以下条件:

  • 网络上至少有一个可用的 Kubernetes 群集。

  • SUSE Manager 服务器上已安装 virtual-host-gatherer-Kubernetes 软件包。

  • Kubernetes 1.5.0 或更高版本。

  • 容器构建主机上已安装 Docker 1.12 或更高版本。

1. 创建 Kubernetes VHM

可以使用 SUSE Manager 作为 VHM 注册 Kubernetes 群集。

您需要使用 kubeconfig 文件来注册 Kubernetes 群集以及为其授权。您可以使用 Kubernetes 命令行工具 kubectl 获取 kubeconfig 文件。kubectl config view --flatten=true 会为 VHM 提供配置并根据需要嵌入证书文件。

过程:创建 Kubernetes VHM
  1. 在 SUSE Manager Web UI 中,导航到系统  虚拟主机管理器

  2. 单击 创建,然后选择 Kubernetes 群集

  3. 添加 Kubernetes 虚拟主机管理器部分,使用以下参数:

    • 标签字段中,为 VHM 键入自定义名称。

    • 选择包含 Kubernetes 群集所需数据的 kubeconfig 文件。

  4. 上下文字段中,为群集选择适当的上下文。 此设置在 kubeconfig 文件中指定。

  5. 单击 创建

过程:查看群集中的节点
  1. 在 SUSE Manager Web UI 中,导航到系统  虚拟主机管理器

  2. 选择 Kubernetes 群集。

  3. 单击 安排刷新数据 以刷新节点数据。

更新节点数据可能需要一些时间。您可能需要刷新浏览器窗口来查看更新的信息。

任何连接或身份验证问题都会记录到 gatherer.log 中。

注册期间不会刷新节点数据, 您需要手动刷新才能看到更新的数据。

2. 检索映像运行时数据

您可以在 SUSE Manager Web UI 中导航到映像  映像列表来查看有关 Kubernetes 映像的运行时数据。

映像列表表格中包含以下三列:

  • 修订版

    SUSE Manager 每次重新构建映像版本时或每次导入外部构建的映像时递增的序号。

  • 运行时

    所注册群集中每个映像的运行中实例的总体状态。

  • 实例

    在 SUSE Manager 中注册的所有群集中运行此映像的实例数。您可以单击数字旁边的弹出图标查看数字明细。

运行时列会显示以下一种状态消息:

  • 所有实例与 SUSE Manager 相一致

    所有运行中实例都在运行 SUSE Manager 所跟踪的同一映像版本。

  • 找到已过时的实例

    部分实例运行的是映像的较旧版本。您可能需要重新部署映像。

  • 无信息

    实例映像的校验和与 SUSE Manager 中包含的映像数据不匹配。您可能需要重新部署映像。

过程:构建映像
  1. 在 SUSE Manager Web UI 中,导航到映像  存储区

  2. 单击 创建 以创建映像存储区。

  3. 导航到映像  配置文件

  4. 单击 创建 以创建映像配置文件。 您需要使用适合部署到 Kubernetes 的 dockerfile。

  5. 导航到映像  构建以使用新配置文件构建映像。

  6. 将映像部署到某个注册的 Kubernetes 群集中。 您可以使用 kubectl 工具执行此操作。

更新的数据现在应该会出现在映像列表(单击映像  映像列表即会显示)中。

过程:导入之前部署的映像
  1. 在 SUSE Manager Web UI 中,导航到映像  映像存储区

  2. 添加拥有您要导入的映像的注册表(如果尚不存在)。

  3. 导航到映像  映像列表,然后单击 导入

  4. 填写字段,选择您创建的映像存储区,然后单击 导入

导入的映像现在应该会出现在映像列表(单击映像  映像列表即会显示)中。

过程:重构建之前部署的映像
  1. 在 SUSE Manager Web UI 中,导航到映像  映像列表,找到您要重构建的映像所在的行,然后单击 细节

  2. 导航到构建状态部分,然后单击 重构建。 重构建可能需要一段时间才能完成。

重构建成功完成后,映像列表(单击映像  映像列表即会显示)中映像的运行时状态将会更新。这表示实例运行的是映像以前的版本。

只有在映像最初是使用 SUSE Manager 构建的情况下,您才可以重构建映像。您无法重构建导入的映像。

过程:检索其他运行时数据
  1. 在 SUSE Manager Web UI 中,导航到映像  映像列表,找到正在运行的实例所在的行,然后单击 细节

  2. 导航到概览选项卡。 在映像信息部分,运行时实例字段中会显示相关数据。

  3. 导航到运行时选项卡。 此部分包含有关所有注册群集中运行此映像的 Kubernetes Pod 的信息。此部分的信息包括:

    • Pod 名称。

    • Pod 所在的名称空间。

    • 特定 Pod 中容器的运行时状态。

3. 权限和证书

仅当 kubeconfig 文件包含所有嵌入的证书数据时,您才能在 SUSE Manager 中使用该文件。

通过 SUSE Manager 进行的 API 调用包括:

  • GET /api/v1/pods

  • GET /api/v1/nodes

建议为 SUSE Manager 赋予如下最小权限:

  • 可列出所有节点的 ClusterRole:

    resources: ["nodes"]
    verbs: ["list"]
  • 可列出所有名称空间中的 Pod 的 ClusterRole(角色绑定不能对名称空间产生任何限制):

    resources: ["pods"]
    verbs: ["list"]

如果 /pods 返回 403 响应,SUSE Manager 将会忽略整个群集。

有关使用 RBAC 授权的详细信息,请参见 https://kubernetes.io/docs/admin/authorization/rbac/