Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Il servizio Azure Kubernetes è un servizio Kubernetes gestito che permette di distribuire e gestire rapidamente i cluster. Questa guida introduttiva spiega come:
- Distribuire un cluster del servizio Azure Kubernetes usando il portale di Azure.
- Eseguire un'applicazione multi-contenitore di esempio con un gruppo di microservizi e front-end web, simulando uno scenario di vendita al dettaglio.
Note
Per iniziare ad effettuare un veloce provisioning di un cluster del servizio Azure Kubernetes, questo articolo include i passaggi per la distribuzione di un cluster con impostazioni predefinite a solo scopo di valutazione. Prima di distribuire un cluster pronto per la produzione, è consigliabile acquisire familiarità con l'architettura di riferimento di base per valutare il modo in cui è allineato ai requisiti aziendali.
Prima di iniziare
Questa guida introduttiva presuppone una comprensione di base dei concetti relativi a Kubernetes. Per altre informazioni, vedere Concetti di base relativi a Kubernetes per il servizio Azure Kubernetes.
- Se non si ha un account Azure, creare un account gratuito prima di iniziare.
- Se non si ha familiarità con Azure Cloud Shell, vedere Panoramica di Azure Cloud Shell.
- Assicurarsi che l'identità usata per creare il cluster disponga delle autorizzazioni minime appropriate. Per maggiori informazioni sull'accesso e l'identità per il servizio Azure Kubernetes, vedere Opzioni di accesso e identità per il servizio Azure Kubernetes (AKS).
Importante
A partire dal 30 novembre 2025, AKS non supporterà più né fornirà aggiornamenti della sicurezza per Azure Linux 2.0. A partire dal 31 marzo 2026, le immagini dei nodi verranno rimosse e non sarà possibile ridimensionare i pool di nodi. Eseguire la migrazione a una versione di Linux di Azure supportata aggiornando i pool di nodi a una versione di Kubernetes supportata o eseguendo la migrazione a osSku AzureLinux3. Per altre informazioni, vedere [Ritiro] Pool di nodi di Azure Linux 2.0 nel servizio Azure Kubernetes.
Creare un cluster AKS
Accedere al portale di Azure.
Nella home page del portale di Azure selezionare Crea una risorsa.
Nella sezione Categorie selezionare Contenitori>servizio Azure Kubernetes.
Configurare i valori seguenti nella scheda Informazioni di base:
- In Dettagli progetto:
- Sottoscrizione: selezionare la sottoscrizione di Azure da usare per questo cluster del servizio Azure Kubernetes.
- Gruppo di risorse: selezionare Crea nuovo, immettere un nome di gruppo di risorse, ad esempio myResourceGroup, quindi selezionare OK. Sebbene sia possibile selezionare un gruppo di risorse esistente, a scopo di test o valutazione, è consigliabile creare un gruppo di risorse per ospitare temporaneamente queste risorse ed evitare di influire sui carichi di lavoro di produzione o sviluppo.
- In dettagli cluster:
Configurazione predefinita del cluster: selezionare Sviluppo/test. Per altre informazioni sulle configurazioni predefinite, vedere Set di impostazioni di configurazione del cluster nel portale di Azure.
Nome del cluster Kubernetes: immettere un nome del cluster, ad esempio myAKSCluster.
Area: selezionare un'area, ad esempio Stati Uniti orientali 2.
Zone di disponibilità: selezionare Nessuna.
Piano tariffario del servizio Azure Kubernetes: selezionare Gratuito.
Lasciare i valori predefiniti per le impostazioni rimanenti e selezionare Avanti.
- In Dettagli progetto:
Nella scheda Pool di nodi configurare le impostazioni seguenti:
Selezionare Aggiungi pool di nodi e immettere un Nome del pool di nodi, ad esempio nplinux.
Modalità: selezionare Utente.
SKU del sistema operativo: selezionare Ubuntu Linux.
Zone di disponibilità: selezionare Nessuna.
Lasciare deselezionata la casella di controllo Abilita istanze spot di Azure.
Dimensioni nodo: selezionare Scegli una dimensione. Nella pagina Selezionare le dimensioni di macchina virtuale selezionare D2s_v3 e quindi Seleziona.
Lasciare i valori predefiniti per le impostazioni rimanenti e selezionare Aggiungi.
Selezionare Rivedi e crea per eseguire la convalida nella configurazione del cluster. Al termine della convalida selezionare Crea.
La creazione del cluster del servizio Azure Kubernetes richiede alcuni minuti. Al termine della distribuzione, passare alla risorsa selezionando Vai alla risorsa oppure passando al gruppo di risorse del cluster del servizio Azure Kubernetes e selezionando la risorsa del servizio Azure Kubernetes.
Stabilire la connessione al cluster
Usare il client della riga di comando Kubernetes, kubectl, per gestire i cluster Kubernetes.
kubectl è già installato se si usa Azure Cloud Shell. Se non si ha familiarità con Cloud Shell, vedere Panoramica di Azure Cloud Shell.
Se si usa Cloud Shell, aprirlo con il pulsante >_ nella parte superiore del portale di Azure. Se si usa PowerShell in locale, connettersi ad Azure tramite il comando Connect-AzAccount. Se si usa l'interfaccia della riga di comando di Azure in locale, connettersi ad Azure tramite il comando az login.
Configurare
kubectlper connettersi al cluster Kubernetes usando il comandoaz aks get-credentials. Questo comando scarica le credenziali e configura l'interfaccia della riga di comando di Kubernetes per usarli.az aks get-credentials --resource-group myResourceGroup --name myAKSClusterVerificare la connessione al cluster usando
kubectl getper restituire un elenco dei nodi del cluster.kubectl get nodesL'esempio di output seguente mostra il nodo singolo creato nei passaggi precedenti. Assicurarsi che lo stato del nodo sia Pronto.
NAME STATUS ROLES AGE VERSION aks-nodepool1-31718369-0 Ready agent 6m44s v1.15.10
Distribuire l'applicazione
Si usa un file manifesto per creare tutti gli oggetti necessari per eseguire l'applicazione dello Store del servizio Azure Kubernetes. Un file manifesto Kubernetes definisce lo stato desiderato di un cluster, ad esempio le immagini del contenitore da eseguire. Il manifesto include le distribuzioni e i servizi Kubernetes seguenti:
- Front-store: applicazione Web per i clienti per visualizzare i prodotti ed effettuare ordini.
- Servizio prodotto: mostra le informazioni sul prodotto.
- Servizio ordini: effettua ordini.
- Rabbit MQ: coda di messaggi per una coda di ordini.
Note
Non è consigliabile eseguire contenitori con stato, ad esempio Rabbit MQ, senza l'archiviazione permanente per la produzione. Questi vengono usati qui per semplicità, ma è consigliabile usare servizi gestiti, ad esempio Azure CosmosDB o il bus di servizio di Azure.
In Cloud Shell aprire un editor e creare un file denominato
aks-store-quickstart.yaml.Incollare il manifesto seguente nell'editor:
apiVersion: apps/v1 kind: StatefulSet metadata: name: rabbitmq spec: serviceName: rabbitmq replicas: 1 selector: matchLabels: app: rabbitmq template: metadata: labels: app: rabbitmq spec: nodeSelector: "kubernetes.io/os": linux containers: - name: rabbitmq image: mcr.microsoft.com/mirror/docker/library/rabbitmq:3.10-management-alpine ports: - containerPort: 5672 name: rabbitmq-amqp - containerPort: 15672 name: rabbitmq-http env: - name: RABBITMQ_DEFAULT_USER value: "username" - name: RABBITMQ_DEFAULT_PASS value: "password" resources: requests: cpu: 10m memory: 128Mi limits: cpu: 250m memory: 256Mi volumeMounts: - name: rabbitmq-enabled-plugins mountPath: /etc/rabbitmq/enabled_plugins subPath: enabled_plugins volumes: - name: rabbitmq-enabled-plugins configMap: name: rabbitmq-enabled-plugins items: - key: rabbitmq_enabled_plugins path: enabled_plugins --- apiVersion: v1 data: rabbitmq_enabled_plugins: | [rabbitmq_management,rabbitmq_prometheus,rabbitmq_amqp1_0]. kind: ConfigMap metadata: name: rabbitmq-enabled-plugins --- apiVersion: v1 kind: Service metadata: name: rabbitmq spec: selector: app: rabbitmq ports: - name: rabbitmq-amqp port: 5672 targetPort: 5672 - name: rabbitmq-http port: 15672 targetPort: 15672 type: ClusterIP --- apiVersion: apps/v1 kind: Deployment metadata: name: order-service spec: replicas: 1 selector: matchLabels: app: order-service template: metadata: labels: app: order-service spec: nodeSelector: "kubernetes.io/os": linux containers: - name: order-service image: ghcr.io/azure-samples/aks-store-demo/order-service:latest ports: - containerPort: 3000 env: - name: ORDER_QUEUE_HOSTNAME value: "rabbitmq" - name: ORDER_QUEUE_PORT value: "5672" - name: ORDER_QUEUE_USERNAME value: "username" - name: ORDER_QUEUE_PASSWORD value: "password" - name: ORDER_QUEUE_NAME value: "orders" - name: FASTIFY_ADDRESS value: "0.0.0.0" resources: requests: cpu: 1m memory: 50Mi limits: cpu: 75m memory: 128Mi startupProbe: httpGet: path: /health port: 3000 failureThreshold: 5 initialDelaySeconds: 20 periodSeconds: 10 readinessProbe: httpGet: path: /health port: 3000 failureThreshold: 3 initialDelaySeconds: 3 periodSeconds: 5 livenessProbe: httpGet: path: /health port: 3000 failureThreshold: 5 initialDelaySeconds: 3 periodSeconds: 3 initContainers: - name: wait-for-rabbitmq image: busybox command: ['sh', '-c', 'until nc -zv rabbitmq 5672; do echo waiting for rabbitmq; sleep 2; done;'] resources: requests: cpu: 1m memory: 50Mi limits: cpu: 75m memory: 128Mi --- apiVersion: v1 kind: Service metadata: name: order-service spec: type: ClusterIP ports: - name: http port: 3000 targetPort: 3000 selector: app: order-service --- apiVersion: apps/v1 kind: Deployment metadata: name: product-service spec: replicas: 1 selector: matchLabels: app: product-service template: metadata: labels: app: product-service spec: nodeSelector: "kubernetes.io/os": linux containers: - name: product-service image: ghcr.io/azure-samples/aks-store-demo/product-service:latest ports: - containerPort: 3002 env: - name: AI_SERVICE_URL value: "http://ai-service:5001/" resources: requests: cpu: 1m memory: 1Mi limits: cpu: 2m memory: 20Mi readinessProbe: httpGet: path: /health port: 3002 failureThreshold: 3 initialDelaySeconds: 3 periodSeconds: 5 livenessProbe: httpGet: path: /health port: 3002 failureThreshold: 5 initialDelaySeconds: 3 periodSeconds: 3 --- apiVersion: v1 kind: Service metadata: name: product-service spec: type: ClusterIP ports: - name: http port: 3002 targetPort: 3002 selector: app: product-service --- apiVersion: apps/v1 kind: Deployment metadata: name: store-front spec: replicas: 1 selector: matchLabels: app: store-front template: metadata: labels: app: store-front spec: nodeSelector: "kubernetes.io/os": linux containers: - name: store-front image: ghcr.io/azure-samples/aks-store-demo/store-front:latest ports: - containerPort: 8080 name: store-front env: - name: VUE_APP_ORDER_SERVICE_URL value: "http://order-service:3000/" - name: VUE_APP_PRODUCT_SERVICE_URL value: "http://product-service:3002/" resources: requests: cpu: 1m memory: 200Mi limits: cpu: 1000m memory: 512Mi startupProbe: httpGet: path: /health port: 8080 failureThreshold: 3 initialDelaySeconds: 5 periodSeconds: 5 readinessProbe: httpGet: path: /health port: 8080 failureThreshold: 3 initialDelaySeconds: 3 periodSeconds: 3 livenessProbe: httpGet: path: /health port: 8080 failureThreshold: 5 initialDelaySeconds: 3 periodSeconds: 3 --- apiVersion: v1 kind: Service metadata: name: store-front spec: ports: - port: 80 targetPort: 8080 selector: app: store-front type: LoadBalancerPer una suddivisione dei file manifesto YAML, vedere Distribuzioni e manifesti YAML.
Se si crea e si salva il file YAML in locale, è possibile caricare il file manifesto nella directory predefinita in CloudShell selezionando il pulsante Carica/Scarica file e selezionando il file dal file system locale.
Distribuire l'applicazione usando il comando
kubectl applye specificare il nome del manifesto YAML:kubectl apply -f aks-store-quickstart.yamlL'output di esempio seguente mostra le distribuzioni e i servizi:
deployment.apps/rabbitmq created service/rabbitmq created deployment.apps/order-service created service/order-service created deployment.apps/product-service created service/product-service created deployment.apps/store-front created service/store-front created
Test dell'applicazione
Durante l'esecuzione dell'applicazione, un servizio Kubernetes espone il front-end dell'applicazione a Internet. Il processo potrebbe richiedere alcuni minuti.
Controllare lo stato dei pod distribuiti usando il comando
kubectl get pods. Fare in modo che tutti i pod sianoRunningprima di procedere.kubectl get podsVerificare la presenza di un indirizzo IP pubblico per l'applicazione
store-front. Monitorare lo stato di avanzamento usando il comandokubectl get servicecon l'argomento--watch.kubectl get service store-front --watchL'output EXTERNAL-IP per il servizio
store-frontinizialmente viene visualizzato come in sospeso:NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE store-front LoadBalancer 10.0.100.10 <pending> 80:30025/TCP 4h4mQuando l’indirizzo EXTERNAL-IP passa da in sospeso a un effettivo indirizzo IP pubblico, usare
CTRL-Cper arrestare il processo di controllokubectl.L'output di esempio seguente mostra un indirizzo IP pubblico valido assegnato al servizio:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE store-front LoadBalancer 10.0.100.10 20.62.159.19 80:30025/TCP 4h5mAprire un browser web all'indirizzo IP esterno del servizio per visualizzare l'applicazione di Azure Store in azione.
Eliminare il cluster
Se non si prevede di eseguire la serie di esercitazioni sul servizio Azure Kubernetes, pulire le risorse non necessarie per evitare addebiti di Azure.
Nel portale di Azure passare al gruppo di risorse del cluster del servizio Azure Kubernetes.
Selezionare Elimina gruppo di risorse.
Immettere il nome del gruppo di risorse da eliminare e quindi selezionare Elimina>Elimina.
Note
Il cluster del servizio Azure Kubernetes è stato creato con un'identità gestita assegnata dal sistema. Questa identità viene gestita dalla piattaforma e non richiede la rimozione.
Passaggi successivi
In questa guida introduttiva, è stato distribuito un cluster Kubernetes, successivamente è stata distribuita una semplice applicazione multi-contenitore. Questa applicazione di esempio è solo a scopo dimostrativo e non rappresenta tutte le procedure consigliate per le applicazioni Kubernetes. Per indicazioni sulla creazione di soluzioni complete con il servizio Azure Kubernetes per la produzione, vedere Linee guida per le soluzioni del servizio Azure Kubernetes.
Per altre informazioni sul servizio Azure Kubernetes e per un esempio completo di codice per la distribuzione, continuare con la serie di esercitazioni sul cluster Kubernetes.
Azure Kubernetes Service