すべてのプロダクト
Search
ドキュメントセンター

Container Service for Kubernetes:アンマネージド CoreDNS の手動更新

最終更新日:Aug 27, 2026

ACK コンソールの [アドオン] ページで [アップグレード] オプションが利用できない場合は、CoreDNS を手動でアップデートします。

前提条件

作業を開始する前に、次のことを確認してください。

更新に関する注意事項

  • kube-proxy が IP Virtual Server (IPVS) モードを使用している場合、CoreDNS の更新後、すべての DNS クエリが最大 5 分間失敗またはタイムアウトする可能性があります。この問題を回避するには、次のいずれかの方法を使用してください。

  • 更新には、CoreDNS のレプリカ数に応じて約 2 分かかります。既存のレプリカは終了されないため、サービス解決に影響はありません。

CoreDNS バージョンの確認

コンソール

  1. ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。

  2. [クラスター] ページで、管理するクラスターの名前をクリックします。 左側のウィンドウで、[ワークロード] > [デプロイ] を選択します。

  3. [デプロイ] ページで、[名前空間][kube-system] に設定し、[イメージ] 列で CoreDNS のバージョンを確認します。dns

kubectl

CoreDNS のバージョンを確認します。

kubectl get deployment coredns -n kube-system -o jsonpath="{.spec.template.spec.containers[0].image}"

期待される出力:

registry-vpc.cn-hangzhou.aliyuncs.com/acs/coredns:1.6.2 # この例ではバージョン 1.6.2 が使用されています。

更新バージョンの確認

次の表は、各 Kubernetes バージョンと互換性のある CoreDNS バージョンを示しています。互換性のある最新バージョンを使用してください。

Kubernetes バージョン範囲

CoreDNS バージョン

1.11 ~ 1.16

1.6.2 (廃止)

1.14.8 ~ 1.22

1.6.7 (廃止) および 1.7.0

1.20.4 以降

1.8.4 および 1.9.3

重要

v1.8.4 と v1.9.3 には、v1.8.4.3-644f4735-aliyunv1.9.3.1-5e7ba42d-aliyun のような複数のマイナーバージョンがあります。詳細については、「CoreDNS」をご参照ください。

1.21 以降

1.11.3

手動更新

コンソール

  1. (オプション) proxy フィールドを forward フィールドに置き換えます。

    Proxy プラグインは CoreDNS v1.6.2 で非推奨になりました。それより前のバージョンからアップグレードする場合は、次のように CoreDNS 設定を変更してください。

    CoreDNS 設定の変更

    1. ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。

    2. [クラスター] ページで、管理するクラスターの名前をクリックします。 左側のナビゲーションウィンドウで、[設定] > [設定] を選択します。

    3. [ConfigMap] ページで、[名前空間][kube-system] に設定します。 coredns ConfigMap を見つけ、[操作] 列の [YAML の編集] をクリックします。

    4. [YAMLで表示]パネルで、[proxy][forward]に置き換え、[OK]をクリックします。forward

      coredns ConfigMap の YAML エディターで、forward プラグインの行を見つけて、必要に応じて変更します。完全な ConfigMap は以下の通りです。

      apiVersion: v1
      data:
        Corefile: |-
          .:53 {
            autopath @kubernetes
            cache 30
            errors
            forward . /etc/resolv.conf
            health
            kubernetes cluster.local in-addr.arpa ip6.arpa {
                pods verified
                fallthrough in-addr.arpa ip6.arpa
            }
            loadbalance
            loop
            prometheus :9153
            ready
            reload
          }
      kind: ConfigMap
  2. CoreDNS のイメージバージョンを変更します。

    1. ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。

    2. [クラスター] ページで、管理するクラスターの名前をクリックします。 左側のウィンドウで、[ワークロード] > [デプロイ] を選択します。

    3. [デプロイメント] ページで、[名前空間][kube-system] に設定します。[coredns] を探し、[操作] 列で image.png > [YAML の編集] を選択します。

    4. [YAML の編集] ダイアログボックスで、image フィールドのバージョン番号を変更し、[更新] をクリックします。image

      YAML 編集ダイアログで、CoreDNS Deployment 設定を探し、image フィールドのイメージバージョン (例: 1.6.2) を確認します。主要な YAML スニペット:

      labelSelector:
                matchExpressions:
                  - key: k8s-app
                    operator: In
                    values:
                      - kube-dns
              topologyKey: kubernetes.io/hostname
            weight: 100
        containers:
        - args:
          - '-conf'
          - /etc/coredns/Corefile
          image: 'registry-vpc.cn-hangzhou.aliyuncs.com/acs/coredns:1.6.2'
          imagePullPolicy: IfNotPresent
          livenessProbe:
            failureThreshold: 5
            httpGet:
              ...
  3. 更新を確認します。

    1. CoreDNS のバージョンを確認します。

      kubectl get deployment coredns -n kube-system -o jsonpath="{.spec.template.spec.containers[0].image}"

      期待される出力:

      registry-cn-shanghai-vpc.ack.aliyuncs.com/acs/coredns:v1.9.3.10-5e7ba42d-aliyun
    2. すべての CoreDNS Pod が実行中状態であることを確認します。

      kubectl get pods -n kube-system | grep coredns

      期待される出力:

      coredns-78d4b8****-6g62w                           1/1     Running   0          9d
      coredns-78d4b8****-n6wjm                           1/1     Running   0          9d

