使用 Seesaw 进行捆绑式负载平衡

Anthos Clusters on VMware (GKE On-Prem) 可以在以下三种负载平衡模式之一下运行:集成模式、手动模式或捆绑模式。本主题介绍如何将 Anthos Clusters on VMware 配置为在捆绑式负载平衡模式下运行。

此处为完整说明。如需简要了解如何使用 Seesaw 负载平衡器,请参阅 Seesaw 负载平衡器(快速入门)

在捆绑式负载平衡模式下,Anthos Clusters on VMware 提供并管理负载平衡器。您无需获得负载平衡器许可,并且只需执行最基本的设置步骤。

Anthos Clusters on VMware 提供的捆绑式负载平衡器为 Seesaw 负载平衡器

捆绑式负载平衡模式的优势

与手动负载平衡模式相比,捆绑式负载平衡模式具有以下优势:

  • 单个团队可同时负责集群创建和负载平衡器配置。例如,集群管理团队无需依赖独立的网络团队来提前获取、运行和配置负载平衡器。

  • Anthos Clusters on VMware 会自动在负载平衡器上配置虚拟 IP 地址(VIP 地址)。创建集群时,Anthos Clusters on VMware 会为负载平衡器配置 Kubernetes API 服务器、Ingress 服务和集群插件的 VIP 地址。当客户端创建 LoadBalancer 类型的 Service 时,Anthos Clusters on VMware 会自动在负载平衡器上配置 Service VIP 地址。

  • 降低了组织、群组和管理员之间的依赖性。具体来说,管理集群的群组对管理网络的群组的依懒性更低。

对于捆绑式负载平衡模式,我们强烈建议您使用 vSphere 6.7 或更高版本以及 Virtual Distributed Switch (VDS) 6.6 或更高版本。

如果您愿意,可以使用早期版本,但安装的安全性会降低。本主题的其余部分更详细地介绍了使用 vSphere 6.7+ 和 VDS 6.6+ 的安全优势。

规划您的 VLAN

一个 Anthos Clusters on VMware 安装具有一个管理员集群和一个或多个用户集群。使用捆绑式负载平衡模式时,我们强烈建议您将集群置于不同的 VLAN 上,特别是管理员集群应位于它自己的 VLAN 上。

如果您的管理员集群位于它自己的 VLAN 上,则控制层面流量会与数据层面流量分离开来。这种分开可防止管理员集群和用户集群控制层面产生意外的配置错误。此类错误可能会导致出现问题,例如由同一 VLAN 中的第 2 层循环导致的广播风暴,或者冲突的 IP 地址消除了数据层面与控制层面之间所需的分离。

预配虚拟机资源,以实现捆绑式负载平衡 (Seesaw)

使用捆绑式负载平衡,您可以根据您预期会遇到的网络流量来预配虚拟机 CPU 和内存资源。

捆绑式负载平衡器不属于内存密集型,可以在具有 1GB 内存的虚拟机中运行。但网络数据包速率的增加会需要更多的 CPU。

下表展示了预配虚拟机的存储、CPU 和内存准则。由于数据包速率并非典型的网络性能衡量方式,因此该表还会显示活跃网络连接数上限的准则。这些准则还假设虚拟机具有 10 Gbps 链路的环境,并且 CPU 运行容量低于 70%。

当捆绑式负载平衡器以高可用性 (HA) 模式运行时,它会运行活跃和备份对,因此所有流量都流经单个虚拟机。

由于实际用例各不相同,需要根据您的实际流量修改这些准则。 监控 CPU 和数据包速率指标以进行必要的更改。

如果您需要更改 Seesaw 虚拟机的 CPU 和内存,您需要按照说明升级负载平衡器。请注意,您可以保留相同版本的捆绑式负载平衡器,并且仅更改 CPU 数量和内存分配。

对于小型管理员集群,我们建议使用 2 个 CPU,对于大型管理员集群,我们建议使用 4 个 CPU。

存储 CPU 内存 数据包速率 (pps) 活跃连接数上限
20 GB 1(非生产) 1 GB 25 万 100
20 GB 2 3 GB 45 万 300
20 GB 4 3 GB 85 万 6000
20 GB 6 3 GB 100 万 10000

