Container Service for Kubernetes (ACK) クラスターのDNS解決の安定性を向上させるために、CoreDNSを最新バージョンに更新することを推奨します。 このトピックでは、CoreDNSを更新する方法について説明します。
背景情報
次の問題は1.7.0より前のCoreDNSバージョンに存在し、ACKクラスターのDNS解決の安定性に影響を与える可能性があります。
ネットワークのジッター、APIサーバーの再起動、APIサーバーの移行など、CoreDNSとAPIサーバーの間で接続の問題が発生した場合、エラーログを書き込むことができないため、CoreDNSポッドが再起動されることがあります。 詳細については、「klogのlogtostderrフラグの設定」をご参照ください。
CoreDNSは、初期化プロセス中に余分なメモリリソースを占有します。 このプロセスでは、デフォルトのメモリ制限により、大規模クラスタでメモリ不足 (OOM) エラーが発生する可能性があります。 この状況が激化すると、CoreDNSポッドは繰り返し再起動されますが、起動できません。 詳細については、「CoreDNSが初期化フェーズ中に大量のメモリを使用する」をご参照ください。
CoreDNSには、ヘッドレスサービスのドメイン名解決とクラスター外部からの要求に影響を与える可能性のある問題があります。 詳細については、「plugin/kubernetes: default processorでのトゥームストーンの処理」と「CoreDNSがkubernetes api serverに再接続してもデータは同期されません」をご参照ください。
以前のCoreDNSバージョンの一部は、ホストノードで例外が発生したときにCoreDNSポッドが自動的に追い出されない可能性があるデフォルトの許容ルールで構成されています。 これにより、クラスター内のドメイン名解決エラーが発生する可能性があります。
更新方法
CoreDNSを更新する前に、CoreDNSリリースノートとCoreDNSコミュニティ変更ログを読んで、更新の詳細とメモを確認することを推奨します。
CoreDNSは自動または手動で更新できます。
自動更新: ACKコンソールのアドオンページに移動します。 CoreDNSコンポーネントの横にアップグレードボタンが表示されている場合は、コンポーネントを自動的に更新できることを示します。 詳細については、「CoreDNSを自動的に更新するためのACKの設定」をご参照ください。
手動更新: ACKコンソールのアドオンページに移動します。 CoreDNSコンポーネントの横に [アップグレード] ボタンが表示されていない場合は、現在のコンポーネントバージョンが古いことを示します。 これは、クラスターのKubernetesバージョンが古くなっており、廃止されていることも示しています。 この場合、CoreDNSを最新バージョンに更新することはできません。 この問題を解決するには、CoreDNSを1.6.2に更新してから、クラスターのKubernetesバージョンを更新する必要があります。 その後、CoreDNSを自動的に最新バージョンに更新できます。 CoreDNSを手動で更新する方法の詳細については、「CoreDNSを手動で更新する」をご参照ください。