kubectl

  1. (オプション) proxy フィールドを forward フィールドに置き換えます。

    Proxy プラグインは CoreDNS v1.6.2 で非推奨になりました。それより前のバージョンからアップグレードする場合は、次のように CoreDNS 設定を変更してください。

    CoreDNS 設定の変更

    1. CoreDNS ConfigMap で [プロキシ][フォワード] に置き換え、保存して終了します:

      kubectl edit configmap/coredns -n kube-system
    2. CoreDNS Pod のログを確認して、新しい設定が読み込まれたことを確認します。

      kubectl logs coredns-************-***** -n kube-system

      出力にplugin/reload が含まれている場合、CoreDNS 設定が読み込まれます。期待される出力:

      .:53
      [INFO] plugin/reload: Running configuration MD5 = 71c5f1ff539d304c630521f315dc2ac2
      CoreDNS-1.6.7
      linux/amd64, go1.13.6, da7f65b
      [INFO] 127.0.0.1:48329 - 42313 "HINFO IN 1108347002237365533.4506541768939609094. udp 57 false 512" NXDOMAIN qr,rd,ra 132 0.008874794s
  2. CoreDNS デプロイメントの image フィールドのバージョン番号を変更し、保存して終了します:

    kubectl edit deployment/coredns -n kube-system
  3. 更新を確認します。

    1. CoreDNS のバージョンを確認します。

      kubectl get deployment coredns -n kube-system -o jsonpath="{.spec.template.spec.containers[0].image}"

      期待される出力:

      registry-cn-shanghai-vpc.ack.aliyuncs.com/acs/coredns:v1.9.3.10-5e7ba42d-aliyun
    2. すべての CoreDNS Pod が実行中状態であることを確認します。

      kubectl get pods -n kube-system | grep coredns

      期待される出力:

      coredns-78d4b8****-6g62w                           1/1     Running   0          9d
      coredns-78d4b8****-n6wjm                           1/1     Running   0          9d

IPVS クラスターの UDP タイムアウトの設定

ご利用のクラスターが IPVS モードで kube-proxy を使用している場合、IPVS UDP セッション維持タイムアウトを 10 秒に短縮して、アップグレード後の DNS 名前解決の失敗を抑制します。

ご利用のクラスターに UDP ベースのサービスがある場合は、続行する前に UDP タイムアウトを短縮することによる影響を評価してください。

Kubernetes 1.18 以降

