Creare distribuzioni in servizio Azure Kubernetes in Azure Stack HCI e Windows Server

Una distribuzione fa riferimento a un oggetto Kubernetes che gestisce le prestazioni e specifica il comportamento desiderato di un pod. Specifica il ciclo di vita dell'applicazione, inclusi i pod assegnati all'applicazione. Fornisce un modo per comunicare lo stato desiderato per l'applicazione e il controller funziona per modificare lo stato attuale nello stato desiderato.

Le distribuzioni automatizzano il processo per avviare le istanze dei pod e assicurarsi che vengano eseguite come definito in tutti i nodi all'interno del cluster. Gli amministratori e i professionisti IT usano le distribuzioni per comunicare ciò che vogliono da un'applicazione e quindi Kubernetes esegue tutti i passaggi necessari per creare lo stato desiderato dell'applicazione.

Mentre le distribuzioni definiscono la modalità di esecuzione delle applicazioni, non garantiscono la posizione delle applicazioni all'interno del cluster. Ad esempio, se l'applicazione richiede un'istanza di un pod in ogni nodo, è necessario usare un DaemonSet. Per le applicazioni con stato, un oggetto StatefulSet fornisce identificatori di rete univoci, archiviazione permanente e distribuzione/scalabilità ordinata.

L'oggetto di distribuzione Kubernetes consente di:

  • Distribuire un set di repliche o un pod
  • Aumentare o ridurre il numero di istanze di un'applicazione
  • Aggiornare ogni istanza in esecuzione di un'applicazione
  • Eseguire il rollback di tutte le istanze in esecuzione di un'applicazione a un'altra versione
  • Sospendere o continuare una distribuzione

Per altre informazioni, vedere Distribuzioni di Kubernetes.

Creare una distribuzione

Per creare una distribuzione, è possibile usare i kubectl apply comandi o kubectl create . Poiché il numero necessario di pod viene mantenuto e monitorato, vengono eseguiti e disponibili dopo la creazione della distribuzione. Se un pod ha esito negativo, Kubernetes esegue immediatamente l'implementazione di una replica del pod in modo che venga eseguita nel cluster.

Nell'esempio seguente vengono descritte le funzionalità di un file manifesto di distribuzione in formato YAML.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  strategy:
    type: Recreate
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
        - image: nginx
          name: nginx
          ports:
            - containerPort: 80

Per visualizzare la distribuzione, il set di repliche e i pod, eseguire il comando seguente:

kubectl get deployment, replicaset, pod

Aggiornamento di una distribuzione

Il vantaggio principale delle distribuzioni consiste nell'aggiornare automaticamente il programma Kubernetes. Senza distribuzioni, è necessario terminare manualmente tutti i pod precedenti, avviare le nuove versioni dei pod ed eseguire un controllo per verificare se si verificano problemi durante la creazione di pod. È possibile eseguire kubectl describe deployment per visualizzare l'ordine in cui sono stati attivati e rimossi i pod.

Le distribuzioni automatizzano il processo di aggiornamento man mano che si aggiorna semplicemente il modello di pod o lo stato desiderato. La distribuzione modifica lo stato del programma in background con azioni, ad esempio la creazione di nuovi pod o l'allocazione di più risorse, fino a quando non viene eseguito l'aggiornamento scelto.

In caso di problemi nella distribuzione, Kubernetes esegue automaticamente il rollback alla versione precedente. È anche possibile eseguire il rollback esplicito a una versione specifica usando il kubectl rollout undo comando oppure usare per kubectl rollout pause interrompere temporaneamente una distribuzione.

Strategie per l'aggiornamento delle distribuzioni

Kubernetes offre diverse strategie di distribuzione in modo da poter essere aggiornate in vari modi per soddisfare le esigenze dell'ambiente. Le tre strategie di aggiornamento più comuni sono:

  • Aggiornamento in sequenza: questo aggiornamento è un processo graduale che consente di aggiornare il sistema Kubernetes con solo un effetto minore sulle prestazioni e senza tempi di inattività. Riduce al minimo il tempo di inattività a costo della velocità di aggiornamento.
  • Ricreazione: questa strategia è un processo all-or-nothing che consente di aggiornare tutti gli aspetti del sistema contemporaneamente con un breve periodo di inattività. Viene aggiornato rapidamente, ma causa tempi di inattività.
  • Canary: questa strategia è un processo di aggiornamento parziale che consente di testare la nuova versione del programma per gli utenti reali senza impegno per un'implementazione completa. Viene aggiornato rapidamente per alcuni utenti selezionati con un'implementazione completa in un secondo momento.

Passaggi successivi