Distribuire cluster Kubernetes per contenitori LinuxDeploy Kubernetes cluster for Linux containers

Avviso

Si sta visualizzando la documentazione per la versione precedente del servizio contenitore di Azure.You are viewing documentation for the old version of the Azure Container Service. Il servizio contenitore di Azure è in fase di aggiornamento con l'aggiunta di nuove opzioni di distribuzione, funzionalità di gestione migliorate e vantaggi economici in Kubernetes in Azure.Azure Container Service (AKS) is being updated to add new deployment options, enhanced management capabilities, and cost benefit to Kubernetes on Azure. Per iniziare a usare tali funzionalità in anteprima, vedere AKS documentation (Documentazione del servizio contenitore di Azure).Visit the AKS documentation to start working with these preview features.

In questa guida introduttiva viene distribuito un cluster Kubernetes usando l'interfaccia della riga di comando di Azure.In this quick start, a Kubernetes cluster is deployed using the Azure CLI. Un'applicazione multicontenitore costituita dal front-end Web e da un'istanza di Redis viene quindi distribuita ed eseguita nel cluster.A multi-container application consisting of web front end and a Redis instance is then deployed and run on the cluster. Al termine, l'applicazione è accessibile tramite Internet.Once completed, the application is accessible over the internet.

L'applicazione di esempio usata in questo documento è scritta in Python.The example application used in this document is written in Python. I concetti e i passaggi descritti possono essere usati per distribuire un'immagine del contenitore in un cluster Kubernetes.The concepts and steps detailed here can be used to deploy any container image into a Kubernetes cluster. Il codice, Dockerfile, e il file manifesto di Kubernetes creato in precedenza per questo progetto sono disponibili in GitHub.The code, Dockerfile, and pre-created Kubernetes manifest files related to this project are available on GitHub.

Immagine del passaggio ad Azure Vote

Questa guida introduttiva presuppone una conoscenza di base dei concetti relativi a Kubernetes. Per informazioni dettagliate su Kubernetes, vedere la documentazione di Kubernetes.This quick start assumes a basic understanding of Kubernetes concepts, for detailed information on Kubernetes see the Kubernetes documentation.

Se non si ha una sottoscrizione di Azure, creare un account gratuito prima di iniziare.If you don't have an Azure subscription, create a free account before you begin.

Avviare Azure Cloud ShellLaunch Azure Cloud Shell

Azure Cloud Shell è una shell Bash gratuita che può essere eseguita direttamente nel portale di Azure.The Azure Cloud Shell is a free Bash shell that you can run directly within the Azure portal. Include l'interfaccia della riga di comando di Azure preinstallata e configurata per l'uso con l'account.It has the Azure CLI preinstalled and configured to use with your account. Fare clic sul pulsante Cloud Shell nel menu nel riquadro in alto a destra nel portale di Azure.Click the Cloud Shell button on the menu in the upper-right of the Azure portal.

Cloud ShellCloud Shell

Il pulsante avvia una shell interattiva che è possibile usare per eseguire i passaggi di questo argomento:The button launches an interactive shell that you can use to run the steps in this topic:

Screenshot che mostra la finestra di Cloud Shell nel portaleScreenshot showing the Cloud Shell window in the portal

Se si sceglie di installare e usare l'interfaccia della riga di comando in locale, per questa guida introduttiva è necessario eseguire la versione 2.0.4 o successiva dell'interfaccia della riga di comando di Azure.If you choose to install and use the CLI locally, this quickstart requires that you are running the Azure CLI version 2.0.4 or later. Eseguire az --version per trovare la versione.Run az --version to find the version. Se è necessario eseguire l'installazione o l'aggiornamento, vedere Installare l'interfaccia della riga di comando di Azure 2.0.If you need to install or upgrade, see Install Azure CLI 2.0.

Creare un gruppo di risorseCreate a resource group

Creare un gruppo di risorse con il comando az group create.Create a resource group with the az group create command. Un gruppo di risorse di Azure è un gruppo logico in cui le risorse di Azure vengono distribuite e gestite.An Azure resource group is a logical group in which Azure resources are deployed and managed.

