Aggiornare un cluster Kubernetes usando il motore del servizio Azure Kubernetes nell'hub di Azure Stack
Il motore del servizio Azure Kubernetes consente di aggiornare il cluster Kubernetes distribuito in origine usando lo strumento nell'hub di Azure Stack. È possibile gestire i cluster usando il motore del servizio Azure Kubernetes. Le attività di manutenzione sono simili a qualsiasi sistema IaaS. È necessario tenere presente la disponibilità di nuovi aggiornamenti e usare il motore del servizio Azure Kubernetes per applicarli.
Aggiornare un cluster
Il comando di aggiornamento aggiorna la versione di Kubernetes e l'immagine del sistema operativo di base. Ogni volta che si esegue il comando di aggiornamento, per ogni nodo del cluster, il motore del servizio Azure Kubernetes crea una nuova macchina virtuale usando l'immagine di base del servizio Azure Kubernetes associata alla versione del motore del servizio Azure Kubernetes usata.
Per il motore del servizio Azure Kubernetes 0.73.0 e versioni successive, è possibile usare il aks-engine upgrade
comando per mantenere la valuta di ogni nodo master e agente nel cluster.
Per il motore del servizio Azure Kubernetes versione 0.75.3 e successive, è possibile usare il aks-engine-azurestack upgrade
comando per mantenere la valuta di ogni nodo master e agente nel cluster.
Microsoft non gestisce il cluster. Microsoft fornisce tuttavia lo strumento e l'immagine della macchina virtuale che è possibile usare per gestire il cluster.
Per un cluster distribuito, gli aggiornamenti coprono:
- Kubernetes
- Provider Kubernetes dell'hub di Azure Stack
- Sistema operativo di base
Quando si aggiorna un cluster di produzione, tenere presente quanto segue:
- Si usano le specifiche del cluster corrette (
apimodel.json
) e il gruppo di risorse per il cluster di destinazione? - Si sta usando un computer affidabile per il computer client per eseguire il motore del servizio Azure Kubernetes e da cui si eseguono operazioni di aggiornamento?
- Assicurarsi di disporre di un cluster di backup e che sia operativo.
- Se possibile, eseguire il comando da una macchina virtuale all'interno dell'ambiente dell'hub di Azure Stack per ridurre gli hop di rete e i potenziali errori di connettività.
- Assicurarsi che la sottoscrizione disponga di spazio sufficiente per l'intero processo. Il processo alloca nuove macchine virtuali durante il processo.
- Non sono pianificati aggiornamenti di sistema o attività pianificate.
- Configurare un aggiornamento a fasi in un cluster configurato esattamente come cluster di produzione e testare l'aggiornamento prima di farlo nel cluster di produzione
Passaggi per eseguire l'aggiornamento a una versione più recente di Kubernetes
Nota
L'immagine di base del servizio Azure Kubernetes viene aggiornata anche se si usa una versione più recente del motore del servizio Azure Kubernetes e l'immagine è disponibile nel marketplace.
Le istruzioni seguenti usano i passaggi minimi per eseguire l'aggiornamento. Per altri dettagli, vedere l'articolo Aggiornamento dei cluster Kubernetes.
È prima necessario determinare le versioni di destinazione per l'aggiornamento. Questa versione dipende dalla versione attualmente disponibile e quindi dal valore della versione per eseguire l'aggiornamento. Le versioni di Kubernetes supportate dal motore del servizio Azure Kubernetes possono essere elencate eseguendo il comando seguente:
Nota
Per AKSe versione 0.75.3 e successive, il comando per ottenere le versioni del motore del servizio Azure Kubernetes è
aks-engine-azurestack get-versions
.aks-engine get-versions --azure-env AzureStackCloud
Per un mapping completo del motore del servizio Azure Kubernetes, dell'immagine di base del servizio Azure Kubernetes e delle versioni supportate del motore del servizio Azure Kubernetes.
Raccogliere le informazioni necessarie per eseguire il
upgrade
comando. Ilupgrade
comando usa i parametri seguenti:Parametro Esempio Descrizione azure-env AzureStackCloud Per indicare al motore del servizio Azure Kubernetes che la piattaforma di destinazione è l'hub di Azure Stack, usare AzureStackCloud
.posizione locali Nome dell'area per l'hub di Azure Stack. Per ASDK, l'area è impostata su local
.resource-group kube-rg Immettere il nome di un nuovo gruppo di risorse o selezionare un gruppo di risorse esistente. Il nome della risorsa deve essere alfanumerico e minuscolo. subscription-id xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Immettere l'ID sottoscrizione. Per altre informazioni, vedere Sottoscrivere un'offerta api-model ./kubernetes-azurestack.json Percorso del file di configurazione del cluster o modello API. client-id xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Immettere il GUID dell'entità servizio. ID client identificato come ID applicazione quando l'amministratore dell'hub di Azure Stack ha creato l'entità servizio. client-secret xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Immettere il segreto dell'entità servizio. Si tratta del segreto client configurato durante la creazione del servizio. identity-system Adfs facoltativo. Specificare la soluzione di gestione delle identità se si usa Active Directory Federated Services (AD FS). Con i valori applicati, eseguire il comando seguente:
Nota
Per AKSe versione 0.75.3 e successive, il comando per aggiornare il motore del servizio Azure Kubernetes è
aks-engine-azurestack upgrade
.aks-engine upgrade \ --azure-env AzureStackCloud \ --location <for an ASDK is local> \ --resource-group kube-rg \ --subscription-id xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx \ --api-model kube-rg/apimodel.json \ --upgrade-version 1.18.15 \ --client-id xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx \ --client-secret xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx \ --identity-system adfs # required if using AD FS
Se per qualsiasi motivo l'operazione di aggiornamento rileva un errore, è possibile rieseguire il
upgrade
comando dopo aver risolto il problema. Il motore del servizio Azure Kubernetes riprenderà l'operazione in cui non è riuscita l'ora precedente.
Passaggi per aggiornare solo l'immagine del sistema operativo
- Esaminare la tabella supported-kubernetes-versions e determinare se si dispone della versione del motore del servizio Azure Kubernetes e dell'immagine di base del servizio Azure Kubernetes che si prevede per l'aggiornamento. Se si usa il motore del servizio Azure Kubernetes versione 0.73.0 o successiva, per visualizzare la versione dell'esecuzione del motore del servizio Azure Kubernetes: .
aks-engine version
Se si usa il motore del servizio Azure Kubernetes versione 0.75.3 o successiva, per visualizzare la versione del motore servizio Azure Kubernetes eseguire:aks-engine-azurestack version
. - Aggiornare di conseguenza il motore del servizio Azure Kubernetes nel computer in cui è stato installato il motore del servizio Azure Kubernetes:
./get-akse.sh --version vx.xx.x
sostituendo x.xx.x con la versione di destinazione. - Chiedere all'operatore dell'hub di Azure Stack di aggiungere la versione dell'immagine di base del servizio Azure Kubernetes necessaria in Azure Stack Hub Marketplace che si prevede di usare.
- Eseguire il
aks-engine upgrade
comando usando la stessa versione di Kubernetes già in uso, ma aggiungere .--force
È possibile visualizzare un esempio in Forzare un aggiornamento.
Procedura per aggiornare il cluster alla versione del sistema operativo Ubuntu 20.04
Con il motore del servizio Azure Kubernetes versione 0.75.3 e successive è possibile aggiornare le macchine virtuali del cluster da Ubuntu 18.04 a 20.04. Seguire questa procedura:
- Individuare e modificare il file generato durante la
api-model.json
distribuzione. Deve essere lo stesso file usato per qualsiasi operazione di aggiornamento o scalabilità conaks-engine
. Nel motore del servizio Azure Kubernetes versione 0.75.3 e successive usareaks-engine-azurestack
. - Individuare le sezioni per
masterProfile
eagentPoolProfiles
, all'interno di tali sezioni modificare il valore didistro
inaks-ubuntu-20.04
. - Salvare il
api-model.json
file e usare ilapi-model.json
file nelaks-engin upgrade
comando come si farebbe nei passaggi per eseguire l'aggiornamento a una versione più recente di Kubernetes
Procedura per aggiornare il cluster se si usano volumi di archiviazione con il motore del servizio Azure Kubernetes v0.70.0 e versioni successive
Il provider di servizi cloud per Azure (noto anche come cloud-controller-manager
provider di servizi cloud out-of-tree o provider di servizi cloud esterni) implementa l'interfaccia del provider di servizi cloud Kubernetes per i cloud di Azure. L'implementazione out-of-tree è la sostituzione dell'implementazione in albero deprecata.
Nell'hub di Azure Stack, a partire da Kubernetes v1.21, i cluster basati sul motore del servizio Azure Kubernetes useranno cloud-controller-manager
esclusivamente . Di conseguenza, per distribuire un cluster Kubernetes v1.21+, è necessario impostare su orchestratorProfile.kubernetesConfig.useCloudControllerManager
true
nel modello API (ad esempio). Il processo di aggiornamento del motore del servizio Azure Kubernetes aggiornerà automaticamente il useCloudControllerManager
flag.
Nota
Considerazioni sull'aggiornamento: il processo di aggiornamento di un cluster Kubernetes da v1.20 (o versione inferiore) a v1.21 (o versione successiva) causerà tempi di inattività ai carichi di lavoro basati sul provisioner del volume nell'albero kubernetes.io/azure-disk
. Prima di eseguire l'aggiornamento a Kubernetes v1.21+, è consigliabile eseguire un backup completo dei dati dell'applicazione e convalidare in un ambiente di pre-produzione che le risorse di archiviazione cluster (PV e PVC) possono essere migrate in un nuovo provisioner del volume. Informazioni su come eseguire la migrazione al driver CSI di Disco di Azure qui.
Provisioner del volume
Il provisioner del volume nell'albero è compatibile solo con il provider cloud ad albero. Pertanto, un cluster v1.21+ deve includere un driver CSI (Container Storage Interface) se i carichi di lavoro utente si basano sull'archiviazione persistente. Alcune soluzioni disponibili nell'hub di Azure Stack sono elencate qui.
Il motore del servizio Azure Kubernetes non abilita alcun driver CSI per impostazione predefinita nell'hub di Azure Stack. Per i carichi di lavoro che richiedono un driver CSI, è possibile abilitare in modo esplicito il azuredisk-csi-driver
addon (cluster solo Linux) o usare Helm
per installare il azuredisk-csi-driver
grafico (cluster Linux e/o Windows).
Eseguire la migrazione dell'archiviazione persistente al driver CSI del disco di Azure
Il processo di aggiornamento di un cluster basato sul motore del servizio Azure Kubernetes da v1.20 (o versione inferiore) alla versione v1.21 (o versione successiva) causerà tempi di inattività per i carichi di lavoro che kubernetes.io/azure-disk
si basano sul provisioner del volume nell'albero perché questo provisioner non fa parte del provider di servizi cloud per Azure.
Se i dati persistenti nei dischi di Azure sottostanti devono essere conservati, è necessario eseguire i passaggi aggiuntivi seguenti dopo il completamento del processo di aggiornamento del cluster:
- Installare il driver CSI del disco di Azure
- Rimuovere le classi di archiviazione nell'albero deprecate
- Ricreare i volumi e le attestazioni persistenti
1. Installare manualmente il driver CSI del disco di Azure
Lo script seguente usa Helm
per installare il driver CSI del disco di Azure:
DRIVER_VERSION=v1.10.0
helm repo add azuredisk-csi-driver https://raw.githubusercontent.com/kubernetes-sigs/azuredisk-csi-driver/master/charts
helm install azuredisk-csi-driver azuredisk-csi-driver/azuredisk-csi-driver \
--namespace kube-system \
--set cloud=AzureStackCloud \
--set controller.runOnMaster=true \
--version ${DRIVER_VERSION}
2. Sostituire le classi di archiviazione
L'oggetto kube-addon-manager
creerà automaticamente le classi di archiviazione driver CSI di Azure () una volta eliminate manualmente le classi di archiviazione nell'albero (disk.csi.azure.com
kubernetes.io/azure-disk
):
IN_TREE_SC="default managed-premium managed-standard"
# Delete deprecated "kubernetes.io/azure-disk" storage classes
kubectl delete storageclasses ${IN_TREE_SC}
# Wait for addon manager to create the "disk.csi.azure.com" storage class resources
kubectl get --watch storageclasses
3. Ricreare volumi persistenti
Dopo aver installato il driver CSI del disco di Azure e le classi di archiviazione sostituite, il passaggio successivo consiste nel ricreare i volumi persistenti (PV) e le attestazioni di volumi persistenti (PVC) usando il driver CSI di Azure (o la soluzione CSI alternativa).
Si tratta di un processo in più passaggi che può essere diverso a seconda del modo in cui queste risorse sono state inizialmente distribuite. I passaggi fondamentali sono:
- Eliminare la distribuzione o il set con stato che fa riferimento alle coppie PV + PVC per eseguire la migrazione (definizione della risorsa di backup se necessario).
- Verificare che la proprietà dei
persistentVolumeReclaimPolicy
PVs sia impostata su valoreRetain
(esempio). - Eliminare le coppie PV + PVC per eseguire la migrazione (se necessario, le definizioni delle risorse di backup).
- Per eseguire la migrazione, aggiornare la definizione di risorsa del PVs rimuovendo l'oggetto
azureDisk
e aggiungendo uncsi
oggetto con riferimento all'originale AzureDisk (esempio). - Ricreare, nell'ordine seguente, la risorsa PV/s, la risorsa PVC/s (se necessario) e infine la distribuzione o il set con stato.
Lo script di migrazione seguente viene fornito come modello.
Dopo aver eseguito lo script di migrazione, se il pod è bloccato con l'errore "Impossibile collegare o montare volumi", assicurarsi che i driver CSI del disco di Azure siano stati installati e le classi di archiviazione siano state ricreate.
Forzare un aggiornamento
Potrebbero verificarsi condizioni in cui è possibile forzare un aggiornamento del cluster. Ad esempio, al giorno 1 si distribuisce un cluster in un ambiente disconnesso usando la versione più recente di Kubernetes. Il giorno seguente Ubuntu rilascia una patch a una vulnerabilità per cui Microsoft genera una nuova immagine di base del servizio Azure Kubernetes. È possibile applicare la nuova immagine forzando un aggiornamento usando la stessa versione di Kubernetes già distribuita.
Nota
Per AKSe versione 0.75.3 e versioni successive, il comando per aggiornare il motore del servizio Azure Kubernetes è aks-engine-azurestack upgrade
.
aks-engine upgrade \
--azure-env AzureStackCloud
--location <for an ASDK is local> \
--resource-group kube-rg \
--subscription-id xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx \
--api-model kube-rg/apimodel.json \
--upgrade-version 1.18.15 \
--client-id xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx \
--client-secret xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx \
--force
Per istruzioni, vedere Forza aggiornamento.
Passaggi successivi
- Informazioni sul motore del servizio Azure Kubernetes nell'hub di Azure Stack
- Ridimensionare un cluster Kubernetes nell'hub di Azure Stack usando il motore del servizio Azure Kubernetes
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per