Distribuire e gestire le estensioni del cluster Kubernetes abilitate per Azure Arc
È possibile creare istanze di estensione in un cluster Kubernetes abilitato per Arc, impostando parametri obbligatori e facoltativi, incluse le opzioni correlate agli aggiornamenti e alle configurazioni. È anche possibile visualizzare, elencare, aggiornare ed eliminare istanze di estensione.
Prima di iniziare, leggere la panoramica concettuale delle estensioni del cluster Kubernetes abilitate per Arc ed esaminare l'elenco delle estensioni attualmente disponibili.
Prerequisiti
Versione più recente dell'interfaccia della riga di comando di Azure.
Le versioni più recenti delle estensioni dell'interfaccia della
connectedk8s
riga di comando di Azure ek8s-extension
. Installare queste estensioni eseguendo i comandi seguenti:az extension add --name connectedk8s az extension add --name k8s-extension
Se le
connectedk8s
estensioni ek8s-extension
sono già installate, assicurarsi che siano aggiornate alla versione più recente usando i comandi seguenti:az extension update --name connectedk8s az extension update --name k8s-extension
Un cluster connesso Kubernetes abilitato per Azure Arc esistente, con almeno un nodo del sistema operativo e del tipo di
linux/amd64
architettura . Se si distribuisce Flux (GitOps), è possibile usare un cluster basato su ARM64 senza unlinux/amd64
nodo.- Se non è ancora stato connesso un cluster, usare la guida introduttiva.
- Aggiornare gli agenti alla versione più recente.
Creare un'istanza dell'estensione
Per creare una nuova istanza di estensione, usare k8s-extension create
, passando i valori per i parametri obbligatori.
Questo esempio crea un'istanza dell'estensione Azure Monitor Container Insights in un cluster Kubernetes abilitato per Azure Arc:
az k8s-extension create --name azuremonitor-containers --extension-type Microsoft.AzureMonitor.Containers --scope cluster --cluster-name <clusterName> --resource-group <resourceGroupName> --cluster-type connectedClusters
Output:
{
"autoUpgradeMinorVersion": true,
"configurationProtectedSettings": null,
"configurationSettings": {
"logAnalyticsWorkspaceResourceID": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcegroups/defaultresourcegroup-eus/providers/microsoft.operationalinsights/workspaces/defaultworkspace-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx-eus"
},
"creationTime": "2021-04-02T12:13:06.7534628+00:00",
"errorInfo": {
"code": null,
"message": null
},
"extensionType": "microsoft.azuremonitor.containers",
"id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/demo/providers/Microsoft.Kubernetes/connectedClusters/demo/providers/Microsoft.KubernetesConfiguration/extensions/azuremonitor-containers",
"identity": null,
"installState": "Pending",
"lastModifiedTime": "2021-04-02T12:13:06.753463+00:00",
"lastStatusTime": null,
"name": "azuremonitor-containers",
"releaseTrain": "Stable",
"resourceGroup": "demo",
"scope": {
"cluster": {
"releaseNamespace": "azuremonitor-containers"
},
"namespace": null
},
"statuses": [],
"systemData": null,
"type": "Microsoft.KubernetesConfiguration/extensions",
"version": "2.8.2"
}
Nota
Il servizio non è in grado di conservare le informazioni riservate per più di 48 ore. Se gli agenti Kubernetes abilitati per Azure Arc non hanno connettività di rete per più di 48 ore e non possono determinare se creare un'estensione nel cluster, l'estensione passa allo Failed
stato. In questo caso, sarà necessario eseguire k8s-extension create
di nuovo per creare una nuova risorsa di Azure di estensione.
Azure Monitor Container Insights è un'estensione singleton (necessaria una sola per ogni cluster). Prima di installare le stesse estensioni, è necessario pulire le installazioni precedenti del grafico Helm di Azure Monitor Container Insights (senza estensioni). Seguire le istruzioni per eliminare il grafico Helm prima di eseguire az k8s-extension create
.
Parametri obbligatori
Quando si usa az k8s-extension create
per creare un'istanza di estensione, sono necessari i parametri seguenti.
Nome parametro | Descrizione |
---|---|
--name |
Nome dell'istanza dell'estensione |
--extension-type |
Tipo di estensione da installare nel cluster. Ad esempio: Microsoft.AzureMonitor.Containers, microsoft.azuredefender.kubernetes |
--scope |
Ambito dell'installazione per l'estensione: cluster o namespace |
--cluster-name |
Nome della risorsa Kubernetes abilitata per Azure Arc in cui deve essere creata l'istanza dell'estensione |
--resource-group |
Gruppo di risorse contenente la risorsa Kubernetes abilitata per Azure Arc |
--cluster-type |
Tipo di cluster in cui deve essere creata l'istanza dell'estensione. Per la maggior parte degli scenari, usare connectedClusters , che corrisponde ai cluster Kubernetes abilitati per Azure Arc. |
Parametri facoltativi
Usare uno o più di questi parametri facoltativi in base alle esigenze per gli scenari, insieme ai parametri necessari.
Nota
È possibile scegliere di aggiornare automaticamente l'istanza dell'estensione alle versioni secondarie e patch più recenti impostando auto-upgrade-minor-version
true
su oppure è possibile impostare manualmente la versione dell'istanza dell'estensione usando il --version
parametro . È consigliabile abilitare gli aggiornamenti automatici per versioni secondarie e patch in modo da avere sempre le patch e le funzionalità di sicurezza più recenti.
Poiché gli aggiornamenti delle versioni principali possono includere modifiche di rilievo, gli aggiornamenti automatici per le nuove versioni principali di un'istanza di estensione non sono supportati. È possibile scegliere quando aggiornare manualmente le istanze dell'estensione a una nuova versione principale.
Nome parametro | Descrizione |
---|---|
--auto-upgrade-minor-version |
Proprietà booleana che determina se la versione secondaria dell'estensione viene aggiornata automaticamente. L'impostazione predefinita è true . Se questo parametro è impostato su true , non è possibile impostare il version parametro, perché la versione verrà aggiornata in modo dinamico. Se impostato su false , l'estensione non verrà aggiornata automaticamente, anche per le versioni patch. |
--version |
Versione dell'estensione da installare (versione specifica a cui aggiungere l'istanza dell'estensione). Non deve essere fornito se auto-upgrade-minor-version è impostato su true . |
--configuration-settings |
Impostazioni che è possibile passare all'estensione per controllarne la funzionalità. Questi vengono passati come coppie separate key=value da spazi dopo il nome del parametro. Se questo parametro viene usato nel comando , --configuration-settings-file non può essere usato nello stesso comando. |
--configuration-settings-file |
Percorso di un file JSON con key=value coppie da usare per passare le impostazioni di configurazione nell'estensione. Se questo parametro viene usato nel comando , --configuration-settings non può essere usato nello stesso comando. |
--configuration-protected-settings |
Impostazioni che non sono recuperabili tramite GET Chiamate API o az k8s-extension show comandi. In genere viene usato per passare impostazioni sensibili. Questi vengono passati come coppie separate key=value da spazi dopo il nome del parametro. Se questo parametro viene usato nel comando , --configuration-protected-settings-file non può essere usato nello stesso comando. |
--configuration-protected-settings-file |
Percorso di un file JSON con key=value coppie da usare per passare le impostazioni sensibili nell'estensione. Se questo parametro viene usato nel comando , --configuration-protected-settings non può essere usato nello stesso comando. |
--release-namespace |
Questo parametro indica lo spazio dei nomi in cui verrà creata la versione. Rilevante solo se scope è impostato su cluster . |
--release-train |
Gli autori di estensioni possono pubblicare versioni in diversi training di rilascio, ad Stable esempio , Preview e così via. Se questo parametro non è impostato in modo esplicito, Stable viene usato come predefinito. |
--target-namespace |
Indica lo spazio dei nomi in cui verrà creata la versione. L'autorizzazione dell'account di sistema creato per questa istanza di estensione sarà limitata a questo spazio dei nomi. Rilevante solo se scope è impostato su namespace . |
Visualizzare i dettagli dell'estensione
Per visualizzare i dettagli di un'istanza di estensione attualmente installata, usare k8s-extension show
, passando i valori per i parametri obbligatori.
az k8s-extension show --name azuremonitor-containers --cluster-name <clusterName> --resource-group <resourceGroupName> --cluster-type connectedClusters
Output:
{
"autoUpgradeMinorVersion": true,
"configurationProtectedSettings": null,
"configurationSettings": {
"logAnalyticsWorkspaceResourceID": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcegroups/defaultresourcegroup-eus/providers/microsoft.operationalinsights/workspaces/defaultworkspace-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx-eus"
},
"creationTime": "2021-04-02T12:13:06.7534628+00:00",
"errorInfo": {
"code": null,
"message": null
},
"extensionType": "microsoft.azuremonitor.containers",
"id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/demo/providers/Microsoft.Kubernetes/connectedClusters/demo/providers/Microsoft.KubernetesConfiguration/extensions/azuremonitor-containers",
"identity": null,
"installState": "Installed",
"lastModifiedTime": "2021-04-02T12:13:06.753463+00:00",
"lastStatusTime": "2021-04-02T12:13:49.636+00:00",
"name": "azuremonitor-containers",
"releaseTrain": "Stable",
"resourceGroup": "demo",
"scope": {
"cluster": {
"releaseNamespace": "azuremonitor-containers"
},
"namespace": null
},
"statuses": [],
"systemData": null,
"type": "Microsoft.KubernetesConfiguration/extensions",
"version": "2.8.2"
}
Elencare tutte le estensioni installate nel cluster
Per visualizzare un elenco di tutte le estensioni installate in un cluster, usare k8s-extension list
, passando i valori per i parametri obbligatori.
az k8s-extension list --cluster-name <clusterName> --resource-group <resourceGroupName> --cluster-type connectedClusters
Output:
[
{
"autoUpgradeMinorVersion": true,
"creationTime": "2020-09-15T02:26:03.5519523+00:00",
"errorInfo": {
"code": null,
"message": null
},
"extensionType": "Microsoft.AzureMonitor.Containers",
"id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/myRg/providers/Microsoft.Kubernetes/connectedClusters/myCluster/providers/Microsoft.KubernetesConfiguration/extensions/myExtInstanceName",
"identity": null,
"installState": "Pending",
"lastModifiedTime": "2020-09-15T02:48:45.6469664+00:00",
"lastStatusTime": null,
"name": "myExtInstanceName",
"releaseTrain": "Stable",
"resourceGroup": "myRG",
"scope": {
"cluster": {
"releaseNamespace": "myExtInstanceName1"
}
},
"statuses": [],
"type": "Microsoft.KubernetesConfiguration/extensions",
"version": "0.1.0"
},
{
"autoUpgradeMinorVersion": true,
"creationTime": "2020-09-02T00:41:16.8005159+00:00",
"errorInfo": {
"code": null,
"message": null
},
"extensionType": "microsoft.azuredefender.kubernetes",
"id": "/subscriptions/0e849346-4343-582b-95a3-e40e6a648ae1/resourceGroups/myRg/providers/Microsoft.Kubernetes/connectedClusters/myCluster/providers/Microsoft.KubernetesConfiguration/extensions/defender",
"identity": null,
"installState": "Pending",
"lastModifiedTime": "2020-09-02T00:41:16.8005162+00:00",
"lastStatusTime": null,
"name": "microsoft.azuredefender.kubernetes",
"releaseTrain": "Stable",
"resourceGroup": "myRg",
"scope": {
"cluster": {
"releaseNamespace": "myExtInstanceName2"
}
},
"type": "Microsoft.KubernetesConfiguration/extensions",
"version": "0.1.0"
}
]
Aggiornare l'istanza dell'estensione
Nota
Vedere la documentazione relativa al tipo di estensione specifico per comprendere le impostazioni specifiche in --configuration-settings
e --configuration-protected-settings
che possono essere aggiornate. Per --configuration-protected-settings
, è previsto che vengano specificate tutte le impostazioni, anche se viene aggiornata una sola impostazione. Se una di queste impostazioni viene omessa, tali impostazioni verranno considerate obsolete ed eliminate.
Per aggiornare un'istanza di estensione esistente, usare k8s-extension update
, passando i valori per i parametri obbligatori e facoltativi. I parametri obbligatori e facoltativi sono leggermente diversi da quelli usati per creare un'istanza di estensione.
Questo esempio aggiorna l'impostazione per un'istanza dell'estensione auto-upgrade-minor-version
di Azure Machine Learning su true
:
az k8s-extension update --name azureml --extension-type Microsoft.AzureML.Kubernetes --scope cluster --cluster-name <clusterName> --resource-group <resourceGroupName> --auto-upgrade-minor-version true --cluster-type managedClusters
Parametri obbligatori per l'aggiornamento
Nome parametro | Descrizione |
---|---|
--name |
Nome dell'istanza dell'estensione |
--cluster-name |
Nome del cluster in cui deve essere creata l'istanza dell'estensione |
--resource-group |
Gruppo di risorse contenente il cluster |
--cluster-type |
Tipo di cluster in cui deve essere creata l'istanza dell'estensione. Per i cluster Kubernetes abilitati per Azure Arc, usare connectedClusters . Per i cluster del servizio Azure Kubernetes, usare managedClusters . |
Parametri facoltativi per l'aggiornamento
Nome parametro | Descrizione |
---|---|
--auto-upgrade-minor-version |
Proprietà booleana che specifica se la versione secondaria dell'estensione viene aggiornata automaticamente. L'impostazione predefinita è true . Se questo parametro è impostato su true, non è possibile impostare il version parametro, perché la versione verrà aggiornata in modo dinamico. Se impostato su false , l'estensione non verrà aggiornata automaticamente, anche per le versioni patch. |
--version |
Versione dell'estensione da installare (versione specifica a cui aggiungere l'istanza dell'estensione). Non deve essere fornito se l'aggiornamento automatico-versione secondaria è impostato su true . |
--configuration-settings |
Impostazioni che è possibile passare all'estensione per controllarne la funzionalità. Questi vengono passati come coppie separate key=value da spazi dopo il nome del parametro. Se questo parametro viene usato nel comando , --configuration-settings-file non può essere usato nello stesso comando. È necessario specificare solo le impostazioni che richiedono un aggiornamento. Le impostazioni specificate verranno sostituite con i valori specificati. |
--configuration-settings-file |
Percorso del file JSON con key=value coppie da usare per passare le impostazioni di configurazione all'estensione. Se questo parametro viene usato nel comando , --configuration-settings non può essere usato nello stesso comando. |
--configuration-protected-settings |
Impostazioni che non sono recuperabili tramite GET Chiamate API o az k8s-extension show comandi. In genere viene usato per passare impostazioni sensibili. Questi vengono passati come coppie separate key=value da spazi dopo il nome del parametro. Se questo parametro viene usato nel comando , --configuration-protected-settings-file non può essere usato nello stesso comando. Quando si aggiorna un'impostazione protetta, è previsto che vengano specificate tutte le impostazioni protette. Se una di queste impostazioni viene omessa, tali impostazioni verranno considerate obsolete ed eliminate. |
--configuration-protected-settings-file |
Percorso di un file JSON con key=value coppie da usare per passare le impostazioni sensibili all'estensione. Se questo parametro viene usato nel comando , --configuration-protected-settings non può essere usato nello stesso comando. |
--scope |
Ambito dell'installazione per l'estensione - cluster o namespace . |
--release-train |
Gli autori di estensioni possono pubblicare versioni in diversi training di rilascio, ad Stable esempio , Preview e così via. Se questo parametro non è impostato in modo esplicito, Stable viene usato come predefinito. |
Aggiornare l'istanza dell'estensione
Come indicato in precedenza, se si imposta su auto-upgrade-minor-version
true, l'estensione verrà aggiornata automaticamente quando viene rilasciata una nuova versione secondaria. Per la maggior parte degli scenari, è consigliabile abilitare gli aggiornamenti automatici. Se si imposta su auto-upgrade-minor-version
false, sarà necessario aggiornare manualmente l'estensione se si vuole una versione più recente.
Gli aggiornamenti manuali sono necessari anche per ottenere una nuova istanza principale di un'estensione. È possibile scegliere quando eseguire l'aggiornamento per evitare modifiche impreviste che causano interruzioni impreviste con aggiornamenti delle versioni principali.
Per aggiornare manualmente un'istanza dell'estensione, usare k8s-extension update
e impostare il version
parametro per specificare una versione.
Questo esempio aggiorna un'istanza dell'estensione di Azure Machine Learning alla versione x.y.z:
az k8s-extension update --cluster-name <clusterName> --resource-group <resourceGroupName> --cluster-type connectedClusters --name azureml --version x.y.z
Eliminare l'istanza dell'estensione
Per eliminare un'istanza di estensione in un cluster, usare k8s-extension delete
, passando i valori per i parametri obbligatori:
az k8s-extension delete --name azuremonitor-containers --cluster-name <clusterName> --resource-group <resourceGroupName> --cluster-type connectedClusters
Nota
La risorsa di Azure che rappresenta questa estensione viene eliminata immediatamente. La versione Helm nel cluster associato a questa estensione viene eliminata solo quando gli agenti in esecuzione nel cluster Kubernetes hanno connettività di rete e possono contattare nuovamente i servizi di Azure per recuperare lo stato desiderato.
Passaggi successivi
- Esaminare le informazioni di riferimento sull'interfaccia della riga di comando az k8s-extension per un elenco completo di comandi e parametri.
- Altre informazioni sul funzionamento delle estensioni con i cluster Kubernetes abilitati per Arc.
- Esaminare le estensioni del cluster attualmente disponibili per Kubernetes con abilitazione di Azure Arc.
- Ottenere assistenza per la risoluzione dei problemi di estensione.