有効期限が切れた証明書がある場合の Node Not Ready エラーのトラブルシューティング
この記事は、有効期限が切れた証明書がある場合に、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 クラスターのダウンタイムは必要ありません。
クラスターのダウンタイムに対応できる場合は、代わりに 証明書を手動でローテーション できます。
注:
2021 年 7 月 15 日以降、AKS クラスターのアップグレードは、クラスター証明書のローテーションに自動的に役立ちます。 ただし、この動作の変更は、期限切れのクラスター証明書には有効になりません。 アップグレードで次のアクションのみが実行される場合、期限切れの証明書は更新されません。
- ノード イメージをアップグレードします。
- ノード プールを同じバージョンにアップグレードします。
- ノード プールをより新しいバージョンにアップグレードします。
完全アップグレード (つまり、コントロール プレーンとノード プールの両方のアップグレード) のみが、期限切れの証明書の更新に役立ちます。
詳細
- 一般的なトラブルシューティング手順については、「 Node Not Ready エラーの基本的なトラブルシューティング」を参照してください。