请注意,您应该仅在非生产环境中预配单个 CPU。

预留虚拟 IP 地址

无论您选择哪种负载平衡模式,都必须预留一些虚拟 IP 地址(VIP 地址)以用于负载平衡。这些 VIP 地址允许外部客户端访问您的 Kubernetes API 服务器、入站服务和插件服务。

您必须为管理员集群预留一组 VIP 地址,并且为要创建的每个用户集群预留一组 VIP 地址。对于给定的集群,这些 VIP 地址必须与集群节点和该集群的 Seesaw 虚拟机位于同一 VLAN。

如需预留 VIP 的说明,请参阅创建管理员集群

预留节点 IP 地址

使用捆绑式负载平衡模式时,您可以为集群节点指定静态 IP 地址,也可以让集群节点从 DHCP 服务器获取其 IP 地址。

如果您希望集群节点具有静态 IP 地址,请为管理员集群中的节点预留足够的地址,并为您要创建的所有用户集群中的节点预留足够的地址。如需详细了解预留节点 IP 地址的数量,请参阅创建管理员集群

为 Seesaw 虚拟机预留 IP 地址

接下来,为将运行 Seesaw 负载平衡器的虚拟机预留 IP 地址。

您预留的地址数量取决于要创建高可用性 (HA) Seesaw 负载平衡器还是非 HA Seesaw 负载平衡器。

案例 1:HA Seesaw 负载平衡器

对于您的管理员集群,请为一对 Seesaw 虚拟机预留两个 IP 地址。此外,对于您的管理员集群,请为 Seesaw 虚拟机对预留单个主 IP 地址。所有这三个地址都必须与管理员集群节点位于同一 VLAN。

对于要创建的每个用户集群,请为一对 Seesaw 虚拟机预留两个 IP 地址。此外,对于每个用户集群,请为 Seesaw 虚拟机对预留单个主 IP 地址。对于给定的用户集群,所有这三个地址都必须与用户集群节点位于同一 VLAN。

案例 2:非 HA Seesaw 负载平衡器

对于您的管理员集群,请预留一个 IP 地址用于 Seesaw 虚拟机。此外,对于您的管理员集群,请为 Seesaw 负载平衡器预留一个主 IP 地址。这两个地址都必须与管理员集群节点位于同一 VLAN。

对于要创建的每个用户集群,请为一个 Seesaw 虚拟机预留一个 IP 地址。此外,对于每个用户集群,请为 Seesaw 负载平衡器预留一个主 IP 地址。这两个地址都必须与用户集群节点位于同一 VLAN。

规划您的端口组

您的每个 Seesaw 虚拟机都有两个网络接口。其中一个网络接口配置了 VIP。另一个网络接口配置有 IP 地址,该 IP 地址来自必须提供的 IP 地址块文件。

对于单个 Seesaw 虚拟机,这两个网络接口可以连接到同一 vSphere 端口组,也可以连接到单独的端口组。如果端口组不同,则必须位于同一 VLAN。

本主题涉及两个端口组:

  • 负载平衡器端口组:对于 Seesaw 虚拟机,配置了 VIP 地址的网络接口会连接到此端口组。

  • 集群节点端口组:对于 Seesaw 虚拟机,使用从您的 IP 地址块文件中获取的 IP 地址配置的网络接口会连接到此端口组。您的集群节点也连接到此端口组。

负载平衡器端口组和集群节点端口组可以是同一个端口组。但我们强烈建议您将两者分开。

下图展示了推荐的 Seesaw 负载平衡网络配置:

此图显示 Seesaw 负载平衡器的网络 VLAN 上的 Seesaw 虚拟机和集群节点

上图表示一个集群,即管理员集群或用户集群。您应该还记得,我们建议每个集群都在自己的 VLAN 上运行。

在图中,您可以看到网络的以下特性:

  • 有两个 Seesaw 虚拟机,一个主虚拟机和一个备用虚拟机。

  • Seesaw 虚拟机与集群节点位于同一 VLAN 上。

  • 备用 Seesaw 虚拟机有两个网络接口。一个接口配置了来自 Seesaw IP 地址块文件的 IP 地址。另一个接口未配置任何 IP 地址。

  • 主 Seesaw 虚拟机具有两个网络接口。一个接口配置了来自 Seesaw IP 地址块文件的 IP 地址。另一个接口配置了 VIP。

  • 每个 Seesaw 虚拟机都有一个网络接口连接到负载平衡器端口组。图中的所有其他网络接口都连接到集群节点端口组。

