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

このページの改善にご協力ください

本ユーザーガイドの改善にご協力いただけませんか? このページの下部までスクロールし、[GitHub でこのページの編集] を選択します。皆さまにご協力いただくことで、あらゆる人々に使いやすいユーザーガイドになります。

CoreDNS Amazon EKS セルフマネージドアドオンの更新

重要

セルフマネージド型のアドオンを使用する代わりに、Amazon EKS タイプのアドオンをクラスターに追加することをお勧めします。タイプの違いがよくわからない場合は、「Amazon EKS アドオン」を参照してください。Amazon EKS アドオンをクラスターに追加する方法については、「Amazon EKS アドオンの作成」を参照してください。Amazon EKS アドオンを使用できない場合は、その理由に関する問題をコンテナロードマップ GitHub リポジトリに送信することをお勧めします

開始する前に、アップグレードに関する考慮事項を確認してください。詳細については、「CoreDNS アップグレードに関する重要な考慮事項」を参照してください。

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

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

    エラーメッセージが返された場合、クラスターにセルフマネージド型のアドオンがインストールされています。インストールするには、この手順の残りのステップを完了します。バージョン番号が返された場合、クラスターに Amazon EKS タイプのアドオンがインストールされています。Amazon EKS タイプのアドオンを更新するには、この手順を使用するのではなく、「CoreDNS 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. 602401143452 と region-code を前のステップで返された出力の値に置き換えて、CoreDNS アドオンを更新します。v1.11.3-eksbuild.1 を、ご利用の Kubernetes バージョンの最新バージョンの表に記載されている CoreDNS バージョンに置き換えます。

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

    出力例は次のとおりです。

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

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

    出力例は次のとおりです。

    v1.11.3-eksbuild.1