Stabilire una connessione remota a un cluster Kubernetes, DC/OS o Docker SwarmMake a remote connection to a Kubernetes, DC/OS, or Docker Swarm cluster

Dopo aver creato un cluster del servizio contenitore di Azure è necessario connettersi al cluster per distribuire e gestire i carichi di lavoro.After creating an Azure Container Service cluster, you need to connect to the cluster to deploy and manage workloads. Questo articolo descrive come connettersi alla VM master del cluster da un computer remoto.This article describes how to connect to the master VM of the cluster from a remote computer.

I cluster Kubernetes, DC/OS e Docker Swarm forniscono localmente endpoint HTTP.The Kubernetes, DC/OS, and Docker Swarm clusters provide HTTP endpoints locally. Per Kubernetes, questo endpoint viene esposto in modo sicuro in Internet ed è possibile accedervi eseguendo lo strumento da riga di comando kubectl da qualsiasi computer connesso a Internet.For Kubernetes, this endpoint is securely exposed on the internet, and you can access it by running the kubectl command-line tool from any internet-connected machine.

Per DC/OS e Docker Swarm, è consigliabile creare un tunnel Secure Shell (SSH) dal computer locale al sistema di gestione cluster.For DC/OS and Docker Swarm, we recommend that you create a secure shell (SSH) tunnel from your local computer to the cluster management system. Dopo la creazione del tunnel, è possibile eseguire comandi che usano gli endpoint HTTP e visualizzare l'interfaccia Web dell'agente di orchestrazione (se disponibile) dal sistema locale.After the tunnel is established, you can run commands which use the HTTP endpoints and view the orchestrator's web interface (if available) from your local system.

PrerequisitiPrerequisites

  • Un cluster Kubernetes, DC/OS o Docker Swarm distribuito nel servizio contenitore di Azure.A Kubernetes, DC/OS, or Docker Swarm cluster deployed in Azure Container Service.
  • File di chiave privata SSH RSA, corrispondente alla chiave pubblica aggiunta al cluster durante la distribuzione.SSH RSA private key file, corresponding to the public key added to the cluster during deployment. Questi comandi presuppongono che la chiave privata SSH si trovi in $HOME/.ssh/id_rsa nel computer.These commands assume that the private SSH key is in $HOME/.ssh/id_rsa on your computer. Per altre informazioni, vedere le istruzioni per macOS e Linux o per Windows.See these instructions for macOS and Linux or Windows for more information. Se la connessione SSH non funziona, potrebbe essere necessario reimpostare le chiavi SSH.If the SSH connection isn't working, you may need to reset your SSH keys.

Connettersi a un cluster KubernetesConnect to a Kubernetes cluster

Seguire questi passaggi per installare e configurare kubectl nel computer.Follow these steps to install and configure kubectl on your computer.

Nota

In Linux o macOS potrebbe essere necessario eseguire i comandi in questa sezione usando sudo.On Linux or macOS, you might need to run the commands in this section using sudo.

Installare kubectlInstall kubectl

Un modo per installare questo strumento è usare il comando az acs kubernetes install-cli dell'interfaccia della riga di comando di Azure 2.0.One way to install this tool is to use the az acs kubernetes install-cli Azure CLI 2.0 command. Per eseguire questo comando, assicurarsi di avere installato la versione più recente dell'interfaccia della riga di comando di Azure 2.0 e di avere effettuato l'accesso a un account Azure (az login).To run this command, make sure that you installed the latest Azure CLI 2.0 and logged in to an Azure account (az login).

# Linux or macOS
az acs kubernetes install-cli [--install-location=/some/directory/kubectl]

# Windows
az acs kubernetes install-cli [--install-location=C:\some\directory\kubectl.exe]

In alternativa, è possibile scaricare il client kubectl più recente direttamente dalla pagina delle versioni di Kubernetes.Alternatively, you can download the latest kubectl client directly from the Kubernetes releases page. Per altre informazioni, vedere Installing and Setting up kubectl (Installazione e configurazione di kubectl).For more information, see Installing and Setting up kubectl.

Scaricare le credenziali del clusterDownload cluster credentials

Dopo aver installato kubectl, è necessario copiare le credenziali del cluster nel computer.Once you have kubectl installed, you need to copy the cluster credentials to your machine. Un modo per ottenere le credenziali è con il comando az acs kubernetes get-credentials.One way to do get the credentials is with the az acs kubernetes get-credentials command. Passare il nome del gruppo di risorse e il nome della risorsa del servizio contenitore:Pass the name of the resource group and the name of the container service resource:

