偵測已移除的 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」選單,然後點選「Logs Explorer」頁面。

    前往記錄檔探索工具

  2. 在「Query」(查詢) 欄位中,輸入下列查詢:

    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 服務帳戶呼叫 API,而這些 API 已在指定的 Kubernetes 次要版本中移除。