为预演配置集群和工作负载

虽然 Autopilot 模式下的 GKE 集群为大多数设置提供合理的默认值,但在开发、预演和生产环境中可能需要不同的设置。

目标

了解用于配置预演和测试集群的一些基本任务:

  1. 限制对集群管理服务(称为控制平面)的访问权限。这样可以防止未经授权的用户查看或更改集群和工作负载设置。

  2. 指定您的应用需要能够高效扩容和缩容的计算资源,以满足需求。

  3. 测试自动扩缩功能,该功能可在需求超出您指定的阈值时自动复制 Pod。

  4. 调整日志保留政策,以便仅保留所需的日志。

  5. 启用 GKE Security Posture 信息中心。

这些只是将集群从开发提升到预演阶段的一些任务。如需查看完整的任务列表,请参阅 GKE 文档。

费用

在本文档中,您将使用的以下收费组件: Google Cloud

您可使用 价格计算器 根据您的预计使用情况来估算费用。

新 Google Cloud 用户可能有资格申请免费试用。

完成本文档中描述的任务后,您可以通过删除所创建的资源来避免继续计费。如需了解详情,请参阅清理。

准备工作

创建 Kubernetes 集群并部署工作负载创建集群并部署工作负载介绍了如何执行此操作。

限制对控制平面的访问

为了改善安全状况,请仅允许已获授权的网络以及Google Cloud 控制台和 Cloud Shell 访问集群的控制平面。

配置授权网络

  1. 在 Google Cloud 控制台中,前往 GKE 集群页面。

    转到“集群”

  2. 在名称列中,点击集群的名称 hello-world-cluster。

  3. 在网络表的控制平面授权网络行中,点击 修改。

  4. 在“修改控制平面授权的网络”对话框中,选择启用控制平面授权的网络。

  5. 选择允许通过 Google Cloud 公共 IP 地址访问。

    这样,您就可以通过 Google Cloud 控制台和 Cloud Shell 管理集群

  6. 点击添加授权网络。

  7. 输入名称,例如我的示例本地网络。

  8. 在网络中,输入要授予集群控制平面访问权限的 IP 地址范围。使用 CIDR 表示法。

    例如,输入以下范围:

    198.51.100.0/24
    
  9. 点击完成。

  10. 点击保存更改。

    此操作需要几分钟时间才能完成。

  11. 点击通知按钮,并等待直至看到更新 Kubernetes Engine 集群“hello-world-cluster”中的控制平面授权网络设置旁边显示绿色对勾标记。

您已配置集群控制平面,仅可通过授权网络和 Google Cloud 公共 IP 地址访问(从而可通过Google Cloud 控制台和 Cloud Shell 管理集群)。

如需查看集群控制平面的 IP 地址并确认授权网络的地址,请点击下一步。

查看 IP 地址

  1. 进入 GKE 集群页面。

    转到“集群”

  2. 在名称列中,点击集群的名称 hello-world-cluster。

  3. 在集群基本信息表中,外部端点行显示集群控制平面的 IP 地址。

  4. 在网络表中,控制平面授权的网络行显示授权网络的 IP 地址。

当前,集群的控制平面仅可通过已获授权的网络、Google Cloud 控制台和 Cloud Shell 访问。

指定计算类

默认情况下,GKE Autopilot Pod 使用针对通用工作负载进行了优化的计算资源。对于需要以最佳方式扩缩的工作负载或有其他独特要求的工作负载,您可以指定其他计算类。

更新 Deployment 规范

  1. 在 Google Cloud 控制台中,前往 GKE 的工作负载页面。

    进入“工作负载”

  2. 在名称列中,点击已部署应用的名称 hello-world-app。

  3. 点击修改以修改部署规范。

  4. 在 YAML 标签页中,找到以 containers: 开头的行

  5. 在该行上方,添加以下几行代码:

    nodeSelector:
      cloud.google.com/compute-class: "Scale-Out"
    

    请确保您的文件与以下示例中的缩进匹配:

    apiVersion: apps/v1
     kind: Deployment
     ...
     spec:
     ...
       template:
       ...
         spec:
           nodeSelector:
             cloud.google.com/compute-class: "Scale-Out"
           containers:
           - name: hello-app
             image: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
    
  6. 如需下载此文件并将其用作其他工作负载配置的基础,请点击下载。

  7. 点击保存。

为运行工作负载而创建的任何 Pod 副本都将使用您指定的计算类。

测试自动扩缩

现在您已经有了可以高效扩缩的工作负载,接下来可以更新自动扩缩设置,以便更轻松地引发工作负载纵向扩容。然后生成负载以触发自动扩缩。