上图所示的网络接口上配置的所有 IP 地址(包括 VIP)都必须可以路由至 VLAN。

对于管理员集群,Seesaw 主虚拟机上的 VIP 接口使用以下 IP 地址进行配置:

  • 管理员集群的主 Seesaw 虚拟机的 VIP
  • 管理员集群插件 VIP
  • 管理员集群的控制层面 VIP
  • 所有关联用户集群的控制层面 VIP
  • 管理员集群中运行的 LoadBalancer 服务的 VIP

对于用户集群,Seesaw 主虚拟机上的 VIP 接口使用以下 IP 地址进行配置:

  • 用户集群的主 Seesaw 虚拟机的 VIP
  • 用户集群 Ingress VIP
  • 用户集群中运行的 LoadBalancer 服务的 VIP

创建 IP 地址块文件

对于要创建的每个集群,请在 IP 地址块文件中指定您为 Seesaw 虚拟机选择的地址。此 IP 地址块文件用于负载平衡器虚拟机,而非集群节点。如果您打算为集群节点使用静态 IP 地址,则必须为这些地址创建单独的 IP 地址块文件。以下是一个 IP 地址块文件示例,该文件为 Seesaw 虚拟机指定了两个 IP 地址:

blocks:
  - netmask: "255.255.255.0"
    gateway: "172.16.20.1"
    ips:
    - ip: "172.16.20.18"
      hostname: "seesaw-vm-1"
    - ip: "172.16.20.19"
      hostname: "seesaw-vm-2"

填写配置文件

为每个集群准备配置文件:一个管理员集群和一个或多个用户集群

在给定集群的配置文件中,将 loadBalancer.kind 设置为 "Seesaw"

loadBalancer 下,填写 seesaw 部分:

loadBalancer:
  kind: Seesaw
  seesaw:
    ipBlockFilePath::
    vrid:
    masterIP:
    cpus:
    memoryMB:
    vCenter:
      networkName:
    enableha:
    antiAffinityGroups:
      enabled:

seesaw.ipBlockFilePath

字符串。将此项设置为 Seesaw 虚拟机的 IP 地址块文件的路径。例如:

loadBalancer:
  seesaw:
    ipBlockFilePath: "admin-seesaw-ipblock.yaml"

seesaw.vrid

整数。您的 Seesaw 虚拟机的虚拟路由器标识符。此标识符在 VLAN 中必须具有唯一性。有效范围为 1-255。例如:

loadBalancer:
  seesaw:
    vrid: 125

seesaw.masterIP

字符串。Seesaw 负载平衡器的主 IP 地址。例如:

loadBalancer:
  seesaw:
    masterIP: 172.16.20.21

seesaw.cpus

整数。每个 Seesaw 虚拟机的 CPU 数量。例如:

loadBalancer:
  seesaw:
    cpus: 4

seesaw.memoryMB

整数。每个 Seesaw 虚拟机的内存大小(以 MB 为单位)。例如:

loadBalancer:
  seesaw:
    memoryMB: 3072

seesaw.vCenter.networkName

字符串。包含 Seesaw 虚拟机的网络的名称。如果未设置,则使用集群所在的网络。例如:

loadBalancer:
  seesaw:
    vCenter:
      networkName: "my-seesaw-network"

seesaw.enableHA

布尔值。如果要创建可用性高的 Seesaw 负载平衡器,请将此值设置为 true。否则,请将其设置为 false。例如:

loadBalancer:
  seesaw:
    enableHA: true

如果您将 enableha 设置为 true,则必须启用 MAC 学习

seesaw.antiAffinityGroups.enabled

如果您想将反亲和性规则应用于 Seesaw 虚拟机,请将 seesaw.antiAffinityGroups.enabled 的值设置为 true。否则,请将该值设置为 false。默认值为 true。推荐值为 true,以便将 Seesaw 虚拟机尽可能放置在不同的物理主机上。例如:

