Todos os produtos
Search
Central de documentação

Container Service for Kubernetes:Configure DaemonSet upgrade models for ACK edge clusters

Última atualização: Sep 21, 2026

Em cenários de edge computing, as atualizações nativas do DaemonSet podem sofrer bloqueios quando os links cloud-edge falham e os nós se tornam NotReady, ou quando você precisa de atualizações sob demanda em nós de edge sem implantação guiada pela cloud. Configure os modelos estendidos AdvancedRollingUpdate ou OTA para resolver o bloqueio de atualização e suportar atualizações over-the-air. AdvancedRollingUpdate para ignorar nós NotReady durante atualizações contínuas, ou OTA para acionar atualizações por nó sob demanda.

Pré-requisitos

  • Um cluster de edge ACK executando a versão v1.26.3-aliyun.1 ou posterior

Escolha um modelo de atualização

Modelo de atualização

Quando usar

AdvancedRollingUpdate

Desconexões entre a cloud e a edge podem deixar os nós NotReady, bloqueando a atualização contínua

OTA

Você deseja controlar o momento da atualização de cada nó de edge e acionar as atualizações sob demanda via API REST

Configure o modelo de atualização

Ambos os modelos exigem as mesmas anotações e a mesma estratégia de atualização do DaemonSet:

apiVersion: apps/v1
kind: DaemonSet
metadata:
  annotations:
    # Required: enables the extended upgrade model.
    # Valid values: AdvancedRollingUpdate or OTA.
    apps.openyurt.io/update-strategy: AdvancedRollingUpdate
    # Optional: applies to AdvancedRollingUpdate only.
    # Defines the maximum number of unavailable pods during the rolling update.
    # Accepts the same values as the native DaemonSet maxUnavailable. Default: 10%.
    apps.openyurt.io/max-unavailable: 30%
spec:
  updateStrategy:
    # Required: must be set to OnDelete for either upgrade model to take effect.
    type: OnDelete

defina apps.openyurt.io/update-strategy como AdvancedRollingUpdate ou OTA e spec.updateStrategy.type como OnDelete.

Parâmetros

Parâmetro

Descrição

apps.openyurt.io/update-strategy

Habilita o modelo de atualização estendido. Valores válidos: AdvancedRollingUpdate ou OTA.

apps.openyurt.io/max-unavailable

Aplica-se apenas ao AdvancedRollingUpdate. Número máximo de pods indisponíveis durante a atualização contínua. Aceita os mesmos valores do maxUnavailable nativo do DaemonSet. Padrão: 10%.

spec.updateStrategy.type

Defina como OnDelete. Exclua manualmente os pods antigos para acionar a criação de novos pods.

Use o AdvancedRollingUpdate

O AdvancedRollingUpdate ignora nós NotReady e atualiza primeiro os pods em nós Ready. Quando um nó fica Ready novamente, o pod do DaemonSet é atualizado automaticamente.

Este exemplo cria um DaemonSet nginx-daemonset com AdvancedRollingUpdate e um máximo de 30% de pods indisponíveis.

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
Os pods em nós NotReady são ignorados. Quando um nó fica Ready , seu pod do DaemonSet é atualizado automaticamente.

Use o OTA

O OTA permite controlar o momento da atualização de cada nó de edge. Após a atualização da imagem do DaemonSet, os pods não são atualizados automaticamente. Use as APIs REST do edge-hub em cada nó para verificar o status e acionar as atualizações.

APIs REST do OTA

Faça todas as chamadas de API localmente no nó de edge (URL base: http://127.0.0.1:10267).

Método

Endpoint

Descrição

GET

/pods

Retorna informações dos pods. Verifique PodNeedUpgrade em Pod.status.conditions para identificar os pods que precisam de atualização.

POST

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

Faz o pre-pull da imagem para um pod do DaemonSet, reduzindo o tempo de inicialização da atualização. Suportado na versão v1.32-aliyun.1 ou posterior.

POST

/openyurt.io/v1/namespaces/{ns}/pods/{podname}/upgrade

Aciona a atualização para um pod do DaemonSet.

Exemplo de atualização OTA

Passo 1: Crie um DaemonSet com OTA habilitado

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

Passo 2: atualize a imagem do DaemonSet

atualize a imagem do DaemonSet. Os pods nos nós de edge não são atualizados automaticamente.

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

Passo 3: Verifique se um pod precisa de atualização

Em um nó de edge, liste o status dos pods:

curl http://127.0.0.1:10267/pods

Se default/nginx-daemonset-bwzss exibir PodNeedUpgrade=true em pod.Status.Conditions, o pod precisa de atualização.

Passo 4: (Opcional) Faça o pre-pull da imagem

Para imagens grandes, faça o pre-pull da imagem para reduzir o tempo de inicialização:

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

Saída esperada:

Image pre-pull requested for pod default/nginx-daemonset-bwzss
A API de pre-pull de imagem requer a versão v1.32-aliyun.1 ou posterior do cluster.

Passo 5: Acione a atualização

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

Saída esperada:

Start updating pod default/nginx-daemonset-bwzss

Próximos passos