Share via


有効期限が切れた証明書がある場合の Node Not Ready エラーのトラブルシューティング

この記事は、有効期限が切れた証明書がある場合に、Microsoft Azure Kubernetes Service (AKS) クラスター内の Node Not Ready シナリオのトラブルシューティングに役立ちます。

前提条件

  • Azure CLI
  • 証明書の表示と署名のための OpenSSL コマンド ライン ツール

現象

AKS クラスター ノードがノードの準備ができていない状態になっていることが判明しました。

原因

有効期限が切れた証明書が 1 つ以上存在します。

防止: OpenSSL を実行して証明書に署名する

次のように openssl-x509 コマンドを呼び出して、証明書の有効期限を確認します。

  • 仮想マシン (VM) スケール セット ノードの場合は、 az vmss run-command invoke コマンドを使用します。

    az vmss run-command invoke \
        --resource-group <resource-group-name> \
        --name <vm-scale-set-name> \
        --command-id RunShellScript \
        --instance-id 0 \
        --output tsv \
        --query "value[0].message" \
        --scripts "openssl x509 -in /etc/kubernetes/certs/apiserver.crt -noout -enddate"
    
  • VM 可用性セット ノードの場合は、 az vm run-command invoke コマンドを使用します。

    az vm run-command invoke \
        --resource-group <resource-group-name> \
        --name <vm-availability-set-name> \
        --command-id RunShellScript \
        --output tsv \
        --query "value[0].message" \
        --scripts "openssl x509 -in /etc/kubernetes/certs/apiserver.crt -noout -enddate"
    

これらのコマンドを呼び出すと、特定のエラー コードが表示される場合があります。 エラー コード 50、51、52 については、必要に応じて次のリンクを参照してください。

エラー コード 99 を受け取った場合、 apt-get update コマンドが次のドメインの 1 つ以上へのアクセスをブロックされていることを示します。

  • security.ubuntu.com
  • azure.archive.ubuntu.com
  • nvidia.github.io

これらのドメインへのアクセスを許可するには、ブロックしているファイアウォール、ネットワーク セキュリティ グループ (NSG)、またはネットワーク仮想アプライアンス (NVA) の構成を更新します。

解決策: 証明書をローテーションする

証明書の自動ローテーションを適用して、有効期限が切れる前にノード内の証明書をローテーションできます。 このオプションでは、AKS クラスターのダウンタイムは必要ありません。

クラスターのダウンタイムに対応できる場合は、代わりに 証明書を手動でローテーション できます。

注:

2021 年 7 月 15 日以降、AKS クラスターのアップグレードは、クラスター証明書のローテーションに自動的に役立ちます。 ただし、この動作の変更は、期限切れのクラスター証明書には有効になりません。 アップグレードで次のアクションのみが実行される場合、期限切れの証明書は更新されません。

  • ノード イメージをアップグレードします。
  • ノード プールを同じバージョンにアップグレードします。
  • ノード プールをより新しいバージョンにアップグレードします。

完全アップグレード (つまり、コントロール プレーンとノード プールの両方のアップグレード) のみが、期限切れの証明書の更新に役立ちます。

詳細