削除された Kubernetes API を検出する

Kubernetes のリリースには、非推奨になった API と削除された 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 コンソールで、[ロギング] メニューの [ログ エクスプローラ] ページに移動します。

    [ログ エクスプローラ] に移動

  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 サービス アカウントにより、指定された Kubernetes マイナー リリースに対して削除された API 呼び出しが行われたかどうかを示します。