loadBalancer:
  seesaw
    antiAffinityGroups:
      enabled: true

启用 MAC 学习或混杂模式(仅限 HA)

如果您正在设置非 HA Seesaw 负载平衡器,则可以跳过此部分。

如果您已将 loadBalancer.seesaw.disableVRRPMAC 设置为 true,则无需设置 MAC 学习配置,但您的网络必须支持使用免费 ARP 进行 IP 故障切换。请参阅用户集群配置文件

如果您正在设置 HA Seesaw 负载平衡器,并且已将 loadBalancer.seesaw.disableVRRPMAC 设置为 false,则必须对负载平衡器端口组启用 MAC 学习、模拟传输和混杂模式的某种组合。

启用这些功能的方式取决于您使用的交换机类型:

交换机类型启用功能安全影响
vSphere 7.0 VDS 对于具有 HA 的 vSphere 7.0,您需要将 loadBalancer.seesaw.disableVRRPMAC 设置为 true。不支持 MAC 学习。
带有 VDS 6.6 的 vSphere 6.7

为负载平衡器启用 MAC 学习和模拟传输的方式是运行以下命令:gkectl prepare network --config [CONFIG_FILE],其中 [CONFIG_FILE] 是集群配置文件的路径。您需要 dvPort group.Modify 权限才能执行此操作。

轻微。如果您的负载平衡器端口组仅连接到 Seesaw 虚拟机,那么可以将 MAC 学习限定为可信的 Seesaw 虚拟机。

vSphere 6.5 或

vSphere 6.7,带有低于 6.6 的 VDS 版本

为您的负载平衡器端口组启用混杂模式和模拟传输。在网络标签页中的端口组页面上使用 vSphere 界面:修改设置 -> 安全 您的负载平衡器端口组上的所有虚拟机都处于混杂模式。因此,负载平衡器端口组上的任何虚拟机都可以看到所有流量。如果负载平衡器端口组仅连接到 Seesaw 虚拟机,那么只有这些虚拟机才能看到所有流量。
NSX-T 逻辑交换机 在逻辑交换机上启用 MAC 学习 vSphere 不支持在同一个第 2 层网域中创建两个逻辑交换机。因此,Seesaw 虚拟机和集群节点必须位于同一逻辑交换机上。这意味着对所有集群节点启用 MAC 学习。攻击者可能能够通过在集群中运行具有特权的 pod 来实现 MAC 仿冒。
vSphere 标准交换机 为您的负载平衡器端口组启用混杂模式和模拟传输。在每个 ESXI 主机上使用 vSphere 界面:配置 -> 虚拟交换机 -> 标准交换机 -> 在端口组上修改设置 -> 安全 您的负载平衡器端口组上的所有虚拟机都处于混杂模式。因此,负载平衡器端口组上的任何虚拟机都可以看到所有流量。如果负载平衡器端口组仅连接到 Seesaw 虚拟机,那么只有这些虚拟机才能看到所有流量。

对配置文件运行预检检查

创建 IP 地址块文件和管理员集群配置文件后,请对配置文件运行预检检查

gkectl check-config --config [ADMIN_CONFIG_FILE]

其中 [ADMIN_CONFIG_FILE] 是管理员集群配置文件的路径。

对于用户集群配置文件,您需要在命令中包含管理员集群的 kubeconfig 文件:

gkectl --kubeconfig [ADMIN_CLUSTER_KUBECONFIG] check-config --config [USER_CONFIG_FILE]

其中,[ADMIN_CLUSTER_KUBECONFIG] 是管理员集群的 kubeconfig 文件的路径。

如果预检检查失败,请根据需要对集群配置文件和 IP 地址块文件进行调整。然后再次运行预检检查。

上传操作系统映像

运行以下命令将操作系统映像上传到您的 vSphere 环境:

gkectl prepare --config [ADMIN_CONFIG_FILE]

其中 [ADMIN_CONFIG_FILE] 是管理员集群配置文件的路径。

创建使用捆绑式负载平衡模式的管理员集群

为管理员集群的负载平衡器创建和配置虚拟机:

gkectl create loadbalancer --config [CONFIG_FILE]

其中 [CONFIG_FILE] 是管理员集群配置文件的路径。

