Questo argomento descrive le modalità di configurazione dei cluster di carichi di lavoro Tanzu Kubernetes Grid (TKG) per l'utilizzo di funzionalità specifiche di Microsoft Azure, non interamente configurabili nel file di configurazione piatto del cluster o nelle specifiche degli oggetti di tipo Kubernetes.
Per informazioni su come configurare i cluster di carichi di lavoro su Azure utilizzando i file di configurazione e le specifiche degli oggetti, vedere File di configurazione dei cluster di Azure.
Per impostazione predefinita, i cluster di gestione e i cluster del carico di lavoro di Azure sono pubblici. È comunque possibile configurarli come privati, il che significa che il loro server dell'API utilizza un bilanciamento del carico interno di Azure ed è quindi accessibile solo dalla VNet propria del cluster o dalle VNet in peer.
Per rendere privato un cluster di Azure, includere quanto segue nel suo file di configurazione:
Impostare AZURE_ENABLE_PRIVATE_CLUSTER
su true
.
(Facoltativo) Impostare AZURE_FRONTEND_PRIVATE_IP
su un indirizzo interno per il bilanciamento del carico del cluster.
10.0.0.100
.Impostare AZURE_VNET_NAME
, AZURE_VNET_CIDR
, AZURE_CONTROL_PLANE_SUBNET_NAME
, AZURE_CONTROL_PLANE_SUBNET_CIDR
, AZURE_NODE_SUBNET_NAME
e AZURE_NODE_SUBNET_CIDR
sulla VNet e le subnet utilizzate per gli altri cluster privati di Azure.
(Facoltativo) Impostare AZURE_ENABLE_CONTROL_PLANE_OUTBOUND_LB
e AZURE_ENABLE_NODE_OUTBOUND_LB
su true
se si desidera consentire al piano di controllo e ai nodi worker di accedere a Internet tramite una connessione Internet di Azure.
I cluster privati di Azure creano un indirizzo IP pubblico per ogni servizio Kubernetes di tipo Bilanciamento del carico (Load Balancer) per impostazione predefinita. Per configurare il servizio di bilanciamento del carico in modo che utilizzi un indirizzo IP privato, aggiungere l'annotazione seguente al manifest di distribuzione:
---
metadata:
annotations:
service.beta.kubernetes.io/azure-load-balancer-internal: "true"
Per ulteriori informazioni, vedere API Server Endpoint nella documentazione di Azure relativa a Cluster API Provider.
Tanzu Kubernetes Grid può eseguire cluster del carico di lavoro in più account della piattaforma di destinazione, ad esempio per dividere l'utilizzo del cloud tra team diversi o applicare profili di sicurezza diversi ai carichi di lavoro di produzione, staging e sviluppo.
Per distribuire cluster del carico di lavoro in un account dell'entità servizio di Azure alternativo, diverso da quello utilizzato per distribuire il cluster di gestione, eseguire i passaggi seguenti:
Creare l'account Azure alternativo. È possibile utilizzare i dettagli di questo account per creare un elemento AzureClusterIdentity in un passaggio successivo. Per informazioni sulla creazione di un account dell'entità servizio di Azure, vedere Procedura: usare il portale per creare un'applicazione Azure AD e un'entità servizio che possano accedere alle risorse nella documentazione di Azure.
Impostare il contesto di kubectl
sul cluster di gestione:
kubectl config use-context MY-MGMT-CLUSTER@MY-MGMT-CLUSTER
In cui MY-MGMT-CLUSTER
è il nome del cluster di gestione.
Creare un file secret.yaml
con i contenuti seguenti:
apiVersion: v1
kind: Secret
metadata:
name: SECRET-NAME
type: Opaque
data:
clientSecret: CLIENT-SECRET
In cui:
SECRET-NAME
è il nome segreto per la password del client.CLIENT-SECRET
è il segreto client dell'identità dell'entità servizio. Il segreto client deve essere codificato in base64.Utilizzare il file per creare l'oggetto Secret
:
kubectl apply -f secret.yaml
Creare un file identity.yaml
con i contenuti seguenti:
apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
kind: AzureClusterIdentity
metadata:
name: EXAMPLE-IDENTITY
namespace: EXAMPLE-NAMESPACE
spec:
type: ManualServicePrincipal
tenantID: AZURE-TENANT-ID
clientID: CLIENT-ID
clientSecret: {"name":"SECRET-NAME","namespace":"default"}
allowedNamespaces:
list:
- CLUSTER-NAMESPACE-1
- CLUSTER-NAMESPACE-1
In cui:
EXAMPLE-IDENTITY
è il nome da utilizzare per AzureClusterIdentity.EXAMPLE-NAMESPACE
è lo spazio dei nomi per AzureClusterIdentity.AZURE-TENANT-ID
è l'ID tenant di Azure.CLIENT-ID
è l'ID client (noto anche come AppID) per l'applicazione Azure AD.SECRET-NAME
è il nome segreto per la password del client.CLUSTER-NAMESPACE-1
e CLUSTER-NAMESPACE-2
sono spazi dei nomi Kubernetes le cui identità possono utilizzate dai cluster. Questi spazi dei nomi possono essere selezionati utilizzando un array di spazi dei nomi.Utilizzare il file per creare l'oggetto AzureClusterIdentity
:
kubectl apply -f identity.yaml
Il cluster di gestione può ora distribuire cluster del carico di lavoro nell'account alternativo utilizzando il nuovo oggetto AzureClusterIdentity
.
Per creare cluster del carico di lavoro che utilizzano l'account Azure alternativo, includere le variabili seguenti nel file di configurazione del cluster:
AZURE_IDENTITY_NAME: EXAMPLE-IDENTITY
AZURE_IDENTITY_NAMESPACE: EXAMPLE-NAMESPACE
In cui:
EXAMPLE-IDENTITY
è il nome da utilizzare per AzureClusterIdentity.EXAMPLE-NAMESPACE
è lo spazio dei nomi per AzureClusterIdentity.Dopo aver creato il cluster del carico di lavoro, accedere al portale di Azure utilizzando l'account alternativo. Verrà visualizzato il cluster in esecuzione.
Esistono due modi per distribuire cluster del carico di lavoro abilitati per NVIDIA GPU in Azure:
ClusterResourceSet
(CRS) per creare automaticamente uno o più cluster del carico di lavoro abilitati per GPULe sottosezioni seguenti includono informazioni su questi due approcci e su come testare i cluster abilitati per GPU.
Per distribuire un cluster del carico di lavoro e configurarlo manualmente per l'utilizzo delle macchine virtuali NVIDIA GPU disponibili in Azure:
Nel file di configurazione per il cluster impostare AZURE_NODE_MACHINE_TYPE
per i nodi worker su un tipo di macchina virtuale compatibile con la GPU, ad esempio Standard_NC4as_T4_v3
.
Distribuire il cluster con il file di configurazione del cluster:
tanzu cluster create MY-GPU-CLUSTER -f MY-GPU-CONFIG
In cui MY-GPU-CLUSTER
è un nome che viene attribuito al cluster.
Installare un criterio del cluster GPU e un operatore GPU nel cluster:
Impostare kubectl context
sul cluster, se non è già il contesto corrente.
Scaricare le risorse NVIDIA GPU necessarie dal repository Azure di Cluster API Provider e salvarle nella directory corrente:
Applicare il criterio del cluster:
kubectl apply clusterpolicy-crd.yaml
Applicare l'operatore GPU:
kubectl apply gpu-operator-components.yaml
eseguire kubectl get pods -A
. Verranno visualizzati elenchi dei pod gpu-operator-
nello spazio dei nomi default
e dei pod nvidia-
nello spazio dei nomi gpu-operator-resources
.
NotaLo stato di questa funzionalità è Anteprima tecnica e non è quindi supportata. Vedere Stati delle funzionalità di TKG.
È possibile configurare il cluster di gestione per creare automaticamente cluster del carico di lavoro abilitati per GPU ogni volta che si aggiunge gpu: nvidia
alle etichette nel manifesto del cluster. A tale scopo, installare un ClusterResourceSet
(CRS) e attivarlo nel modo seguente:
Per configurare il cluster di gestione per creare cluster GPU:
Cercare GPU CRS for TKG in VMware {code} Sample Exchange e scaricare il file gpu-crs.yaml
per Tanzu Kubernetes Grid v1.4.
Impostare il contesto di kubectl
sul contesto del cluster di gestione:
kubectl config use-context my-management-cluster-admin@my-management-cluster
Applicare il file CRS al cluster di gestione utilizzando l'opzione --server-side
per gestire le dimensioni notevoli dei dati di ConfigMap
:
kubectl apply -f gpu-crs.yaml --server-side
Per creare un cluster del carico di lavoro GPU:
Nel file di configurazione per il cluster impostare AZURE_NODE_MACHINE_TYPE
per i nodi worker su un tipo di macchina virtuale compatibile con la GPU, ad esempio Standard_NC4as_T4_v3
.
Utilizzare tanzu cluster create
con l'opzione --dry-run
per generare un manifesto di distribuzione dal file di configurazione del cluster:
tanzu cluster create MY-GPU-CLUSTER -f MY-GPU-CONFIG --dry-run > MY-GPU-CLUSTER-MANIFEST
In cui MY-GPU-CLUSTER
è un nome che viene attribuito al cluster.
Creare il cluster passandolo a kubectl apply
:
kubectl apply -f MY-GPU-CLUSTER-MANIFEST
eseguire kubectl get pods -A
. Verranno visualizzati elenchi dei pod gpu-operator-
nello spazio dei nomi default
e dei pod nvidia-
nello spazio dei nomi gpu-operator-resources
.
Per testare un cluster abilitato per GPU:
Testare l'elaborazione di GPU eseguendo il test di aggiunta del vettore CUDA VectorAdd nella documentazione di NVIDIA.
Testare l'operatore di GPU:
Aumentare il numero di nodi worker del cluster del carico di lavoro:
tanzu cluster scale MY-GPU-CLUSTER -w 2
Eseguire nuovamente kubectl get pods -A
. Per i nodi aggiunti, verranno visualizzati ulteriori pod gpu-operator-
e nvidia-
.