CoreDNS のセルフマネージド型アドオンを更新する - Amazon EKS

CoreDNS のセルフマネージド型アドオンを更新する

重要

このトピックは、2023 年 7 月 1 日にこのガイドから削除されます。セルフマネージド型のアドオンを使用する代わりに、Amazon EKS タイプのアドオンをクラスターに追加することをお勧めします。タイプの違いがよくわからない場合は、「Amazon EKS アドオン」を参照してください。Amazon EKS アドオンをクラスターに追加する方法については、「アドオンの作成」を参照してください。

CoreDNS は、Kubernetes クラスター DNS として機能できる柔軟で拡張可能な DNS サーバーです。1 つ以上のノードで Amazon EKS クラスターを起動すると、クラスターにデプロイされたノード数に関係なく、デフォルトで CoreDNS イメージの 2 つのレプリカがデプロイされます。CoreDNS の pods は、クラスター内のすべての pods の名前解決を行います。クラスターに AWS Fargate プロファイル が含まれ、名前空間が CoreDNS deployment の名前空間と一致している場合、CoreDNS pods を Fargate ノードにデプロイできます。CoreDNS の詳細については、「Kubernetes ドキュメント」の「サービスディスカバリーに CoreDNS を使用する」を参照してください。

次の表では、各 Amazon EKS クラスターバージョンで利用可能な CoreDNS コンテナイメージのバージョンを一覧表示します。

Amazon EKS クラスターの各バージョンで使用可能な最新のセルフマネージド CoreDNS コンテナイメージバージョン
Kubernetes バージョン 1.25 1.24 1.23 1.22 1.21 1.20 1.19
v1.9.3-eksbuild.2 v1.8.7-eksbuild.3 v1.8.7-eksbuild.3 v1.8.7-eksbuild.3 v1.8.4-eksbuild.2 v1.8.3-eksbuild.1 1.8.0
重要

Amazon EKS アドオンタイプを更新するときは、有効な Amazon EKS アドオンバージョンを指定しますが、この表に記載されているバージョンではない可能性があります。これは、Amazon EKS アドオンのバージョンが、このアドオンのセルフマネージドタイプを更新するときに指定されるコンテナイメージのバージョンと常に一致するとは限らないためです。このアドオンのセルフマネージドタイプを更新するときは、この表に記載されている有効なコンテナイメージのバージョンを指定します。

前提条件
  • 既存の Amazon EKS クラスター。デプロイするには、「Amazon EKS の使用開始」を参照してください。

  • クラスターが 1.21 以降である場合、Amazon VPC CNI plugin for Kubernetes および CoreDNS アドオンが、クラスターアドオン に記載されている最小のバージョンであることを確認してください。

CoreDNS セルフマネージド型アドオンを更新するには
  1. クラスターにインストールされているアドオンがセルフマネージド型であることを確認します。my-cluster の部分は、自分のクラスター名に置き換えます。

    aws eks describe-addon --cluster-name my-cluster --addon-name coredns --query addon.addonVersion --output text

    エラーメッセージが返された場合、クラスターにセルフマネージド型のアドオンがインストールされています。このトピックの残りの手順は、セルフマネージド型のアドオンを更新することです。バージョン番号が返された場合、クラスターに Amazon EKS タイプのアドオンがインストールされています。更新するには、このトピックの手順ではなく「アドオンの更新」の手順を使用してください。アドオンタイプの違いがよくわからない場合は、「Amazon EKS アドオン」を参照してください。

  2. クラスターに現在インストールされているコンテナイメージのバージョンを確認します。

    kubectl describe deployment coredns -n kube-system | grep Image | cut -d ":" -f 3

    出力例を次に示します。

    v1.8.7-eksbuild.2
  3. 現在の CoreDNS のバージョンが v1.5.0 以降で、CoreDNS バージョン表に記載されるバージョンよりも前の場合、この手順はスキップしてください。現在のバージョンが 1.5.0 より前の場合、プロキシアドオンではなく進んだアドオンを使用するためには、CoreDNS の ConfigMap を修正する必要があります。

    1. 次のコマンドを使用して ConfigMap ファイルを開きます。

      kubectl edit configmap coredns -n kube-system
    2. 次の行の proxyforward に置き換えます。ファイルを保存し、エディタを終了します。

      proxy . /etc/resolv.conf
  4. Kubernetes 1.17 以前にクラスターを最初にデプロイした場合、CoreDNS マニフェストから廃止された行の削除が必要な場合がります。

    重要

    CoreDNS バージョン 1.7.0 に更新する前に、この手順を完了する必要があります。以前のバージョンに更新する場合でも、この手順を完了することをお勧めします。

    1. CoreDNS マニフェストにその行があるかどうかを確認します。

      kubectl get configmap coredns -n kube-system -o jsonpath='{$.data.Corefile}' | grep upstream

      出力が返されない場合、マニフェストにその行がないため、次の手順に進み、CoreDNS を更新できます。出力が返された場合は、その行を削除します。

    2. 以下のコマンドを使用して ConfigMapを編集し、ファイル内の upstream という単語がある行を削除します。このファイル内の他の部分は変更しないでください。行を削除したら、変更を保存します。

      kubectl edit configmap coredns -n kube-system -o yaml
  5. 現在の CoreDNS イメージバージョンを取得します。

    kubectl describe deployment coredns -n kube-system | grep Image

    出力例を次に示します。

    602401143452.dkr.ecr.region-code.amazonaws.com/eks/coredns:v1.8.7-eksbuild.2
  6. CoreDNS 1.8.3 以降に更新する場合は、endpointslices のアクセス許可を system:coredns Kubernetes clusterrole に追加する必要があります。

    kubectl edit clusterrole system:coredns -n kube-system

    ファイルの rules セクション内の既存の権限行の下に次の行を追加します。

    ... - apiGroups: - discovery.k8s.io resources: - endpointslices verbs: - list - watch ...
  7. 602401143452region-code を前のステップで返された出力の値に置き換えることで CoreDNS アドオンを更新します。1.9.3-eksbuild.2 を、「Amazon EKS クラスターの各バージョンで使用可能な最新のセルフマネージド CoreDNS コンテナイメージバージョン」の表に記載されている CoreDNS バージョンに置き換えます。

    kubectl set image deployment.apps/coredns -n kube-system coredns=602401143452.dkr.ecr.region-code.amazonaws.com/eks/coredns:v1.9.3-eksbuild.2

    出力例を次に示します。

    deployment.apps/coredns image updated
  8. コンテナイメージのバージョンをもう一度チェックして、前のステップで指定したバージョンに更新されたことを確認します。

    kubectl describe deployment coredns -n kube-system | grep Image | cut -d ":" -f 3

    出力例を次に示します。

    v1.8.7-eksbuild.3