az acs kubernetes get-credentials --resource-group=<cluster-resource-group> --name=<cluster-name>

Questo comando scarica le credenziali del cluster in $HOME/.kube/config dove si prevede che sia disponibile kubectl.This command downloads the cluster credentials to $HOME/.kube/config, where kubectl expects it to be located.

In alternativa è possibile usare scp per copiare in modo sicuro i file da $HOME/.kube/config nella VM master al computer locale.Alternatively, you can use scp to securely copy the file from $HOME/.kube/config on the master VM to your local machine. Ad esempio:For example:

mkdir $HOME/.kube
scp azureuser@<master-dns-name>:.kube/config $HOME/.kube/config

Se si esegue questa operazione in Windows, è possibile usare Bash su Ubuntu in Windows, il client di copia file sicura PuTTY o uno strumento simile.If you are on Windows, you can use Bash on Ubuntu on Windows, the PuTTy secure file copy client, or a similar tool.

Usare kubectlUse kubectl

Dopo aver configurato kubectl, testare la connessione elencando i nodi nel cluster:Once you have kubectl configured, test the connection by listing the nodes in your cluster:

kubectl get nodes

È possibile provare altri comandi kubectl.You can try other kubectl commands. È ad esempio possibile visualizzare il dashboard Kubernetes.For example, you can view the Kubernetes Dashboard. Eseguire prima un proxy per il server API Kubernetes:First, run a proxy to the Kubernetes API server:

kubectl proxy

L'interfaccia utente di Kubernetes è ora disponibile all'indirizzo: http://localhost:8001/ui.The Kubernetes UI is now available at: http://localhost:8001/ui.

Per altre informazioni, vedere la Guida rapida di Kubernetes.For more information, see the Kubernetes quick start.

Connettersi a un cluster DC/OS o SwarmConnect to a DC/OS or Swarm cluster

Per usare i cluster DC/OS e Docker Swarm distribuiti dal servizio contenitore di Azure, seguire queste istruzioni per creare un tunnel SSH dal sistema Linux, macOS o Windows locale.To use the DC/OS and Docker Swarm clusters deployed by Azure Container Service, follow these instructions to create a SSH tunnel from your local Linux, macOS, or Windows system.

Nota

Queste istruzioni sono incentrate sul tunneling del traffico TCP su SSH.These instructions focus on tunneling TCP traffic over SSH. È anche possibile avviare una sessione SSH interattiva con uno dei sistemi interni di gestione dei cluster, ma questa opzione non è consigliabile.You can also start an interactive SSH session with one of the internal cluster management systems, but we don't recommend this. L'intervento diretto su un sistema interno comporta il rischio di modifiche accidentali alla configurazione.Working directly on an internal system risks inadvertent configuration changes.

Creare un tunnel SSH in Linux o macOSCreate an SSH tunnel on Linux or macOS

