Snabbstart: Distribuera en Azure Linux-containervärd för AKS-kluster med hjälp av en ARM-mall
Kom igång med Azure Linux Container Host med hjälp av en ARM-mall (Azure Resource Manager) för att distribuera ett Azure Linux Container Host-kluster. När du har installerat förhandskraven skapar du ett SSH-nyckelpar, granskar mallen, distribuerar mallen och validerar den och distribuerar sedan ett program.
En Azure Resource Manager-mall är en JSON-fil (JavaScript Object Notation) som definierar infrastrukturen och konfigurationen för projektet. Mallen använder deklarativ syntax. Du beskriver den avsedda distributionen utan att skriva sekvensen med programmeringskommandon för att skapa distributionen.
Förutsättningar
-
Om du inte har en Azure-prenumeration skapar du ett kostnadsfritt Azure-konto innan du börjar.
Använd Bash-miljön i Azure Cloud Shell. Mer information finns i Azure Cloud Shell Snabbstart – Bash.
Om du föredrar att köra CLI-referenskommandon lokalt installerar du Azure CLI. Om du kör i Windows eller macOS kan du köra Azure CLI i en Docker-container. Mer information finns i Så här kör du Azure CLI i en Docker-container.
Om du använder en lokal installation loggar du in på Azure CLI med hjälp av kommandot az login. Slutför autentiseringsprocessen genom att följa stegen som visas i terminalen. Andra inloggningsalternativ finns i Logga in med Azure CLI.
När du uppmanas att installera Azure CLI-tillägget vid första användningen. Mer information om tillägg finns i Använda tillägg med Azure CLI.
Kör az version om du vill hitta versionen och de beroende bibliotek som är installerade. Om du vill uppgradera till den senaste versionen kör du az upgrade.
Om du inte redan har kubectl installerat installerar du det via Azure CLI med hjälp av
az aks install-cli
eller följer de överordnade anvisningarna.Om du vill skapa ett AKS-kluster med hjälp av en Resource Manager-mall anger du en offentlig SSH-nyckel. Om du behöver den här resursen kan du läsa följande avsnitt. annars går du vidare till avsnittet Granska mallen .
Den identitet som du använder för att skapa klustret har lämpliga minimibehörigheter. Mer information om åtkomst och identitet för AKS finns i Åtkomst- och identitetsalternativ för Azure Kubernetes Service (AKS).
Om du vill distribuera en Bicep-fil eller en ARM-mall måste du ha skrivåtkomst till de resurser som du distribuerar och åtkomst till alla åtgärder i resurstypen Microsoft.Resources/deployments. Om du till exempel vill distribuera en virtuell dator behöver du behörigheterna Microsoft.Compute/virtualMachines/write och Microsoft.Resources/deployments/*. Det finns en lista med roller och behörigheter i Inbyggda roller i Azure.
Skapa ett SSH-nyckelpar
För att få åtkomst till AKS-noder ansluter du med ett SSH-nyckelpar (offentligt och privat) som du genererar med kommandot ssh-keygen
. Som standard skapas dessa filer i katalogen ~/.ssh . ssh-keygen
När kommandot körs skrivs alla SSH-nyckelpar med samma namn som redan finns på den angivna platsen.
Gå till för att https://shell.azure.com öppna Cloud Shell i webbläsaren.
Kör kommandot
ssh-keygen
. I följande exempel skapas ett SSH-nyckelpar med RSA-kryptering och en bit längd på 4096:ssh-keygen -t rsa -b 4096
Mer information om hur du skapar SSH-nycklar finns i Skapa och hantera SSH-nycklar för autentisering i Azure.
Granska mallen
Följande distribution använder en ARM-mall från Azure-snabbstartsmallar.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.1",
"parameters": {
"clusterName": {
"type": "string",
"defaultValue": "azurelinuxakscluster",
"metadata": {
"description": "The name of the Managed Cluster resource."
}
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]",
"metadata": {
"description": "The location of the Managed Cluster resource."
}
},
"dnsPrefix": {
"type": "string",
"metadata": {
"description": "Optional DNS prefix to use with hosted Kubernetes API server FQDN."
}
},
"osDiskSizeGB": {
"type": "int",
"defaultValue": 0,
"minValue": 0,
"maxValue": 1023,
"metadata": {
"description": "Disk size (in GB) to provision for each of the agent pool nodes. This value ranges from 0 to 1023. Specifying 0 will apply the default disk size for that agentVMSize."
}
},
"agentCount": {
"type": "int",
"defaultValue": 3,
"minValue": 1,
"maxValue": 50,
"metadata": {
"description": "The number of nodes for the cluster."
}
},
"agentVMSize": {
"type": "string",
"defaultValue": "Standard_DS2_v2",
"metadata": {
"description": "The size of the Virtual Machine."
}
},
"linuxAdminUsername": {
"type": "string",
"metadata": {
"description": "User name for the Linux Virtual Machines."
}
},
"sshRSAPublicKey": {
"type": "string",
"metadata": {
"description": "Configure all linux machines with the SSH RSA public key string. Your key should include three parts, for example 'ssh-rsa AAAAB...snip...UcyupgH azureuser@linuxvm'"
}
},
"osType": {
"type": "string",
"defaultValue": "Linux",
"allowedValues": [
"Linux"
],
"metadata": {
"description": "The type of operating system."
}
},
"osSKU": {
"type": "string",
"defaultValue": "AzureLinux",
"allowedValues": [
"AzureLinux",
"Ubuntu"
],
"metadata": {
"description": "The Linux SKU to use."
}
}
},
"resources": [
{
"type": "Microsoft.ContainerService/managedClusters",
"apiVersion": "2021-03-01",
"name": "[parameters('clusterName')]",
"location": "[parameters('location')]",
"properties": {
"dnsPrefix": "[parameters('dnsPrefix')]",
"agentPoolProfiles": [
{
"name": "agentpool",
"mode": "System",
"osDiskSizeGB": "[parameters('osDiskSizeGB')]",
"count": "[parameters('agentCount')]",
"vmSize": "[parameters('agentVMSize')]",
"osType": "[parameters('osType')]",
"osSKU": "[parameters('osSKU')]",
"storageProfile": "ManagedDisks"
}
],
"linuxProfile": {
"adminUsername": "[parameters('linuxAdminUsername')]",
"ssh": {
"publicKeys": [
{
"keyData": "[parameters('sshRSAPublicKey')]"
}
]
}
}
},
"identity": {
"type": "SystemAssigned"
}
}
],
"outputs": {
"controlPlaneFQDN": {
"type": "string",
"value": "[reference(parameters('clusterName')).fqdn]"
}
}
}
Om du vill lägga till Azure Linux i en befintlig ARM-mall måste du lägga "osSKU": "AzureLinux"
till och "mode": "System"
till agentPoolProfiles
och ange apiVersion till 2021-03-01 eller senare ("apiVersion": "2021-03-01"
).
Distribuera mallen
Välj följande knapp för att logga in på Azure och öppna en mall.
Välj eller ange följande värden.
För den här snabbstarten lämnar du standardvärdena för OS Disk Size GB, Agent Count, Agent VM Size, OS Type och Kubernetes Version. Ange dina egna värden för följande mallparametrar:
- Prenumeration: Välj en Azure-prenumeration.
- Resursgrupp: Välj Skapa ny. Ange ett unikt namn för resursgruppen, till exempel testAzureLinuxResourceGroup och välj sedan OK.
- Plats: Välj en plats, till exempel USA, östra.
- Klusternamn: Ange ett unikt namn för AKS-klustret, till exempel testAzureLinuxCluster.
- DNS-prefix: Ange ett unikt DNS-prefix för klustret, till exempel myAzureLinuxCluster.
- Användarnamn för Linux-administratör: Ange ett användarnamn för att ansluta med hjälp av SSH, till exempel azureUser.
- Offentlig SSH RSA-nyckel: Kopiera och klistra in den offentliga delen av SSH-nyckelparet (som standard innehållet i ~/.ssh/id_rsa.pub).
Välj Granska + skapa.
Det tar några minuter att skapa Azure Linux Container Host-klustret. Vänta tills klustret har distribuerats innan du går vidare till nästa steg.
Verifiera distributionen
Anslut till klustret
Om du vill hantera ett Kubernetes-kluster använder du Kubernetes-kommandoradsklienten kubectl.
Installera
kubectl
lokalt medaz aks install-cli
kommandot :az aks install-cli
Konfigurera
kubectl
för att ansluta till kubernetes-klustret med hjälp avaz aks get-credentials
kommandot . Det här kommandot laddar ned autentiseringsuppgifter och konfigurerar Kubernetes CLI för att använda dem.az aks get-credentials --resource-group testAzureLinuxResourceGroup --name testAzureLinuxCluster
Kontrollera anslutningen till klustret med hjälp av
kubectl get
kommandot . Det här kommandot returnerar en lista över klusternoderna.kubectl get nodes
Följande utdataexempel visar de tre noder som skapades i föregående steg. Kontrollera att nodstatusen är Klar:
NAME STATUS ROLES AGE VERSION aks-agentpool-41324942-0 Ready agent 6m44s v1.12.6 aks-agentpool-41324942-1 Ready agent 6m46s v1.12.6 aks-agentpool-41324942-2 Ready agent 6m45s v1.12.6
Distribuera programmet
En Kubernetes-manifestfil definierar ett klusters önskade tillstånd, till exempel vilka containeravbildningar som ska köras.
I den här snabbstarten använder du ett manifest för att skapa alla objekt som behövs för att köra Azure Vote-programmet. Det här manifestet innehåller två Kubernetes-distributioner:
- Azure Vote Python-exempelprogram.
- En Redis-instans.
Två Kubernetes-tjänster skapas också:
- En intern tjänst för Redis-instansen.
- En extern tjänst för åtkomst till Azure Vote-programmet från Internet.
Skapa en fil som heter
azure-vote.yaml
.- Om du använder Azure Cloud Shell kan den här filen skapas med hjälp av
code
,vi
ellernano
som om du arbetar med ett virtuellt eller fysiskt system
- Om du använder Azure Cloud Shell kan den här filen skapas med hjälp av
Kopiera i följande YAML-definition:
apiVersion: apps/v1 kind: Deployment metadata: name: azure-vote-back spec: replicas: 1 selector: matchLabels: app: azure-vote-back template: metadata: labels: app: azure-vote-back spec: nodeSelector: "kubernetes.io/os": linux containers: - name: azure-vote-back image: mcr.microsoft.com/oss/bitnami/redis:6.0.8 env: - name: ALLOW_EMPTY_PASSWORD value: "yes" resources: requests: cpu: 100m memory: 128Mi limits: cpu: 250m memory: 256Mi 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/v1 kind: Deployment metadata: name: azure-vote-front spec: replicas: 1 selector: matchLabels: app: azure-vote-front template: metadata: labels: app: azure-vote-front spec: nodeSelector: "kubernetes.io/os": linux containers: - name: azure-vote-front image: mcr.microsoft.com/azuredocs/azure-vote-front:v1 resources: requests: cpu: 100m memory: 128Mi limits: cpu: 250m memory: 256Mi 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
En uppdelning av YAML-manifestfiler finns i Distributioner och YAML-manifest.
Distribuera programmet med kommandot kubectl apply och ange namnet på ditt YAML-manifest:
kubectl apply -f azure-vote.yaml
Följande exempel liknar utdata som visar distributioner och tjänster som har skapats:
deployment "azure-vote-back" created service "azure-vote-back" created deployment "azure-vote-front" created service "azure-vote-front" created
Testa programmet
När programmet körs så exponerar en Kubernetes-tjänst programmets klientdel mot Internet. Den här processen kan ta ett par minuter att slutföra.
Övervaka förloppet med hjälp av kommandot kubectl get service med --watch
argumentet .
kubectl get service azure-vote-front --watch
EXTERNA IP-utdata för azure-vote-front
tjänsten visas inledningsvis som väntande.
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
azure-vote-front LoadBalancer 10.0.37.27 <pending> 80:30572/TCP 6s
När DEN EXTERNA IP-adressen ändras från väntande till en faktisk offentlig IP-adress använder du CTRL-C
för att stoppa kubectl
bevakningsprocessen. Följande exempelutdata visar en giltig offentlig IP-adress som har tilldelats tjänsten:
azure-vote-front LoadBalancer 10.0.37.27 52.179.23.131 80:30572/TCP 2m
Om du vill se hur Azure Vote-appen fungerar i praktiken så öppnar du en webbläsare till den externa IP-adressen för din tjänst.
Ta bort klustret
Om du inte ska fortsätta med följande självstudier kan du undvika att Azure-avgifter rensar bort onödiga resurser. az group delete
Använd kommandot för att ta bort resursgruppen och alla relaterade resurser.
az group delete --name testAzureLinuxCluster --yes --no-wait
Nästa steg
I den här snabbstarten distribuerade du ett Azure Linux Container Host-kluster. Om du vill veta mer om Azure Linux Container Host och gå igenom ett komplett exempel på klusterdistribution och hantering kan du fortsätta till självstudiekursen Azure Linux Container Host.