Todos os produtos
Search
Central de documentação

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

Última atualização: Jun 27, 2026

Em cenários de edge computing, as atualizações nativas do DaemonSet podem bloquear quando os links entre a nuvem e a borda falham e os nós ficam com status NotReady, ou quando você precisa atualizar sob demanda em nós de borda sem uma implantação controlada pela nuvem. Configure os modelos estendidos AdvancedRollingUpdate ou OTA para resolver bloqueios de atualização e oferecer suporte a atualizações over-the-air. Use o AdvancedRollingUpdate para ignorar nós NotReady durante atualizações contínuas ou o OTA para acionar atualizações individuais por nó sob demanda.

Pré-requisitos

  • Um cluster ACK edge 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 nuvem e borda podem deixar os nós com status NotReady e bloquear a atualização contínua

OTA

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

Configure o modelo de atualização

Ambos os modelos exigem as mesmas anotações e 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 configure 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

Aplicável apenas ao AdvancedRollingUpdate. Define o número máximo de pods indisponíveis durante a atualização contínua. Aceita os mesmos valores do parâmetro maxUnavailable nativo do DaemonSet. Padrão: 10%.

spec.updateStrategy.type

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

Uso do AdvancedRollingUpdate

O modelo AdvancedRollingUpdate ignora nós com status NotReady e atualiza primeiro os pods em nós Ready. Quando um nó retorna ao status Ready, o sistema atualiza automaticamente seu pod do DaemonSet.

Este exemplo cria um DaemonSet chamado nginx-daemonset com a estratégia AdvancedRollingUpdate e limite 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ó passa para o status Ready , o sistema atualiza automaticamente seu pod do DaemonSet.

Uso do OTA

O modelo OTA permite controlar o momento da atualização individualmente por nó de borda. 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

Todas as chamadas de API ocorrem localmente no nó de borda (URL base: http://127.0.0.1:10267).

Método

Endpoint

Descrição

GET

/pods

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

POST

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

Baixa previamente a imagem de um pod do DaemonSet para reduzir o tempo de início 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 de um pod do DaemonSet.

Exemplo de atualização OTA

Etapa 1: Crie um DaemonSet habilitado para 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

Etapa 2: Atualize a imagem do DaemonSet

Atualize a imagem do DaemonSet. Os pods nos nós de borda não serão atualizados automaticamente.

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

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

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

curl http://127.0.0.1:10267/pods

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

Etapa 4: (Opcional) Baixe previamente a imagem

Para imagens grandes, baixe previamente a 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 download prévio de imagem requer a versão v1.32-aliyun.1 ou posterior do cluster.

Etapa 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óximas etapas