Quando si crea un tunnel SSH in Linux o macOS, prima di tutto è necessario individuare il nome DNS pubblico dei master con carico bilanciato.The first thing that you do when you create an SSH tunnel on Linux or macOS is to locate the public DNS name of the load-balanced masters. A tale scopo, seguire questa procedura:Follow these steps:

  1. Nel portale di Azure passare al gruppo di risorse che contiene il cluster del servizio contenitore.In the Azure portal, browse to the resource group containing your container service cluster. Espandere il gruppo di risorse in modo che vengano visualizzate tutte le risorse.Expand the resource group so that each resource is displayed.

  2. Fare clic sulla risorsa del servizio contenitore e quindi su Panoramica.Click the Container service resource, and click Overview. Viene visualizzato il Nome di dominio completo master del cluster in Informazioni di base.The Master FQDN of the cluster appears under Essentials. Salvare questo nome per usarlo in seguito.Save this name for later use.

    Nome DNS pubblico

    In alternativa, eseguire il comando az acs show nel servizio contenitore.Alternatively, run the az acs show command on your container service. Cercare la proprietà Master Profile:fqdn nell'output del comando.Look for the Master Profile:fqdn property in the command output.

  3. Aprire ora una shell ed eseguire il comando ssh specificando i valori seguenti:Now open a shell and run the ssh command by specifying the following values:

    LOCAL_PORT è la porta TCP sul lato server del tunnel a cui connettersi.LOCAL_PORT is the TCP port on the service side of the tunnel to connect to. Per Swarm, impostare questo valore su 2375.For Swarm, set this to 2375. Per DC/OS, impostare questo valore su 80.For DC/OS, set this to 80. REMOTE_PORT è la porta dell'endpoint da esporre.REMOTE_PORT is the port of the endpoint that you want to expose. Per Swarm, usare la porta 2375.For Swarm, use port 2375. Per DC/OS usare la porta 80.For DC/OS, use port 80.
    USERNAME è il nome utente specificato al momento della distribuzione del cluster.USERNAME is the user name that was provided when you deployed the cluster.
    DNSPREFIX è il prefisso DNS specificato al momento della distribuzione del cluster.DNSPREFIX is the DNS prefix that you provided when you deployed the cluster.
    REGION è l'area in cui si trova il gruppo di risorse.REGION is the region in which your resource group is located.
    PATH_TO_PRIVATE_KEY [FACOLTATIVO] è il percorso della chiave privata che corrisponde alla chiave pubblica specificata durante la creazione del cluster.PATH_TO_PRIVATE_KEY [OPTIONAL] is the path to the private key that corresponds to the public key you provided when you created the cluster. Usare questa opzione con il flag -i.Use this option with the -i flag.

    ssh -fNL LOCAL_PORT:localhost:REMOTE_PORT -p 2200 [USERNAME]@[DNSPREFIX]mgmt.[REGION].cloudapp.azure.com
    

    Nota

    La porta di connessione SSH è la 2200, non la porta 22 standard.The SSH connection port is 2200 and not the standard port 22. In un cluster con più di una VM master, si tratta della porta di connessione per la prima VM master.In a cluster with more than one master VM, this is the connection port to the first master VM.

    Il comando viene completato senza output.The command returns without output.

Vedere gli esempi per DC/OS e Swarm nelle sezioni seguenti.See the examples for DC/OS and Swarm in the following sections.

Tunnel DC/OSDC/OS tunnel

Per aprire un tunnel per endpoint DC/OS, eseguire un comando simile al seguente:To open a tunnel for DC/OS endpoints, run a command like the following:

sudo ssh -fNL 80:localhost:80 -p 2200 azureuser@acsexamplemgmt.japaneast.cloudapp.azure.com 

Nota

Verificare che non sia presente un altro processo locale che associa la porta 80.Ensure that you do not have another local process that binds port 80. Se necessario, è possibile specificare una porta locale diversa dalla porta 80, ad esempio la porta 8080.If necessary, you can specify a local port other than port 80, such as port 8080. È tuttavia possibile che alcuni collegamenti dell'interfaccia utente Web non funzionino quando si usa questa porta.However, some web UI links might not work when you use this port.

È ora possibile accedere agli endpoint DC/OS dal sistema locale tramite gli URL (presupponendo che la porta locale sia 80):You can now access the DC/OS endpoints from your local system through the following URLs (assuming local port 80):

  • Controller di dominio/sistema operativo: http://localhost:80/DC/OS: http://localhost:80/
  • Marathon: http://localhost:80/marathonMarathon: http://localhost:80/marathon
  • Mesos: http://localhost:80/mesosMesos: http://localhost:80/mesos

In modo analogo, è possibile raggiungere le API REST per ogni applicazione attraverso questo tunnel.Similarly, you can reach the rest APIs for each application through this tunnel.

Tunnel SwarmSwarm tunnel

Per aprire un tunnel per gli endpoint Swarm, eseguire un comando simile al seguente:To open a tunnel to the Swarm endpoint, run a command like the following:

ssh -fNL 2375:localhost:2375 -p 2200 azureuser@acsexamplemgmt.japaneast.cloudapp.azure.com

Nota

Verificare che non sia presente un altro processo locale che associa la porta 2375.Ensure that you do not have another local process that binds port 2375. Se il daemon Docker viene eseguito in locale, ad esempio, per impostazione predefinita usa la porta 2375.For example, if you are running the Docker daemon locally, it's set by default to use port 2375. Se necessario, è possibile specificare una porta locale diversa dalla porta 2375.If necessary, you can specify a local port other than port 2375.

È ora possibile accedere al cluster Docker Swarm usando l'interfaccia della riga di comando di Docker nel sistema locale.Now you can access the Docker Swarm cluster using the Docker command-line interface (Docker CLI) on your local system. Per istruzioni sull'installazione, vedere Install Docker (Installare Docker).For installation instructions, see Install Docker.

