期限切れの証明書がある場合のノードの準備ができていないエラーのトラブルシューティング
この記事は、期限切れの証明書がある場合に、Microsoft Azure Kubernetes Service (AKS) クラスター内の Node Not Ready シナリオのトラブルシューティングに役立ちます。
前提条件
現象
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 については、必要に応じて次のリンクを参照してください。
- OutboundConnFailVMExtensionError エラー コード (50) のトラブルシューティング
- K8SAPIServerConnFailVMExtensionError エラー コード (51) のトラブルシューティング
- K8SAPIServerDNSLookupFailVMExtensionError エラー コード (52) のトラブルシューティング
エラー コード 99 を受け取った場合は、 apt-get update コマンドが次の 1 つ以上のドメインへのアクセスをブロックされていることを示します。
- security.ubuntu.com
- azure.archive.ubuntu.com
- nvidia.github.io
これらのドメインへのアクセスを許可するには、ブロックしているファイアウォール、ネットワーク セキュリティ グループ (NSG)、またはネットワーク仮想アプライアンス (NVA) の構成を更新します。
解決策: 証明書をローテーションする
証明書の自動ローテーションを適用して、有効期限が切れる前にノード内の証明書をローテーションできます。 このオプションでは、AKS クラスターのダウンタイムは必要ありません。
クラスターのダウンタイムに対応できる場合は、代わりに 証明書を手動でローテーション 。
Note
2021 年 7 月 15 日リリースの AKS 以降、AKS クラスターのアップグレードはクラスター証明書のローテーションに自動的に役立ちます。 ただし、この動作の変更は、期限切れのクラスター証明書には反映されません。 アップグレードで次のアクションのみが実行される場合、期限切れの証明書は更新されません。
- ノード イメージをアップグレードします。
- ノード プールを同じバージョンにアップグレードします。
- ノード プールをより新しいバージョンにアップグレードします。
完全アップグレード (つまり、コントロール プレーンとノード プールの両方のアップグレード) のみが、期限切れの証明書の更新に役立ちます。
詳細
- 一般的なトラブルシューティング手順については、「 ノード準備ができていないエラーの基本的なトラブルシューティングを参照してください。