更新 Pod 自动扩缩设置

  1. 进入 GKE 工作负载页面。

    进入“工作负载”

  2. 在名称列中,点击部署的名称 hello-world-app。

  3. 点击操作。

  4. 选择自动扩缩,然后点击 Pod 横向自动扩缩。

  5. 在配置 Pod 横向自动扩缩器对话框中的自动扩缩指标下,点击 CPU。

  6. 将目标的值更改为 2,这会在 Pod 使用至少 2% 的已配置 CPU 资源时自动扩容 Pod。此目标值较低,可确保您在下一步中轻松触发自动扩缩。

  7. 点击保存。

如需触发自动扩缩,请点击下一步。

生成负载以触发自动扩缩

  1. 点击 Cloud Shell 以打开 Cloud Shell。

  2. 将以下命令粘贴到 Cloud Shell 中:

      for i in $(seq -s' ' 1 10000); do wget -q -O- <var>external-IP-address</var>; done
    

    将 external-IP-address 替换为端点列中显示的 IP 地址。

  3. 按 Enter 键运行该命令并向 hello-world-app 发送 10000 个请求。

  4. 等待 wget 命令运行完毕,并等待命令行提示符再次显示。

  5. 当 wget 命令运行完毕后,您可以关闭 Cloud Shell。

如需监控工作负载规模以满足流量增加的需求,请点击下一步。

观察工作负载的规模

  1. 在工作负载的部署详情页面上,查看 CPU 图表以了解 CPU 使用量峰值。

    您最多可能需要等待 5 分钟才能看到峰值。

  2. 点击 刷新以确保部署详情页面显示最新数据。

  3. 查看代管式 Pod 表,了解工作负载的三个副本现在是否正在运行。

    您最初可能会看到有关无法调度的 Pod 的错误,但当副本启动时,这些消息是暂时的。

  4. 您可以等待大约 10 分钟,点击 刷新,了解 CPU 使用量已下降,并且代管式 Pod 中的 Pod 数量恢复到 1。

您已测试自动扩缩功能并监控工作负载规模。

调整日志保留政策

默认情况下,Cloud Logging 会注入 GKE 集群的所有日志。注入大量日志数据可能会产生费用。为确保您只提取预演环境所需的日志数据,请调整日志保留。

创建日志过滤条件

  1. 在 Google Cloud 控制台中,前往 Logs Explorer 页面:

    前往 Logs Explorer

    如果您使用搜索栏查找此页面,请选择子标题为 Logging 的结果。

    请注意,查询结果窗格会显示项目中所有资源的日志。

  2. 在查询结果上方:

    1. 点击资源。

    2. 搜索 Kubernetes 集群,然后点击它。

    3. 点击 us-central-1。

    4. 点击 hello-world-cluster。

    5. 点击应用。

  3. 点击严重级别,然后选择 信息。当鼠标指针悬停在此信息上时,它会更改为信息及更高级别。

  4. 点击运行查询。

  5. 请注意,查询结果现在仅包含暂存集群的信息消息。

  6. 从查询编辑器复制查询。当您为日志接收器创建过滤条件时,将需要粘贴此查询。

如需创建日志接收器和存储桶,请点击下一步。

创建日志接收器和存储桶

  1. 进入 Logging 日志路由器页面。

    进入“日志路由器”

  2. 点击创建接收器。

  3. 在名称中,输入以下名称:

    hello-world-cluster-sink
    
  4. 点击下一步。

  5. 在选择接收器服务中,选择 Logging 存储桶。

  6. 在选择日志存储桶中,选择创建新的日志存储桶。

  7. 在存储桶详情中,输入一个唯一名称,例如:

    hello-world-bucket-<var>user-id</var>
    
  8. 点击创建存储桶。

  9. 在接收器目标位置下,点击下一步。

  10. 在构建包含项过滤条件中,粘贴您在 Logs Explorer 中创建的查询。

  11. 点击创建接收器。

如需查看集群的日志(存储在您创建的日志存储桶中),请点击下一步。

查看集群的日志

  1. 在 Google Cloud 控制台中,前往 Logs Explorer 页面:

    前往 Logs Explorer

    如果您使用搜索栏查找此页面,请选择子标题为 Logging 的结果。

  2. 点击优化范围。

  3. 选择日志视图。

  4. 选择您的日志存储桶的 _AllLogs 视图。

  5. 点击应用。

    查询结果仅显示存储在日志存储桶中的日志。

您已调整日志保留政策,因此预演集群不会存储调试消息。您可以设置权限,以便只有特定用户可以查看集群存储桶中的日志。

启用安全状况信息中心

安全状况信息中心会扫描您的 GKE 集群和工作负载,以便为您提供切实可行的针对性建议来提高您的安全状况。

探索任何问题

  1. 进入 GKE 安全状况页面。

    进入安全状况

  2. 如果系统要求您启用 Container Security API,请点击启用。

  3. 信息中心标签页汇总了项目的集群和工作负载问题。

  4. 点击问题标签页。

  5. 如果此标签页上显示任何问题,请点击相应问题以了解详情。

您已完成用于配置集群以预演和测试应用的一些基本任务。

后续步骤