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

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

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

GKE On-Prem 提供的捆绑式负载平衡器为 Seesaw 负载平衡器

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

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

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

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

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

我们强烈建议您针对捆绑式负载平衡模式使用 vSphere 6.7 和 Virtual Distributed Switch (VDS) 6.6。

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

规划您的 VLAN

一个 GKE On-Prem 安装具有一个管理员集群和一个或多个用户集群。使用捆绑式负载平衡模式时,我们强烈建议您将集群置于不同的 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 地址

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

如果您希望集群节点具有静态 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 虚拟机。此外,对于您的管理员集群,请预留一个主 IP 地址用于 Seesaw 负载平衡器。这两个地址都必须与管理员集群节点位于同一 VLAN。

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

规划您的端口组

您的每个 Seesaw 虚拟机都有两个网络接口。其中一个网络接口配置了服务 VIP 地址。另一个网络接口配置了虚拟机本身的 IP 地址。

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

本主题涉及两个端口组:

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

  • 集群节点端口组:对于 Seesaw 虚拟机,配置了虚拟机本身的 IP 地址的网络接口会连接到此端口组。您的 GKE On-Prem 集群节点也会连接到此端口组。

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

创建 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"

填写配置文件

为以下每个集群准备一个配置文件:管理员集群用户集群

在每个集群的配置文件中,将 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 负载平衡器,则可以跳过此部分。

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

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

交换机类型启用功能安全影响
带有 VDS 6.6 的 vSphere 6.7

为负载平衡器启用 MAC 学习和模拟传输的方式是运行以下命令:gkectl prepare network --config [CONFIG_FILE],其中 [CONFIG_FILE] 是 GKE On-Prem 配置文件的路径。您需要 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] 是 GKE On-Prem 管理员集群配置文件的路径。

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

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

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

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

上传操作系统映像

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

gkectl prepare --config [ADMIN_CONFIG_FILE]

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

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

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

gkectl create loadbalancer --config [CONFIG_FILE]

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

创建管理员集群:

gkectl create admin --config [CONFIG_FILE]

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

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

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

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] 是 GKE On-Prem 用户集群配置文件的路径

性能和负载测试

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

相反,应用的上传吞吐量受限于执行负载平衡的 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 [CLUSTER_CONFIG] --admin-cluster

其中:

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

  • [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 [CLUSTER_CONFIG] --name=[CLUSTER_NAME]

其中:

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

  • [CLUSTER_CONFIG] 是您创建的配置文件。

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

查看 Seesaw 日志

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

查看 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(运行状况良好)数量
  • 哪个虚拟机是主虚拟机,以及哪个是备用虚拟机
  • 正常运行时间

您可以选择使用任何支持 Prometheus 格式的监控和信息中心解决方案。一种可能的方案是使用与 GKE On-Prem 集成的 Prometheus 和 Grafana 插件。

使用集成的 Prometheus 和 Grafana 插件

为集群启用 Prometheus 和 Grafana

下一步是创建一个 Service 对象和一个 Endpoints 对象,以便 Prometheus 插件了解您的 Seesaw 虚拟机。

将以下配置保存为 seesaw-metrics.yaml。配置包括一个 Service 清单和一个 Endpoints 清单:

apiVersion: v1
kind: Service
metadata:
   name: seesaw-metrics
    annotations:
      monitoring.gke.io/scrape: 'true'
      monitoring.gke.io/scheme: 'https'
      monitoring.gke.io/tls_config: 'seesaw-ca'
spec:
    type: ClusterIP
    clusterIP: "None"
    ports:
    - name: metrics
      port: 20257
      protocol: TCP
      targetPort: 20257
---
kind: Endpoints
apiVersion: v1
metadata:
  name: seesaw-metrics
subsets:
 - addresses:
     - ip: [SEESAW_VM1_IP]
     - ip: [SEESAW_VM2_IP]
   ports:
     - name: metrics
       port: 20257

其中:

  • [SEESAW_VM1_IP] 是其中一个 Seesaw 虚拟机的 IP 地址。
  • [SEESAW_VM2_IP] 是另一个 Seesaw 虚拟机的 IP 地址。

创建 Service 和 Endpoints 对象:

kubectl --kubeconfig [CLUSTER_KUBECONFIG] apply seesaw-metrics.yaml

现在,您可以创建 Grafana 信息中心和图表来查看指标。

删除负载平衡器

如果您删除了使用捆绑式负载平衡的集群,则应删除该集群的 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

已知问题

无法升级 v1.3.x 的负载平衡器

已知的情形是,如果对 Seesaw 负载平衡器停用了 antiaffinitygroups,则将负载平衡器从 v1.3.x 升级到 v1.3.x+ 会失败,并显示以下错误:

updated SeesawGroup is not valid: SeesawConfig is invalid: AntiAffinityGroups must be set to default value if user doesn't provide it.(更新后的 SeesawGroup 无效:SeesawConfig 无效:如果用户未提供 AntiAffinityGroups 的值,则必须将它设置为默认值。)

此问题已在 v1.4 中修复,因此您可以选择跳过 v1.3.x+,而直接升级到 v1.4。