创建管理员集群:

gkectl create admin --config [CONFIG_FILE]

其中 [CONFIG_FILE] 是管理员集群配置文件的路径。

创建使用捆绑式负载平衡模式的用户集群

为用户集群的负载平衡器创建和配置虚拟机:

gkectl --kubeconfig [ADMIN_CLUSTER_KUBECONFIG] create loadbalancer --config [CONFIG_FILE]

创建用户集群:

gkectl --kubeconfig [ADMIN_CLUSTER_KUBECONFIG] create cluster --config [CONFIG_FILE]

其中,[ADMIN_CLUSTER_KUBECONFIG] 是管理员集群的 kubeconfig 文件的路径,[CONFIG_FILE] 是用户集群配置文件的路径

性能和负载测试

应用的下载吞吐量与后端数量呈线性比例关系。这是因为后端绕过负载平衡器,而使用直接服务器返回功能直接将响应发送给客户端。

相反,应用的上传吞吐量受限于执行负载平衡的 Seesaw 虚拟机的容量。

应用所需的 CPU 和内存量不尽相同,因此在开始为大量客户端提供服务之前,请务必进行负载测试。

测试表明,通过 10000 个并发 TCP 连接,一个配备有 6 个 CPU 和 3 GB 内存的 Seesaw 虚拟机可以处理 10 GB/秒(线路速率)的上传流量。但是,如果您计划支持大量的并发 TCP 连接,请务必运行您自己的负载测试。

扩缩限制

使用捆绑式负载平衡时,集群可以扩缩的程度存在限制。集群中的节点数量存在限制,并且负载平衡器上可配置的 Service 数量存在限制。健康检查也存在限制。健康检查的数量取决于节点数量和 Service 数量。

从 1.3.1 版开始,健康检查的数量取决于节点数量和本地流量 Service 的数量。本地流量 Service 是 externalTrafficPolicy 设置为 "Local" 的 Service。

1.3.0 版1.3.1 版和更高版本
最大 Service 数 (S)100500
最大节点数 (N)100100
最大健康检查数S * N <= 10000N + L * N <= 10000,其中 L 是本地流量 Service 的数量

示例:在 1.3.1 版中,假设您有 100 个节点和 99 个本地流量 Service。则健康检查数为 100 + 99 * 100 = 10000,不超过 10000 的限制。

为管理员集群升级负载平衡器

从 v1.4 开始,负载平衡器会随着集群升级而升级。您无需单独运行其他任何命令来升级负载平衡器。但您仍然可以使用下面的 gkectl upgrade loadbalancer 来更新某些参数。

您可以更新 Seesaw 虚拟机的 CPU 和内存。创建一个新的配置文件,如以下示例所示,为您的 Seesaw 虚拟机设置 CPU 和内存。如果留空,则它们将保持不变。如果设置了 bundlePath,则会将负载平衡器升级到捆绑包中指定的负载平衡器。

例如:

apiVersion: v1
kind: AdminCluster
bundlePath:
loadBalancer:
  kind: Seesaw
  seesaw:
    cpus: 3
    memoryMB: 3072

然后运行此命令以升级负载平衡器:

gkectl upgrade loadbalancer --kubeconfig [ADMIN_CLUSTER_KUBECONFIG] --config [ADMIN_CLUSTER_CONFIG] --admin-cluster

其中:

  • [ADMIN_CLUSTER_KUBECONFIG] 是管理员集群的 kubeconfig 文件。

  • [ADMIN_CLUSTER_CONFIG] 是您创建的管理员集群配置文件。

在负载均衡器升级期间,会有一些停机时间。如果为负载平衡器启用了 HA,则最长停机时间为两秒。

为用户集群升级负载平衡器

从 v1.4 开始,负载平衡器会随着集群升级而升级。您无需单独运行其他任何命令来升级负载平衡器。但您仍然可以使用下面的 gkectl upgrade loadbalancer 来更新某些参数。

您可以更新 Seesaw 虚拟机的 CPU 和内存。创建一个新的配置文件,如以下示例所示,为您的 Seesaw 虚拟机设置 CPU 和内存。如果留空,则它们将保持不变。如果设置了 gkeOnPremVersion,则会将负载平衡器升级到此版本指定的负载平衡器。

