Bereitstellen von Containerinstanzen in einem virtuellen Azure-Netzwerk
Das virtuelle Azure-Netzwerk (Azure Virtual Network) stellt ein sicheres, privates Netzwerk für Ihre Azure- und lokalen Ressourcen bereit. Durch die Bereitstellung von Containergruppen in einem virtuellen Azure-Netzwerk können Ihre Container sicher mit anderen Ressourcen im virtuellen Netzwerk kommunizieren.
In diesem Artikel wird gezeigt, wie Sie den Befehl az container create in der Azure CLI verwenden, um Containergruppen entweder in einem neuen oder in einem vorhandenen virtuellen Netzwerk bereitzustellen.
Wichtig
- Subnetze müssen vor der Verwendung eines virtuellen Netzwerks delegiert werden.
- Bevor Sie Containergruppen in virtuellen Netzwerken bereitstellen, sollten Sie zuerst die Einschränkung überprüfen. Netzwerkszenarien und Einschränkungen finden Sie unter Virtuelle Netzwerkszenarien und -ressourcen für Azure Container Instances.
- Die Bereitstellung von Containergruppen in einem virtuellen Netzwerk ist in den meisten Regionen, in denen Azure Container Instances verfügbar ist, für Linux- und Windows-Container allgemein verfügbar. Weitere Informationen finden Sie unter verfügbare Regionen.
Wichtig
Netzwerkprofile sind ab der API-Version 2021-07-01
veraltet. Wenn Sie diese oder eine neuere Version verwenden, ignorieren Sie alle Schritte und Aktionen, die sich auf Netzwerkprofile beziehen.
Beispiele in diesem Artikel sind für die Ausführung in der Bash-Shell formatiert. Wenn Sie eine andere Shell, wie PowerShell oder die Eingabeaufforderung bevorzugen, passen Sie die Zeilenfortsetzungszeichen entsprechend an.
Voraussetzungen
Sie benötigen eine Ressourcengruppe, um alle in den folgenden Beispielen verwendeten Ressourcen zu verwalten. Verwenden Sie zum Erstellen einer Ressourcengruppe az group create:
az group create --name myResourceGroup --location eastus
Bereitstellen von Containergruppen in einem neuen virtuellen Netzwerk
Hinweis
Wenn Sie den Subnetz-IP-Adressbereich /29 verwenden, um nur 3 IP-Adressen zu haben, wird empfohlen, immer einen Bereich darüber (nie darunter) zu verwenden. Verwenden Sie z. B. den Subnetz-IP-Adressbereich /28, damit Sie pro Containergruppe über mindestens einen IP-Puffer verfügen. Auf diese Weise können Sie vermeiden, dass Container nicht mehr reagieren, nicht starten oder nicht angehalten werden können.
Geben Sie beim Ausführen des Befehls az container create Folgendes an, um eine Bereitstellung in ein neues virtuelles Netzwerk durchzuführen und die Netzwerkressourcen von Azure erstellen zu lassen:
- Name des virtuellen Netzwerks
- Adresspräfix des virtuellen Netzwerks im CIDR-Format
- Subnetzname
- Adresspräfix des Subnetzes im CIDR-Format
Das virtuelle Netzwerk und die Adresspräfixe für das Subnetz geben die Adressräume für das virtuelle Netzwerk bzw. das Subnetz an. Diese Werte werden in CIDR-Schreibweise (Classless Inter-Domain Routing) dargestellt, z.B. 10.0.0.0/16
. Weitere Informationen zum Arbeiten mit Subnetzen finden Sie unter Hinzufügen, Ändern oder Löschen von Subnetzen virtueller Netzwerke.
Nachdem Sie Ihre erste Containergruppe mit dieser Methode bereitgestellt haben, können Sie Bereitstellungen für das gleiche Subnetz vornehmen, indem Sie die Namen des virtuellen Netzwerks und des Subnetzes oder Netzwerkprofil angeben, das Azure automatisch für Sie erstellt. Da Azure das Subnetz an Azure Container Instances delegiert, können Sie nur Containergruppen für das Subnetz bereitstellen.
Beispiel
Der folgende Befehl az container create gibt Einstellungen für ein neues virtuelles Netzwerk und Subnetz an. Geben Sie den Namen einer Ressourcengruppe an, die in einer Region erstellt wurde, in der Containergruppenbereitstellungen in einem virtuellen Netzwerk verfügbar sind. Dieser Befehl stellt den öffentlichen Microsoft-Container aci-helloworld bereit, der einen kleinen Node.js-Webserver ausführt. Dieser verarbeitet Anforderungen von einer statischen Webseite. Im nächsten Abschnitt stellen Sie eine zweite Containergruppe im gleichen Subnetz bereit und testen die Kommunikation zwischen den beiden Containerinstanzen.
az container create \
--name appcontainer \
--resource-group myResourceGroup \
--image mcr.microsoft.com/azuredocs/aci-helloworld \
--vnet aci-vnet \
--vnet-address-prefix 10.0.0.0/16 \
--subnet aci-subnet \
--subnet-address-prefix 10.0.0.0/24
Wenn Sie mit dieser Methode Bereitstellungen in einem neuen virtuellen Netzwerk ausführen, kann es einige Minuten dauern, bis die Netzwerkressourcen im Zuge der Bereitstellung erstellt werden. Nach der Erstbereitstellung werden weitere Bereitstellungen von Containergruppen im selben Subnetz schneller ausgeführt.
Bereitstellen von Containergruppen in einem vorhandenen virtuellen Netzwerk
Um eine Containergruppe in einem vorhandenen virtuellen Netzwerk bereitzustellen, gehen Sie wie folgt vor:
- Erstellen Sie ein Subnetz innerhalb Ihres vorhandenen virtuellen Netzwerks, verwenden Sie ein vorhandenes Subnetz, in dem bereits eine Containergruppe bereitgestellt ist, oder verwenden Sie ein vorhandenes Subnetz, aus dem alle anderen Ressourcen und die Konfiguration entfernt wurden. Das Subnetz, das Sie für Containergruppen verwenden, darf nur Containergruppen enthalten. Bevor Sie eine Containergruppe in einem Subnetz bereitstellen, müssen Sie das Subnetz explizit delegieren. Nach erfolgter Delegierung kann das Subnetz nur für Containergruppen verwendet werden. Wenn Sie versuchen, andere Ressourcen als Containergruppen für ein delegiertes Subnetz bereitzustellen, tritt ein Fehler beim Vorgang auf.
- Stellen Sie eine Containergruppe mit az container create bereit, und geben Sie eine der folgenden Informationen an:
- Name des virtuellen Netzwerks und des Subnetzes
- VNET-Ressourcen-ID und Subnetzressourcen-ID, um die Verwendung eines virtuellen Netzwerks über eine andere Ressourcengruppe zu ermöglichen
Beispiel
Im folgenden Beispiel wird eine zweite Containergruppe im selben zuvor erstellten Subnetz bereitgestellt und die Kommunikation zwischen den beiden Containerinstanzen überprüft.
Rufen Sie zuerst die IP-Adresse der ersten Containergruppe ab, die Sie bereitgestellt haben, d.h. von appcontainer:
az container show --resource-group myResourceGroup \
--name appcontainer \
--query ipAddress.ip --output tsv
Die Ausgabe zeigt die IP-Adresse der Containergruppe im privaten Subnetz an. Beispiel:
10.0.0.4
Legen Sie jetzt CONTAINER_GROUP_IP
auf die IP-Adresse fest, die Sie mit dem Befehl az container show
abgerufen haben, und führen Sie den folgenden az container create
-Befehl aus. Der zweite Container commchecker führt ein Alpine Linux-basiertes Image sowie wget
für die erste private Subnetz-IP-Adresse der Containergruppe aus.
CONTAINER_GROUP_IP=<container-group-IP-address>
az container create \
--resource-group myResourceGroup \
--name commchecker \
--image alpine:3.5 \
--command-line "wget $CONTAINER_GROUP_IP" \
--restart-policy never \
--vnet aci-vnet \
--subnet aci-subnet
Nach der zweiten Containerbereitstellung werden die jeweiligen Protokolle abgerufen, sodass Sie die Ausgabe des Befehls wget
, der ausgeführt wurde, sehen können:
az container logs --resource-group myResourceGroup --name commchecker
Wenn der zweite Container erfolgreich eine Kommunikation mit dem ersten Container aufgebaut hat, sieht die Ausgabe ähnlich wie im folgendem Beispiel aus:
Connecting to 10.0.0.4 (10.0.0.4:80)
index.html 100% |*******************************| 1663 0:00:00 ETA
Die Protokollausgabe sollte zeigen, dass wget
eine Verbindung herstellen und die Indexdatei aus dem ersten Container mithilfe der privaten IP-Adresse im lokalen Subnetz herunterladen konnte. Der Netzwerkdatenverkehr zwischen den zwei Containergruppen fand innerhalb des virtuellen Netzwerks statt.
Beispiel – YAML
Sie können auch mithilfe einer YAML-Datei, einer Resource Manager-Vorlage oder einer anderen programmgesteuerten Methode wie dem Python-SKD eine Containergruppe in einem vorhandenen virtuellen Netzwerk bereitstellen.
Wenn Sie z. B. eine YAML-Datei verwenden, können Sie sie in einem virtuellen Netzwerk mit einem Subnetz bereitstellen, das an Azure Container Instances delegiert ist. Geben Sie die folgenden Eigenschaften an:
ipAddress
: Die privaten IP-Adresseinstellungen für die Containergruppe.ports
: Die zu öffnenden Ports, sofern vorhanden.protocol
: Das Protokoll (TCP oder UDP) für den geöffneten Port.
subnetIds
: Die Ressourcen-IDs der Subnetze, die bereitgestellt werden sollenid
: Die Ressourcen-ID des Subnetzesname
: Der Name des Subnetzes
Dieser YAML-Code erstellt eine Containergruppe mit dem Namen appcontaineryaml in Ihrem virtuellen Netzwerk.
apiVersion: '2021-07-01'
location: westus
name: appcontaineryaml
properties:
containers:
- name: appcontaineryaml
properties:
image: mcr.microsoft.com/azuredocs/aci-helloworld
ports:
- port: 80
protocol: TCP
resources:
requests:
cpu: 1.0
memoryInGB: 1.5
ipAddress:
type: Private
ports:
- protocol: tcp
port: '80'
osType: Linux
restartPolicy: Always
subnetIds:
- id: <subnet-id>
name: default
tags: null
type: Microsoft.ContainerInstance/containerGroups
Stellen Sie die Containergruppe mit dem Befehl az container create bereit, wobei Sie den YAML-Dateinamen als Parameter --file
angeben:
az container create --resource-group myResourceGroup \
--file vnet-deploy-aci.yaml
Führen Sie den Befehl az container show aus, sobald die Bereitstellung abgeschlossen ist, um den Status anzuzeigen. Beispielausgabe:
Name ResourceGroup Status Image IP:ports Network CPU/Memory OsType Location
---------------- --------------- -------- ------------------------------------------ ----------- --------- --------------- -------- ----------
appcontaineryaml myResourceGroup Running mcr.microsoft.com/azuredocs/aci-helloworld 10.0.0.5:80 Private 1.0 core/1.5 gb Linux westus
Bereinigen von Ressourcen
Löschen von Containerinstanzen
Wenn Sie die von Ihnen erstellten Containerinstanzen nicht mehr benötigen, löschen Sie sie mit den folgenden Befehlen:
az container delete --resource-group myResourceGroup --name appcontainer -y
az container delete --resource-group myResourceGroup --name commchecker -y
az container delete --resource-group myResourceGroup --name appcontaineryaml -y
Löschen von Netzwerkressourcen
Für diese Funktion sind zurzeit mehrere zusätzliche Befehle notwendig, um die Netzwerkressourcen, die Sie zuvor erstellt haben, zu löschen. Wenn Sie die Beispielbefehle in den vorherigen Abschnitten dieses Artikels verwendet haben, um Ihr virtuelles Netzwerk und Subnetz zu erstellen, können Sie diese Netzwerkressourcen mit dem folgenden Skript löschen. Das Skript setzt voraus, dass Ihre Ressourcengruppe ein einzelnes virtuelles Netzwerk mit einem einzigen Netzwerkprofil enthält.
Legen Sie vor der Ausführung des Skripts die Variable RES_GROUP
auf den Namen der Ressourcengruppe fest, die das virtuelle Netzwerk und Subnetz enthält, die gelöscht werden sollen. Aktualisieren Sie den Namen des virtuellen Netzwerks, wenn Sie nicht den zuvor vorgeschlagenen Namen aci-vnet
verwendet haben. Das Skript ist für die Bash-Shell formatiert. Wenn Sie eine andere Shell, wie PowerShell oder Eingabeaufforderung bevorzugen, müssen Sie die Variablenzuweisung und die Zugriffsmethoden entsprechend anpassen.
Warnung
Dieses Skript löscht Ressourcen! Es löscht das virtuelle Netzwerk und alle darin enthaltenen Subnetze. Vergewissern Sie sich daher vor der Ausführung dieses Skripts unbedingt, dass Sie die Ressourcen im virtuellen Netzwerk tatsächlich nicht mehr benötigen, einschließlich der darin enthaltenen Subnetze. Einmal gelöscht, können diese Ressourcen nicht mehr wiederhergestellt werden.
# Replace <my-resource-group> with the name of your resource group
# Assumes one virtual network in resource group
RES_GROUP=<my-resource-group>
# Get network profile ID
# Assumes one profile in virtual network
NETWORK_PROFILE_ID=$(az network profile list --resource-group $RES_GROUP --query [0].id --output tsv)
# Delete the network profile
az network profile delete --id $NETWORK_PROFILE_ID -y
# Delete virtual network
az network vnet delete --resource-group $RES_GROUP --name aci-vnet
Nächste Schritte
Informationen zum Bereitstellen eines neuen virtuellen Netzwerks, eines Subnetzes, eines Netzwerkprofils und einer Containergruppe mithilfe einer Resource Manager-Vorlage finden Sie unter Erstellen einer Azure-Containergruppe mit einem virtuellen Netzwerk.
Informationen zum Bereitstellen von Azure Container Instances, die Images aus Azure Container Registry über einen privaten Endpunkt abrufen können, finden Sie unter Bereitstellen in Azure Container Instances aus Azure Container Registry mit einer verwalteten Identität.