检测已移除的 Kubernetes API

有多个 Kubernetes 版本已弃用和移除 API。如果您将 Google Distributed Cloud 集群升级到新的 Kubernetes 版本,并且您的工作负载使用任何已移除的 API,则工作负载可能会中断。在升级集群之前,请按照本文档中的步骤来确定您的工作负载是否针对给定 Kubernetes 版本使用了任何已移除的 API。

如需查看按 Kubernetes 版本移除的 API 的列表,请参阅 Kubernetes 文档中的已弃用的 API 迁移指南

确定 API 删除是否对您产生影响

以下步骤要求 Google Distributed Cloud 集群启用集群审核日志记录,并将审核日志流式传输到 Google Cloud Observability,这是默认行为。

如需确定您使用的 Kubernetes 服务账号是否对任何已删除的 API 进行调用,请在日志浏览器中运行提供的查询:

  1. 在 Google Cloud 控制台中,转到 Logging 菜单中的日志浏览器页面。

    转到日志浏览器

  2. 查询字段中,输入以下查询:

    resource.labels.cluster_name = "CLUSTER_NAME" AND
    logName = "projects/PROJECT_ID/logs/externalaudit.googleapis.com%2Factivity" AND
    protoPayload.authenticationInfo.principalEmail:("system:serviceaccount" OR "@") AND
    protoPayload.authenticationInfo.principalEmail!~("system:serviceaccount:kube-system:") AND
    protoPayload.authenticationInfo.principalEmail!~("system:serviceaccount:cert-manager:") AND
    protoPayload.authenticationInfo.principalEmail!~("system:serviceaccount:capi-kubeadm-bootstrap-system:") AND
    protoPayload.authenticationInfo.principalEmail!~("system:serviceaccount:capi-kubeadm-bootstrap-system-webhook:") AND
    protoPayload.authenticationInfo.principalEmail!~("system:serviceaccount:capi-system:") AND
    protoPayload.authenticationInfo.principalEmail!~("system:serviceaccount:capi-system-webhook:") AND
    labels."k8s.io/removed-release"="KUBERNETES_MINOR_VERSION"
    

    请替换以下内容:

    • CLUSTER_NAME:包含您要检查的工作负载的集群的名称。

    • PROJECT_ID:您的集群用于日志和指标的 Google Cloud 项目的 ID (clusterOperations.projectID)。

    • KUBERNETES_MINOR_VERSION:移除了 API 的次要 Kubernetes 版本,例如 1.25。

    此查询的输出会显示您的任何 Kubernetes 服务帐号是否调用了已为指定 Kubernetes 次要版本移除的 API。