例如:

apiVersion: v1
kind: UserCluster
name: cluster-1
gkeOnPremVersion:
loadBalancer:
  kind: Seesaw
  seesaw:
    cpus: 4
    memoryMB: 3072

然后运行此命令以升级负载平衡器:

gkectl upgrade loadbalancer --kubeconfig [ADMIN_CLUSTER_KUBECONFIG] --config [USER_CLUSTER_CONFIG]

其中:

  • [ADMIN_CLUSTER_KUBECONFIG] 是管理员集群的 kubeconfig 文件。

  • [USER_CLUSTER_CONFIG] 是您创建的用户配置文件。

  • [CLUSTER_NAME] 是要升级的集群的名称。

查看 Seesaw 日志

Seesaw 捆绑式负载平衡器将日志文件存储在 /var/log/seesaw/ 中的 Seesaw 虚拟机上。最重要的日志文件是 seesaw_engine.INFO

从 v1.6 开始,如果启用了 Stackdriver,日志也会上传到 Cloud。您可以在资源“anthos_l4lb”下查看这些日志。如需停用日志上传功能,您可以通过 ssh 连接到虚拟机并运行以下命令:

sudo systemctl disable --now docker.fluent-bit.service

查看 Seesaw 虚拟机的相关信息

您可以从 SeesawGroup 自定义资源中获取集群的 Seesaw 虚拟机的相关信息。

查看集群的 SeesawGroup 自定义资源:

kubectl --kubeconfig [CLUSTER_KUBECONFIG] get seesawgroups -n kube-system -o yaml

其中,[CLUSTER_KUBECONFIG] 是集群的 kubeconfig 文件的路径。

输出具有 isReady 字段,该字段显示虚拟机是否已准备好处理流量。输出还会显示 Seesaw 虚拟机的名称和 IP 地址,以及哪个虚拟机是主虚拟机:

apiVersion: seesaw.gke.io/v1alpha1
kind: SeesawGroup
metadata:
  ...
  name: seesaw-for-cluster-1
  namespace: kube-system
  ...
spec: {}
status:
  machines:
  - hostname: cluster-1-seesaw-1
    ip: 172.16.20.18
    isReady: true
    lastCheckTime: "2020-02-25T00:47:37Z"
    role: Master
  - hostname: cluster-1-seesaw-2
    ip: 172.16.20.19
    isReady: true
    lastCheckTime: "2020-02-25T00:47:37Z"
    role: Backup

查看 Seesaw 指标

Seesaw 捆绑式负载平衡器提供以下指标:

  • 每个 Service 或节点的吞吐量
  • 每个 Service 或节点的数据包速率
  • 每个 Service 或节点的有效连接数
  • CPU 和内存用量
  • 每个 Service 的后端 pod(运行状况良好)数量
  • 哪个虚拟机是主虚拟机,以及哪个是备用虚拟机
  • 正常运行时间

从 v1.6 开始,这些指标通过 Stackdriver 上传到 Cloud。您可以在“anthos_l4lb”的监控资源下查看它们。

您还可以使用选择的任何监控和信息中心解决方案,只要这些解决方案支持 Prometheus 格式即可。

删除负载平衡器

如果您删除了使用捆绑式负载平衡的集群,则应删除该集群的 Seesaw 虚拟机。可以通过在 vSphere 界面中删除 Seesaw 虚拟机来执行此操作。

从 1.4.2 开始,您可以运行 gkectl 并传递配置文件以删除捆绑的负载平衡器及其群组文件。

对于管理员集群,请运行以下命令:

gkectl delete loadbalancer --config [ADMIN_CONFIG_FILE] --seesaw-group-file [GROUP_FILE]

对于用户集群,请运行以下命令:

gkectl delete loadbalancer --config [CLUSTER_CONFIG_FILE] --seesaw-group-file [GROUP_FILE] --kubeconfig [ADMIN_CLUSTER_KUBECONFIG]

其中

  • [ADMIN_CONFIG_FILE] 是管理员集群配置文件

  • [CLUSTER_CONFIG_FILE] 是用户集群配置文件

  • [ADMIN_CLUSTER_KUBECONFIG] 是管理员集群 kubeconfig 文件

  • [GROUP_FILE] 是 Seesaw 群组文件。群组文件的名称采用 seesaw-for-[CLUSTER_NAME]-[IDENTIFIER].yaml 形式。

1.4.2 之前的版本

在 1.4.2 之前的版本中,作为替代方案,您可以运行以下命令来删除 Seesaw 虚拟机和 Seesaw 群组文件:

gkectl delete loadbalancer --config vsphere.yaml --seesaw-group-file [GROUP_FILE]

其中

  • [GROUP_FILE] 是 Seesaw 群组文件。群组文件位于管理员工作站,config.yaml 的旁边。群组文件的名称采用 seesaw-for-[CLUSTER_NAME]-[IDENTIFIER].yaml 形式。

  • vsphere.yaml 是一个文件,其中包含您的 vCenter 服务器的以下信息:

vcenter:
  credentials:
    address:
    username:
    password:
  datacenter:
  cacertpath:

问题排查

与 Seesaw 虚拟机建立 SSH 连接

有时,您可能希望通过 SSH 连接到 Seesaw 虚拟机进行问题排查或调试。

获取 SSH 密钥

如果您已创建集群,请按照以下步骤获取 SSH 密钥:

  1. 从集群中获取 seesaw-ssh Secret。从 Secret 中获取 SSH 密钥并对它进行 base64 解码。将解码的密钥保存在临时文件中:

    kubectl --kubeconfig [CLUSTER_KUBECONFIG] get -n  kube-system secret seesaw-ssh -o \
    jsonpath='{@.data.seesaw_ssh}' | base64 -d | base64 -d > /tmp/seesaw-ssh-key

    其中,[CLUSTER_KUBECONFIG] 是集群的 kubeconfig 文件。

  2. 为密钥文件设置适当的权限:

    chmod 0600 /tmp/seesaw-ssh-key

如果您尚未创建集群,请按照以下步骤获取 SSH 密钥:

  1. 找到名为 seesaw-for-[CLUSTER_NAME]-[IDENTIFIER].yaml 的文件。

    该文件称为群组文件,位于 config.yaml 旁边。

    此外,gkectl create loadbalancer 还会输出群组文件的位置。

  2. 在该文件中,获取 credentials.ssh.privateKey 的值,并对其进行 base64 解码。将解码的密钥保存在临时文件中:

    cat seesaw-for-[CLUSTER_NAME]-[IDENTIFIER].yaml  | grep privatekey | sed 's/    privatekey: //g' \
    | base64 -d > /tmp/seesaw-ssh-key
    
  3. 为密钥文件设置适当的权限:

    chmod 0600 /tmp/seesaw-ssh-key

现在,您可以通过 SSH 连接到 Seesaw 虚拟机:

ssh -i /tmp/seesaw-ssh-key ubuntu@[SEESAW_IP]

其中,[SEESAW_IP] 是 Seesaw 虚拟机的 IP 地址。

获取快照

您可以使用 gkectl diagnose snapshot 命令和 --scenario 标志来截取 Seesaw 虚拟机的快照。

如果您将 --scenario 设置为 allall-with-logs,则输出将包含 Seesaw 快照以及其他快照。

如果您将 --scenario 设置为 seesaw,则输出将仅包含 Seesaw 快照。

示例:

gkectl diagnose snapshot --kubeconfig [ADMIN_CLUSTER_KUBECONFIG] --scenario seesaw

其中,[ADMIN_CLUSTER_KUBECONFIG] 是管理员集群的 kubeconfig 文件。

gkectl diagnose snapshot --kubeconfig [ADMIN_CLUSTER_KUBECONFIG] --cluster-name [CLUSTER_NAME] --scenario seesaw
gkectl diagnose snapshot --seesaw-group-file [GROUP_FILE] --scenario seesaw

其中,[GROUP_FILE] 是集群群组文件的路径,例如,seesaw-for-gke-admin-xxxxxx.yaml

已知问题

Cisco ACI 不适用于直接服务器返回 (DSR)

Seesaw 在 DSR 模式下运行,默认情况下,它在 Cisco ACI 中无法正常运行,这是由于数据层面 IP 学习导致的。您可以在此处找到使用应用端点组的可能解决方法。