全部产品
Search
文档中心

Container Service for Kubernetes:Konfigurasikan model peningkatan DaemonSet untuk mengatasi blokir peningkatan dan menangani pembaruan over-the-air

更新时间:Nov 11, 2025

Model peningkatan DaemonSet native memiliki keterbatasan dalam skenario komputasi tepi. Misalnya, terputusnya jaringan antara cloud dan edge dapat menyebabkan node menjadi NotReady, yang menghambat peningkatan bergulir DaemonSet. Anda juga mungkin perlu memicu peningkatan aplikasi secara langsung pada node edge untuk pembaruan over-the-air (OTA). Model peningkatan DaemonSet yang diperluas, AdvancedRollingUpdate dan OTA, mengatasi masalah ini. Anda dapat mengonfigurasi model tersebut untuk mencegah blokir peningkatan dan melakukan pembaruan OTA.

Prasyarat

Sebuah kluster ACK Edge versi v1.26.3-aliyun.1 atau lebih baru.

Deskripsi model peningkatan

  • Model peningkatan AdvancedRollingUpdate

    Model ini mencegah peningkatan DaemonSet terblokir ketika sebuah node menjadi NotReady akibat terputusnya jaringan. Selama peningkatan, model ini mengabaikan node NotReady dan terlebih dahulu meningkatkan Pod pada node Ready. Ketika node tersebut kembali menjadi Ready, model ini secara otomatis meningkatkan Pod DaemonSet di node tersebut.

  • Model peningkatan OTA

    Model peningkatan ini memungkinkan Anda memeriksa apakah sebuah Pod dapat diperbarui dan memicu peningkatan Pod secara langsung pada node edge dengan memanggil REST API.

Deskripsi konfigurasi

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

Parameter

Deskripsi

apps.openyurt.io/update-strategy

Mengaktifkan model peningkatan yang diperluas. Nilai yang valid: AdvancedRollingUpdate atau OTA.

apps.openyurt.io/max-unavailable

Konfigurasi ini hanya berlaku dalam mode AdvancedRollingUpdate. Konfigurasi ini menentukan jumlah maksimum Pod yang tidak tersedia selama peningkatan bergulir lanjutan. Nilai anotasi ini sama dengan konfigurasi maxUnavailable pada DaemonSet native. Jika tidak ditentukan, nilai default-nya adalah 10%.

spec.updateStrategy.type

Harus diatur ke OnDelete. Hal ini mengharuskan Anda menghapus Pod lama secara manual untuk memicu pembuatan Pod versi baru.

Penggunaan

Model peningkatan AdvancedRollingUpdate

Kode berikut memberikan contoh konfigurasi AdvancedRollingUpdate. Dalam contoh ini, DaemonSet bernama nginx-daemonset dibuat dengan menggunakan model peningkatan AdvancedRollingUpdate dan mengizinkan maksimal 30% Pod tidak tersedia selama peningkatan bergulir.

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

Model peningkatan OTA

  • API pembaruan OTA

    Komponen edge-hub pada node edge menyediakan REST API untuk pembaruan OTA.

    • GET /pods

      Mengambil informasi Pod pada node tersebut. Anda dapat menentukan apakah sebuah Pod dapat diperbarui dengan memeriksa kondisi PodNeedUpgrade dalam Pod.status.conditions.

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

      API ini memungkinkan Anda memicu pengunduhan citra untuk Pod tertentu dalam DaemonSet. Parameter path {ns} dan {podname} menentukan namespace dan nama Pod tersebut. Untuk citra Pod berukuran besar yang memerlukan waktu lama untuk memulai, Anda dapat menggunakan API ini guna mengunduh citra terlebih dahulu dan mempercepat waktu startup.

      API pengunduhan citra hanya didukung pada kluster versi v1.32-aliyun.1 atau lebih baru.
    • POST /openyurt.io/v1/namespaces/{ns}/pods/{podname}/upgrade

      API ini memungkinkan Anda memicu pembaruan untuk Pod DaemonSet tertentu. Parameter path {ns} dan {podname} merepresentasikan namespace dan nama Pod tersebut.

  • Contoh pembaruan OTA

    Buat DaemonSet bernama nginx-daemonset yang menggunakan model peningkatan OTA. Setelah citra DaemonSet diperbarui, Pod pada node tersebut tidak diperbarui secara otomatis. Anda harus menggunakan REST API untuk memeriksa dan memicu pembaruan Pod pada node edge.

    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
  • Kasus penggunaan pembaruan OTA

    1. Login ke node edge dan periksa apakah ada Pod pada node tersebut yang memerlukan pembaruan.

      curl http://127.0.0.1:10267/pods

      Jika keluaran untuk `default/nginx-daemonset-bwzss` berisi PodNeedUpgrade=true dalam pod.Status.Conditions, maka Pod tersebut memerlukan pembaruan.

    2. (Opsional) Unduh citra terlebih dahulu.

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

      Keluaran yang diharapkan:

      Image pre-pull requested for pod default/nginx-daemonset-bwzss
    3. Tingkatkan Pod tersebut.

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

      Keluaran yang diharapkan:

      Start updating pod default/nginx-daemonset-bwzss

Referensi

Untuk informasi lebih lanjut, lihat Kelola Pod.