Impostare la variabile di ambiente DOCKER_HOST sulla porta locale configurata per il tunnel.Set your DOCKER_HOST environment variable to the local port you configured for the tunnel.

export DOCKER_HOST=:2375

Eseguire i comandi di Docker che effettuano il tunneling al cluster Docker Swarm,Run Docker commands that tunnel to the Docker Swarm cluster. ad esempio:For example:

docker info

Creare un tunnel SSH in WindowsCreate an SSH tunnel on Windows

Esistono più opzioni per creare i tunnel SSH in Windows.There are multiple options for creating SSH tunnels on Windows. Se si esegue Bash su Ubuntu in Windows o uno strumento simile, è possibile seguire le istruzioni relative al tunneling SSH riportate più indietro in questo articolo per macOS e Linux.If you are running Bash on Ubuntu on Windows or a similar tool, you can follow the SSH tunneling instructions shown earlier in this article for macOS and Linux. Come alternativa in Windows, questa sezione descrive come usare PuTTY per creare il tunnel.As an alternative on Windows, this section describes how to use PuTTY to create the tunnel.

  1. Scaricare PuTTY nel sistema Windows.Download PuTTY to your Windows system.

  2. Eseguire l'applicazione.Run the application.

  3. Immettere un nome host che include il nome utente dell'amministratore cluster e il nome DNS pubblico del primo master nel cluster.Enter a host name that is comprised of the cluster admin user name and the public DNS name of the first master in the cluster. Il nome host è simile a azureuser@PublicDNSName.The Host Name looks similar to azureuser@PublicDNSName. Immettere 2200 nel campo Port.Enter 2200 for the Port.

    Configurazione PuTTY 1

  4. Selezionare SSH > Auth. Aggiungere un percorso al file di chiave privata (formato ppk) per l'autenticazione.Select SSH > Auth. Add a path to your private key file (.ppk format) for authentication. È possibile usare uno strumento come PuTTYgen per generare questo file dalla chiave SSH usata per creare il cluster.You can use a tool such as PuTTYgen to generate this file from the SSH key used to create the cluster.

    Configurazione PuTTY 2

  5. Selezionare SSH > Tunnels (Tunnel) e configurare le porte inoltrate seguenti:Select SSH > Tunnels and configure the following forwarded ports:

    • Source Port (Porta di origine): usare 80 per DC/OS o 2375 per Swarm.Source Port: Use 80 for DC/OS or 2375 for Swarm.
    • Destination: usare localhost:80 per il controller di dominio/sistema operativo o localhost:2375 per Swarm.Destination: Use localhost:80 for DC/OS or localhost:2375 for Swarm.

      L'esempio seguente è configurato per DC/OS, ma avrà un aspetto simile anche per Docker Swarm.The following example is configured for DC/OS, but will look similar for Docker Swarm.

      Nota

      La porta 80 non deve essere usata quando si crea il tunnel.Port 80 must not be in use when you create this tunnel.

      Configurazione PuTTY 3

  6. Al termine, fare clic su Session > Save (Sessione > Salva) per salvare la configurazione di connessione.When you're finished, click Session > Save to save the connection configuration.

  7. Fare clic su Open (Apri) per connettersi alla sessione PuTTY.To connect to the PuTTY session, click Open. Dopo la connessione, è possibile visualizzare la configurazione della porta nel registro eventi di PuTTY.When you connect, you can see the port configuration in the PuTTY event log.

    Log eventi di PuTTY

Dopo aver configurato il tunnel per DC/OS, è possibile accedere agli endpoint correlati all'indirizzo:After you've configured the tunnel for DC/OS, you can access the related endpoints at:

  • Controller di dominio/sistema operativo: http://localhost/DC/OS: http://localhost/
  • Marathon: http://localhost/marathonMarathon: http://localhost/marathon
  • Mesos: http://localhost/mesosMesos: http://localhost/mesos

Dopo aver configurato il tunnel per Docker Swarm, aprire le impostazioni di Windows per configurare una variabile di ambiente di sistema denominata DOCKER_HOST con un valore di :2375.After you've configured the tunnel for Docker Swarm, open your Windows settings to configure a system environment variable named DOCKER_HOST with a value of :2375. Sarà quindi possibile accedere al cluster Swarm dall'interfaccia della riga di comando di Docker.Then, you can access the Swarm cluster through the Docker CLI.

Passaggi successiviNext steps

Distribuire e gestire contenitori nel cluster:Deploy and manage containers in your cluster: