检测已移除的 Kubernetes API

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

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

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

以下步骤要求您的 GKE on Bare Metal 集群启用集群审核日志记录,并将审核日志流式传输到 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。