Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Azure Kubernetes Service (AKS) je spravovaná služba Kubernetes, která umožňuje rychle nasazovat a spravovat clustery. V tomto rychlém průvodci vám:
- Vytvořte cluster AKS pomocí kontejneru Flatcar pro AKS (Preview).
- Nasaďte cluster AKS pomocí šablony Azure Resource Manageru.
- Spusťte ukázkovou vícekontenerovou aplikaci se skupinou mikroslužeb a webových front-endů simulujících scénář maloobchodního prodeje.
Šablona Azure Resource Manageru je soubor JSON (JavaScript Object Notation), který definuje infrastrukturu a konfiguraci projektu. Šablona používá deklarativní syntaxi. Popíšete zamýšlené nasazení, aniž byste museli psát posloupnost programovacích příkazů pro vytvoření nasazení.
Poznámka:
Pokud chcete začít rychle zřizovat cluster AKS, najdete v tomto článku postup nasazení clusteru s výchozím nastavením pouze pro účely vyhodnocení. Před nasazením clusteru připraveného pro produkční prostředí doporučujeme seznámit se s naší referenční architekturou podle směrného plánu a zvážit, jak je v souladu s vašimi obchodními požadavky.
Než začnete
Tento článek předpokládá základní znalosti konceptů Kubernetes. Další informace najdete v tématu Základní koncepty Kubernetes pro Službu Azure Kubernetes Service (AKS).
-
Pokud nemáte účet Azure, vytvořte si bezplatný účet před tím, než začnete.
Ujistěte se, že identita, kterou používáte k vytvoření clusteru, má odpovídající minimální oprávnění. Další podrobnosti o přístupu a identitě pro AKS najdete v tématu Možnosti přístupu a identit pro Službu Azure Kubernetes Service (AKS).
Pokud chcete nasadit šablonu ARM, potřebujete přístup k zápisu k prostředkům, které nasazujete, a přístup ke všem operacím s typem
Microsoft.Resources/deploymentsprostředku. Pokud chcete například nasadit virtuální počítač, potřebujeteMicrosoft.Compute/virtualMachines/writeaMicrosoft.Resources/deployments/*oprávnění. Seznam rolí a oprávnění najdete v tématu Předdefinované role Azure.
Po nasazení clusteru ze šablony můžete k připojení ke clusteru použít Azure CLI nebo Azure PowerShell a nasadit ukázkovou aplikaci.
Registrace poskytovatelů prostředků
Možná budete muset ve svém předplatném Azure zaregistrovat poskytovatele prostředků. Vyžaduje se například Microsoft.ContainerService .
Pomocí příkazu zkontrolujte stav az provider show registrace.
az provider show --namespace Microsoft.ContainerService --query registrationState
V případě potřeby zaregistrujte poskytovatele prostředků pomocí příkazu az provider register .
az provider register --namespace Microsoft.ContainerService
Instalace aks-preview rozšíření
Důležité
Funkce AKS ve verzi Preview jsou k dispozici na bázi samoobsluhy a dobrovolného přihlášení. Ukázky jsou poskytovány "jak jsou" a "podle aktuální dostupnosti" a jsou vyloučené ze smluv o úrovni služeb a omezené záruky. Předběžné verze AKS jsou částečně pokryty zákaznickou podporou podle možností. Proto tyto funkce nejsou určené pro produkční použití. Další informace najdete v následujících článcích podpory:
aks-previewNainstalujte rozšíření Azure CLI pomocíaz extension addpříkazu.az extension add --name aks-previewPomocí příkazu aktualizujte na nejnovější verzi rozšíření
az extension update. Flatcar Container Linux vyžaduje minimálně 18.0.0b42.az extension update --name aks-preview
Příznak registrace AKSFlatcarPreview funkce
Příznak funkce
AKSFlatcarPreviewzaregistrujte pomocí příkazuaz feature register.az feature register --namespace "Microsoft.ContainerService" --name "AKSFlatcarPreview"Pomocí příkazu ověřte stav
az feature showregistrace. Zobrazení stavu Zaregistrované trvá několik minut.az feature show --namespace Microsoft.ContainerService --name AKSFlatcarPreviewJakmile se stav projeví jako zaregistrovaný, aktualizujte registraci poskytovatele prostředků Microsoft.ContainerService pomocí
az provider registerpříkazu.az provider register --namespace Microsoft.ContainerService
Vytvoření páru klíčů SSH
Pokud chcete vytvořit cluster AKS pomocí šablony ARM, zadejte veřejný klíč SSH. Pokud tento prostředek potřebujete, postupujte podle kroků v této části. V opačném případě přejděte do části Kontrola šablony .
Pro přístup k uzlům AKS se připojujete pomocí páru klíčů SSH (veřejný a privátní). Vytvoření páru klíčů SSH:
Přejděte na https://shell.azure.com, abyste otevřeli Cloud Shell ve svém prohlížeči.
Vytvořte skupinu prostředků pomocí příkazu az group create .
az group create \ --name myResourceGroup \ --location eastusVytvořte pár klíčů SSH pomocí příkazu az sshkey create nebo
ssh-keygenpříkazu.az sshkey create --name mySSHKey --resource-group myResourceGroupNebo vytvořte pár klíčů SSH pomocí ssh-keygen.
ssh-keygen -t rsa -b 4096Pokud chcete šablonu nasadit, musíte zadat veřejný klíč z páru SSH. Načtěte veřejný klíč pomocí
az sshkey showpříkazu.az sshkey show --name mySSHKey --resource-group myResourceGroup --query publicKeyVe výchozím nastavení se soubory klíčů SSH vytvoří v adresáři ~/.ssh . Spuštěním příkazů
az sshkey createnebossh-keygendojde k přepsání existující dvojice klíčů SSH se stejným názvem.Další informace o vytváření klíčů SSH najdete v tématu Vytvoření a správa klíčů SSH pro ověřování v Azure.
Kontrola šablony
Šablona použitá v tomto rychlém startu je jednou z šablon pro rychlý start Azure.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"metadata": {
"_generator": {
"name": "bicep",
"version": "0.26.170.59819",
"templateHash": "14823542069333410776"
}
},
"parameters": {
"clusterName": {
"type": "string",
"defaultValue": "aks101cluster",
"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_d2s_v3",
"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'"
}
}
},
"resources": [
{
"type": "Microsoft.ContainerService/managedClusters",
"apiVersion": "2024-02-01",
"name": "[parameters('clusterName')]",
"location": "[parameters('location')]",
"identity": {
"type": "SystemAssigned"
},
"properties": {
"dnsPrefix": "[parameters('dnsPrefix')]",
"agentPoolProfiles": [
{
"name": "agentpool",
"osDiskSizeGB": "[parameters('osDiskSizeGB')]",
"count": "[parameters('agentCount')]",
"vmSize": "[parameters('agentVMSize')]",
"osType": "Linux",
"mode": "System"
}
],
"linuxProfile": {
"adminUsername": "[parameters('linuxAdminUsername')]",
"ssh": {
"publicKeys": [
{
"keyData": "[parameters('sshRSAPublicKey')]"
}
]
}
}
}
}
],
"outputs": {
"controlPlaneFQDN": {
"type": "string",
"value": "[reference(resourceId('Microsoft.ContainerService/managedClusters', parameters('clusterName')), '2024-02-01').fqdn]"
}
}
}
Typ prostředku definovaný v šabloně ARM je Microsoft.ContainerService/managedClusters.
Další ukázky AKS najdete na webu šablon rychlých startů AKS.
Nasazení šablony
Výběrem možnosti Nasadit do Azure se přihlaste a otevřete šablonu.
Na stránce Základy ponechte výchozí hodnoty pro velikost disku operačního systému GB, počet agentů, velikost virtuálního počítače agenta a typ operačního systému a nakonfigurujte následující parametry šablony:
- Předplatné: Vyberte předplatné Azure.
- Skupina prostředků: Vyberte možnost Vytvořit nový. Zadejte jedinečný název skupiny prostředků, například myResourceGroup, a pak vyberte OK.
-
Skladová položka operačního systému: Zadejte flatcar, pokud neaktualizujete skladovou položku operačního systému, výchozí hodnota bude
Ubuntu. - Umístění: Vyberte umístění, například USA – východ.
- Název clusteru: Zadejte jedinečný název clusteru AKS, například myAKSCluster.
- Předpona DNS: Zadejte jedinečnou předponu DNS pro váš cluster, například myakscluster.
- Uživatelské jméno správce Linuxu: Zadejte uživatelské jméno pro připojení pomocí SSH, například azureuser.
- Zdroj veřejného klíče SSH: Vyberte Použít existující veřejný klíč.
- Název páru klíčů: Zkopírujte a vložte veřejnou část páru klíčů SSH (ve výchozím nastavení obsah ~/.ssh/id_rsa.pub).
Vyberte Zkontrolovat a vytvořit>Vytvořit.
Vytvoření clusteru AKS bude trvat několik minut. Než přejdete k dalšímu kroku, počkejte, než se cluster úspěšně nasadí.
Připojení ke clusteru
Pro správu Kubernetes clusteru použijte příkazový řádkový klient Kubernetes, kubectl.
Pokud používáte Azure Cloud Shell, kubectl je už nainstalovaný. Pokud chcete nainstalovat a spustit kubectl místně, použijte az aks install-cli příkaz.
Nakonfigurujte
kubectlpro připojení ke svému Kubernetes clusteru pomocí příkazuaz aks get-credentials. Tento příkaz stahuje přihlašovací údaje a konfiguruje Kubernetes CLI pro jejich použití.az aks get-credentials \ --resource-group myResourceGroup \ --name myAKSClusterOvěřte připojení k vašemu clusteru pomocí příkazu
kubectl get. Tento příkaz vrátí seznam uzlů clusteru.kubectl get nodesNásledující příklad výstupu ukazuje tři uzly vytvořené v předchozích krocích. Ujistěte se, že je stav uzlu připravený:
NAME STATUS ROLES AGE VERSION aks-agentpool-38955149-vmss000000 Ready <none> 5m53s v1.32.7 aks-agentpool-38955149-vmss000001 Ready <none> 6m31s v1.32.7 aks-agentpool-238955149-vmss000002 Ready <none> 6m35s v1.32.7
Nasazení aplikace
K nasazení aplikace použijete soubor manifestu k vytvoření všech objektů potřebných ke spuštění aplikace AKS Store. Soubor manifestu Kubernetes definuje požadovaný stav clusteru, například které image kontejneru se mají spustit. Manifest zahrnuje následující nasazení a služby Kubernetes:
- Store front: Webová aplikace pro zákazníky k zobrazení produktů a objednávání.
- Produktová služba: Zobrazuje informace o produktu.
- Služba objednávek: Vyřizuje objednávky.
- Rabbit MQ: Systém zpráv pro správu fronty objednávek.
Poznámka:
Nedoporučujeme spouštět stavové kontejnery, jako je Rabbit MQ, bez trvalého úložiště pro produkční prostředí. Tady se používají pro zjednodušení, ale doporučujeme používat spravované služby, jako je Azure Cosmos DB nebo Azure Service Bus.
Vytvořte soubor s názvem
aks-store-quickstart.yamla zkopírujte ho v následujícím manifestu:apiVersion: apps/v1 kind: Deployment metadata: name: rabbitmq spec: 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 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 resources: requests: cpu: 1m memory: 1Mi limits: cpu: 1m memory: 7Mi --- 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 --- apiVersion: v1 kind: Service metadata: name: store-front spec: ports: - port: 80 targetPort: 8080 selector: app: store-front type: LoadBalancerRozpis souborů manifestu YAML najdete v tématu Nasazení a manifesty YAML.
Pokud soubor YAML vytvoříte a uložíte místně, můžete soubor manifestu nahrát do výchozího adresáře v CloudShellu tak, že vyberete tlačítko Nahrát/Stáhnout soubory a vyberete soubor z místního systému souborů.
Nasaďte aplikaci pomocí
kubectl applypříkazu a zadejte název manifestu YAML.kubectl apply -f aks-store-quickstart.yamlNásledující příklad výstupu ukazuje nasazení a služby:
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
Testování aplikace
Pomocí příkazu zkontrolujte stav nasazených podů
kubectl get pods. Ujistěte se, že všechny pody jsouRunning, než budete pokračovat.kubectl get podsZkontrolujte veřejnou IP adresu pro aplikaci store-front. Sledujte průběh pomocí
kubectl get servicepříkazu s argumentem--watch.kubectl get service store-front --watchVýstup EXTERNAL-IP pro
store-frontslužbu se zpočátku zobrazuje jako čekající:NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE store-front LoadBalancer 10.0.100.10 <pending> 80:30025/TCP 4h4mJakmile se externí IP adresa změní z čekání na skutečnou
CTRL-Cveřejnou IP adresu, použijtekubectlk zastavení procesu sledování.Následující příklad výstupu ukazuje platnou veřejnou IP adresu přiřazenou službě:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE store-front LoadBalancer 10.0.100.10 20.62.159.19 80:30025/TCP 4h5mOtevřete webový prohlížeč na externí IP adresu vaší služby a podívejte se na aplikaci Azure Store v akci:
Odstranění clusteru
Pokud nechcete projít kurzem AKS, vyčistěte nepotřebné prostředky, abyste se vyhnuli poplatkům za Azure.
- Pomocí příkazu
az group deleteodeberte skupinu prostředků, službu kontejneru a všechny související prostředky.
az group delete --name myResourceGroup
Poznámka:
Cluster AKS byl vytvořen se spravovanou identitou přiřazenou systémem, což je výchozí možnost identity použitá v tomto rychlém startu. Tato identita spravuje platforma, takže ji nemusíte ručně odebírat.
Další kroky
V tomto rychlém startu jste nasadili cluster Kubernetes a pak jste do něj nasadili jednoduchou vícekontenerovou aplikaci. Tato ukázková aplikace slouží jenom pro ukázkové účely a nepředstavuje všechny osvědčené postupy pro aplikace Kubernetes. Pokyny k vytváření úplných řešení pomocí AKS pro produkční prostředí najdete v pokynech k řešení AKS.
Pokud chcete získat další informace o AKS a projít si kompletní příklad od kódu po nasazení, pokračujte tutoriálem o clusteru Kubernetes.