L'esempio seguente crea un gruppo di risorse denominato myResourceGroup nella località westeurope.The following example creates a resource group named myResourceGroup in the westeurope location.

az group create --name myResourceGroup --location westeurope

Output:Output:

{
  "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup",
  "location": "westeurope",
  "managedBy": null,
  "name": "myResourceGroup",
  "properties": {
    "provisioningState": "Succeeded"
  },
  "tags": null
}

Creare un cluster KubernetesCreate Kubernetes cluster

Creare un cluster Kubernetes nel servizio contenitore di Azure con il comando az acs create.Create a Kubernetes cluster in Azure Container Service with the az acs create command. L'esempio seguente crea un cluster denominato myK8sCluster con un nodo master Linux e tre nodi agente Linux.The following example creates a cluster named myK8sCluster with one Linux master node and three Linux agent nodes.

az acs create --orchestrator-type kubernetes --resource-group myResourceGroup --name myK8sCluster --generate-ssh-keys

In alcuni casi la sottoscrizione di Azure ha accesso limitato alle risorse di Azure, ad esempio con una versione di valutazione gratuita limitata.In some cases, such as with a limited trial, an Azure subscription has limited access to Azure resources. Se la distribuzione non riesce a causa di core disponibili limitati, ridurre il numero di agenti predefinito aggiungendo --agent-count 1 al comando az acs create.If the deployment fails due to limited available cores, reduce the default agent count by adding --agent-count 1 to the az acs create command.

Dopo alcuni minuti, il comando viene completato e restituisce le informazioni in formato json sul cluster.After several minutes, the command completes and returns json formatted information about the cluster.

Connettersi al clusterConnect to the cluster

Per gestire un cluster Kubernetes, usare kubectl, il client da riga di comando di Kubernetes.To manage a Kubernetes cluster, use kubectl, the Kubernetes command-line client.

Se si usa Azure CloudShell, kubectl è già installato.If you're using Azure CloudShell, kubectl is already installed. Se lo si vuole installare in locale, è possibile usare il comando az acs kubernetes install-cli.If you want to install it locally, you can use the az acs kubernetes install-cli command.

Per configurare kubectl per connettersi al cluster Kubernetes, eseguire il comando az acs kubernetes get-credentials.To configure kubectl to connect to your Kubernetes cluster, run the az acs kubernetes get-credentials command. Con questo passaggio si scaricano le credenziali e si configura l'interfaccia della riga di comando di Kubernetes per il loro uso.This step downloads credentials and configures the Kubernetes CLI to use them.

az acs kubernetes get-credentials --resource-group=myResourceGroup --name=myK8sCluster

Per verificare la connessione al cluster, usare il comando kubectl get per restituire un elenco dei nodi del cluster.To verify the connection to your cluster, use the kubectl get command to return a list of the cluster nodes.

kubectl get nodes

Output:Output:

NAME                    STATUS                     AGE       VERSION
k8s-agent-14ad53a1-0    Ready                      10m       v1.6.6
k8s-agent-14ad53a1-1    Ready                      10m       v1.6.6
k8s-agent-14ad53a1-2    Ready                      10m       v1.6.6
k8s-master-14ad53a1-0   Ready,SchedulingDisabled   10m       v1.6.6

Eseguire l'applicazioneRun the application

Un file manifesto di Kubernetes definisce uno stato desiderato per il cluster, incluse le immagini del contenitore da eseguire.A Kubernetes manifest file defines a desired state for the cluster, including what container images should be running. Per questo esempio, viene usato un manifesto per creare tutti gli oggetti necessari per eseguire l'applicazione Azure Vote.For this example, a manifest is used to create all objects needed to run the Azure Vote application.

Creare un file denominato azure-vote.yml e copiarvi il codice YAML seguente.Create a file named azure-vote.yml and copy into it the following YAML. Se si usa Azure Cloud Shell, questo file può essere creato usando vi o Nano come se si usasse un sistema virtuale o fisico.If you are working in Azure Cloud Shell, this file can be created using vi or Nano as if working on a virtual or physical system.