コンソールでの操作

  1. ACK コンソールにログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。

  2. [クラスター] ページで、クラスター名をクリックします。左側のナビゲーションウィンドウで、[設定] > [ConfigMap] を選択します。

  3. ConfigMap」ページで、[kube-system] 名前空間を選択します。「kube-proxy-worker」を見つけ、[操作] 列の [YAML の編集] をクリックします。

  4. [YAMLの編集] パネルで、udpTimeout: 10sipvs フィールドの下に追加し、[OK] をクリックします。

    apiVersion: v1
    data:
      config.conf: |
        apiVersion: kubeproxy.config.k8s.io/v1alpha1
        kind: KubeProxyConfiguration
        # 他の無関係なフィールドは省略されています。
        mode: ipvs
        # ipvs キーが存在しない場合は追加します。
        ipvs:
          udpTimeout: 10s
  5. すべての kube-proxy-worker Pod を再作成します。

    1. クラスターの詳細ページで、左側のナビゲーションウィンドウから [ワークロード] > [DaemonSet] を選択します。

    2. DaemonSet リストで、[kube-proxy-worker] をクリックします。

    3. [kube-proxy-worker] ページで、[Pod] タブをクリックします。Pod の行で、[その他] > [削除] を選択し、[OK] をクリックします。この手順をすべての Pod で繰り返します。システムは自動的に Pod を再作成します。

  6. UDP タイムアウトが設定されていることを確認します。

    1. ipvsadm をインストールします:

      sudo yum install -y ipvsadm
    2. クラスター内の任意の ECS ノードで次のコマンドを実行します。

      sudo ipvsadm -L --timeout

      出力の 3 番目の数値が 10 の場合、UDP タイムアウトは正しく設定されています。

      重要:タイムアウトを設定した後、CoreDNS のアップグレードに進む前に少なくとも 5 分間待機してください。

コマンドラインでの操作

  1. kube-proxy-worker ConfigMap を編集します。

    kubectl -n kube-system edit configmap kube-proxy-worker
  2. udpTimeout: 10sipvs フィールドの下に追加します。保存して終了します。

    apiVersion: v1
    data:
      config.conf: |
        apiVersion: kubeproxy.config.k8s.io/v1alpha1
        kind: KubeProxyConfiguration
        # 他の無関係なフィールドは省略されています。
        mode: ipvs
        # ipvs キーが存在しない場合は追加します。
        ipvs:
          udpTimeout: 10s
  3. すべての kube-proxy-worker Pod を再作成します。

    1. 現在の Pod を一覧表示します。

      kubectl -n kube-system get pod -o wide | grep kube-proxy-worker
    2. 各 Pod を削除します。システムは自動的に Pod を再作成します。

      kubectl -n kube-system delete pod <kube-proxy-worker-****>

      <kube-proxy-worker-****> を前の手順で取得した実際の Pod 名に置き換えます。

  4. UDP タイムアウトが設定されていることを確認します。

    1. ipvsadm をインストールします:

      sudo yum install -y ipvsadm
    2. クラスター内の任意の ECS ノードで次のコマンドを実行します。

      sudo ipvsadm -L --timeout

      出力の3番目の数字が 10 の場合、UDP タイムアウトは正しく設定されています。

      重要:タイムアウトを設定した後、CoreDNS のアップグレードに進む前に少なくとも 5 分間待機してください。

Kubernetes 1.16 以前

Kubernetes 1.16 以前のバージョンで実行されているクラスター内の kube-proxy は、udpTimeout パラメーターをサポートしていません。Operation Orchestration Service (OOS) を使用して、以下の ipvsadm コマンドをすべてのクラスターノードでバッチ処理で実行します:

sudo yum install -y ipvsadm
sudo ipvsadm -L --timeout > /tmp/ipvsadm_timeout_old
sudo ipvsadm --set 900 120 10
sudo ipvsadm -L --timeout > /tmp/ipvsadm_timeout_new
diff /tmp/ipvsadm_timeout_old /tmp/ipvsadm_timeout_new

OOS でのバッチ操作の実行に関する詳細については、「インスタンスの一括操作」をご参照ください。

次のステップ

更新後、ワークロードに合わせて CoreDNS 設定を最適化してください。