All Products
Search
Document Center

Container Service for Kubernetes:Konfigurasikan model peningkatan DaemonSet untuk kluster tepi ACK

Last Updated:Aug 21, 2026

Dalam skenario komputasi tepi, peningkatan DaemonSet native dapat terblokir ketika koneksi cloud-tepi gagal dan node menjadi NotReady, atau ketika Anda memerlukan peningkatan sesuai permintaan pada node tepi tanpa penerapan yang dikendalikan cloud. Untuk mengatasi pemblokiran tersebut dan mendukung pembaruan over-the-air, konfigurasikan model AdvancedRollingUpdate atau OTA. Model AdvancedRollingUpdate melewati node NotReady selama pembaruan bergulir, sedangkan model OTA memungkinkan peningkatan per node sesuai permintaan.

Prasyarat

  • Kluster tepi ACK yang berjalan versi v1.26.3-aliyun.1 atau lebih baru

Pilih model peningkatan

Peningkatan model Gunakan saat
AdvancedRollingUpdate Putusnya koneksi cloud-tepi dapat menyebabkan node NotReady, sehingga memblokir pembaruan bergulir
OTA Anda ingin mengontrol waktu peningkatan per node tepi dan memicu peningkatan sesuai permintaan melalui REST API

Konfigurasikan model peningkatan

Kedua model memerlukan anotasi dan strategi pembaruan DaemonSet yang sama:

apiVersion: apps/v1
kind: DaemonSet
metadata:
  annotations:
    # Wajib: mengaktifkan model peningkatan yang diperluas.
    # Nilai yang valid: AdvancedRollingUpdate atau OTA.
    apps.openyurt.io/update-strategy: AdvancedRollingUpdate
    # Opsional: hanya berlaku untuk AdvancedRollingUpdate.
    # Menentukan jumlah maksimum Pod yang tidak tersedia selama pembaruan bergulir.
    # Menerima nilai yang sama seperti maxUnavailable native DaemonSet. Default: 10%.
    apps.openyurt.io/max-unavailable: 30%
spec:
  updateStrategy:
    # Wajib: harus diatur ke OnDelete agar model peningkatan berlaku.
    type: OnDelete

Tetapkan apps.openyurt.io/update-strategy ke AdvancedRollingUpdate atau OTA, dan tetapkan spec.updateStrategy.type ke OnDelete.

Parameter

Parameter Deskripsi
apps.openyurt.io/update-strategy Mengaktifkan model peningkatan yang diperluas. Nilai yang valid: AdvancedRollingUpdate atau OTA.
apps.openyurt.io/max-unavailable Hanya berlaku untuk AdvancedRollingUpdate. Jumlah maksimum Pod yang tidak tersedia selama pembaruan bergulir. Menggunakan nilai yang sama seperti maxUnavailable native DaemonSet. Default: 10%.
spec.updateStrategy.type Harus diatur ke OnDelete. Hapus Pod lama secara manual untuk memicu pembuatan Pod baru.

Gunakan AdvancedRollingUpdate

AdvancedRollingUpdate melewati node NotReady dan memperbarui Pod pada node Ready terlebih dahulu. Ketika sebuah node kembali menjadi Ready, Pod DaemonSet-nya akan ditingkatkan secara otomatis.

Contoh ini membuat DaemonSet nginx-daemonset dengan AdvancedRollingUpdate dan batas maksimum 30% Pod yang tidak tersedia.

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
Pod pada node NotReady dilewati. Ketika node menjadi Ready, Pod DaemonSet-nya ditingkatkan secara otomatis.

Gunakan OTA

OTA memungkinkan Anda mengontrol waktu peningkatan per node tepi. Setelah gambar DaemonSet diperbarui, Pod tidak ditingkatkan secara otomatis. Gunakan REST API edge-hub pada setiap node untuk memeriksa status dan memicu peningkatan.

REST API OTA

Semua panggilan API dilakukan secara lokal pada node tepi (URL dasar: http://127.0.0.1:10267).

Metode Endpoint Deskripsi
GET /pods Mengembalikan informasi Pod. Periksa PodNeedUpgrade dalam Pod.status.conditions untuk mengidentifikasi Pod yang perlu ditingkatkan.
POST /openyurt.io/v1/namespaces/{ns}/pods/{podname}/imagepull Melakukan pre-pull gambar untuk Pod DaemonSet guna mengurangi waktu startup peningkatan. Didukung pada versi v1.32-aliyun.1 atau lebih baru.
POST /openyurt.io/v1/namespaces/{ns}/pods/{podname}/upgrade Memicu peningkatan untuk Pod DaemonSet.

Contoh peningkatan OTA

Langkah 1: Buat DaemonSet yang diaktifkan OTA

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

Langkah 2: Perbarui gambar DaemonSet

Perbarui gambar DaemonSet. Pod pada node tepi tidak ditingkatkan secara otomatis.

kubectl set image daemonset/nginx-daemonset nginx=nginx:1.19.5

Langkah 3: Periksa apakah Pod perlu ditingkatkan

Pada node tepi, tampilkan status Pod:

curl http://127.0.0.1:10267/pods

Jika default/nginx-daemonset-bwzss menunjukkan PodNeedUpgrade=true dalam pod.Status.Conditions, maka Pod tersebut perlu ditingkatkan.

Langkah 4: (Opsional) Tarik citra terlebih dahulu

Untuk gambar berukuran besar, lakukan pre-pull gambar untuk mengurangi waktu startup:

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

Output yang diharapkan:

Image pre-pull requested for pod default/nginx-daemonset-bwzss
API pre-pull gambar memerlukan versi kluster v1.32-aliyun.1 atau lebih baru.

Langkah 5: Picu peningkatan

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

Output yang diharapkan:

Start updating pod default/nginx-daemonset-bwzss

Langkah selanjutnya