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

Container Service for Kubernetes:DaemonSet のアップグレードモデルを構成して、アップグレードのブロックを解決し、OTA アップデートを処理する

最終更新日:Nov 09, 2025

ネイティブの DaemonSet アップグレードモデルには、エッジコンピューティングシナリオにおいて制限があります。たとえば、クラウドとエッジ間のネットワークが切断されると、ノードが NotReady になり、DaemonSet のローリングアップグレードがブロックされる可能性があります。また、OTA (over-the-air) アップデートのために、エッジノード上で直接アプリケーションのアップグレードをトリガーする必要がある場合もあります。拡張 DaemonSet アップグレードモデルである AdvancedRollingUpdateOTA は、これらの問題に対処します。これらのモデルを構成することで、アップグレードのブロックを防ぎ、OTA アップデートを実行できます。

前提条件

v1.26.3-aliyun.1 以降の ACK Edge クラスター

アップグレードモデルの説明

  • AdvancedRollingUpdate アップグレードモデル

    このモデルは、ネットワーク切断によりノードが NotReady になった場合に、DaemonSet のアップグレードがブロックされるのを防ぎます。アップグレード中、NotReady ノードは無視され、まず Ready ノード上の Pod がアップグレードされます。ノードが再び Ready になると、このモデルはそのノード上の DaemonSet Pod を自動的にアップグレードします。

  • OTA アップグレードモデル

    このアップグレードモデルでは、REST API を呼び出すことで、Pod が更新可能かどうかを確認し、エッジノード上で直接 Pod のアップグレードをトリガーできます。

構成の説明

apiVersion: apps/v1
kind: DaemonSet
metadata:
  annotations:
    apps.openyurt.io/update-strategy: AdvancedRollingUpdate
    apps.openyurt.io/max-unavailable: 30%
spec:
  updateStrategy:
    type: OnDelete

パラメーター

説明

apps.openyurt.io/update-strategy

拡張アップグレードモデルを有効にします。有効な値: AdvancedRollingUpdate または OTA。

apps.openyurt.io/max-unavailable

この構成は AdvancedRollingUpdate モードでのみ有効です。高度なローリングアップグレード中に利用できなくなる Pod の最大数を定義します。このアノテーションの値は、ネイティブの DaemonSet の maxUnavailable 構成と同じです。指定しない場合、デフォルト値は 10% です。

spec.updateStrategy.type

OnDelete に設定する必要があります。これにより、古い Pod を手動で削除して、新しいバージョンの Pod の作成をトリガーする必要があります。

使用方法

AdvancedRollingUpdate アップグレードモデル

次のコードは、AdvancedRollingUpdate アップグレードの例を示しています。この例では、nginx-daemonset という名前の DaemonSet が作成されます。これは AdvancedRollingUpdate アップグレードモデルを使用し、ローリングアップグレード中に最大 30% の Pod が利用不可能になることを許可します。

cat <<EOF | kubectl apply -f -
apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: nginx-daemonset
  annotations:
    apps.openyurt.io/update-strategy: AdvancedRollingUpdate
    apps.openyurt.io/max-unavailable: 30%
spec:
  selector:
    matchLabels:
      app: nginx
  updateStrategy:
    type: OnDelete
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.19.4
EOF

OTA アップグレードモデル

  • OTA アップグレード API

    エッジノード上の edge-hub コンポーネントは、OTA アップグレード用の REST API を提供します。

    • GET /pods

      ノード上の Pod 情報を取得します。Pod.status.conditions 内の PodNeedUpgrade 条件を確認することで、Pod が更新可能かどうかを判断できます。

    • POST /openyurt.io/v1/namespaces/{ns}/pods/{podname}/imagepull

      この API を使用すると、特定の DaemonSet Pod のイメージプルをトリガーできます。パスパラメーター {ns}{podname} は、Pod の名前空間と名前を指定します。起動に時間がかかる大きな Pod イメージの場合、この API を使用してイメージを事前にプルし、起動時間を短縮できます。

      イメージプル API は、v1.32-aliyun.1 以降のクラスターでのみサポートされています。
    • POST /openyurt.io/v1/namespaces/{ns}/pods/{podname}/upgrade

      この API を使用すると、特定の DaemonSet Pod の更新をトリガーできます。パスパラメーター {ns}{podname} は、Pod の名前空間と名前を表します。

  • OTA アップグレードの例

    OTA アップグレードモデルを使用する nginx-daemonset という名前の DaemonSet を作成します。DaemonSet のイメージが更新された後、ノード上の Pod は自動的に更新されません。REST API を使用して、エッジノード上で Pod のアップグレードを確認し、トリガーする必要があります。

    cat <<EOF | kubectl apply -f -
    apiVersion: apps/v1
    kind: DaemonSet
    metadata:
      name: nginx-daemonset
      annotations:
        apps.openyurt.io/update-strategy: OTA
    spec:
      selector:
        matchLabels:
          app: nginx
      updateStrategy:
        type: OnDelete
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: nginx:1.19.4
    
    EOF
  • OTA アップグレードのユースケース

    1. エッジノードにログオンし、ノード上のいずれかの Pod がアップグレードを必要とするかどうかを確認します。

      curl http://127.0.0.1:10267/pods

      `default/nginx-daemonset-bwzss` の出力に pod.Status.Conditions 内に PodNeedUpgrade=true が含まれている場合、対応する Pod はアップグレードが必要です。

    2. (オプション) イメージを事前にプルします。

      curl -X POST http://127.0.0.1:10267/openyurt.io/v1/namespaces/default/pods/nginx-daemonset-bwzss/imagepull
      

      期待される出力:

      Image pre-pull requested for pod default/nginx-daemonset-bwzss
    3. Pod をアップグレードします。

      curl -X POST http://127.0.0.1:10267/openyurt.io/v1/namespaces/default/pods/nginx-daemonset-bwzss/upgrade

      期待される出力:

      Start updating pod default/nginx-daemonset-bwzss

関連ドキュメント

詳細については、「Pod の管理」をご参照ください。