apiVersion: apps/v1beta1
kind: Deployment
metadata:
  name: azure-vote-back
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: azure-vote-back
    spec:
      containers:
      - name: azure-vote-back
        image: redis
        ports:
        - containerPort: 6379
          name: redis
---
apiVersion: v1
kind: Service
metadata:
  name: azure-vote-back
spec:
  ports:
  - port: 6379
  selector:
    app: azure-vote-back
---
apiVersion: apps/v1beta1
kind: Deployment
metadata:
  name: azure-vote-front
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: azure-vote-front
    spec:
      containers:
      - name: azure-vote-front
        image: microsoft/azure-vote-front:redis-v1
        ports:
        - containerPort: 80
        env:
        - name: REDIS
          value: "azure-vote-back"
---
apiVersion: v1
kind: Service
metadata:
  name: azure-vote-front
spec:
  type: LoadBalancer
  ports:
  - port: 80
  selector:
    app: azure-vote-front

Usare il comando kubectl create per eseguire l'applicazione.Use the kubectl create command to run the application.

kubectl create -f azure-vote.yml

Output:Output:

deployment "azure-vote-back" created
service "azure-vote-back" created
deployment "azure-vote-front" created
service "azure-vote-front" created

Test dell'applicazioneTest the application

Mentre l'applicazione viene eseguita, viene creato un servizio di Kubernetes che espone il front-end dell'applicazione a Internet.As the application is run, a Kubernetes service is created that exposes the application front end to the internet. Il processo potrebbe richiedere alcuni minuti.This process can take a few minutes to complete.

Per monitorare lo stato, usare il comando kubectl get service con l'argomento --watch.To monitor progress, use the kubectl get service command with the --watch argument.

kubectl get service azure-vote-front --watch

EXTERNAL-IP per il servizio azure-vote-front inizialmente viene visualizzato come pending.Initially the EXTERNAL-IP for the azure-vote-front service appears as pending. Dopo che l'indirizzo EXTERNAL-IP passa da pending a un indirizzo IP, usare CTRL-C per arrestare il processo kubectl watch.Once the EXTERNAL-IP address has changed from pending to an IP address, use CTRL-C to stop the kubectl watch process.

azure-vote-front   10.0.34.242   <pending>     80:30676/TCP   7s
azure-vote-front   10.0.34.242   52.179.23.131   80:30676/TCP   2m

È ora possibile passare all'indirizzo IP esterno per visualizzare l'app Azure Vote.You can now browse to the external IP address to see the Azure Vote App.

Immagine del passaggio ad Azure Vote

Eliminare il clusterDelete cluster

Quando il cluster non è più necessario, è possibile usare il comando az group delete per rimuovere il gruppo di risorse, il servizio contenitore e tutte le risorse correlate.When the cluster is no longer needed, you can use the az group delete command to remove the resource group, container service, and all related resources.

az group delete --name myResourceGroup --yes --no-wait

Ottenere il codiceGet the code

In questa guida introduttiva sono state usate immagini del contenitore già creato per creare una distribuzione di Kubernetes.In this quick start, pre-created container images have been used to create a Kubernetes deployment. Il codice dell'applicazione correlato, Dockerfile, e il file manifesto di Kubernetes sono disponibili su GitHub.The related application code, Dockerfile, and Kubernetes manifest file are available on GitHub.

https://github.com/Azure-Samples/azure-voting-app-redishttps://github.com/Azure-Samples/azure-voting-app-redis

Passaggi successiviNext steps

In questa guida introduttiva è stato distribuito un cluster Kubernetes in cui è stata quindi distribuita un'applicazione multicontenitore.In this quick start, you deployed a Kubernetes cluster and deployed a multi-container application to it.

Per altre informazioni sul servizio contenitore di Azure e l'analisi di un codice completo per la distribuzione dell'esempio, passare all'esercitazione sul cluster Kubernetes.To learn more about Azure Container Service, and walk through a complete code to deployment example, continue to the Kubernetes cluster tutorial.