Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Azure Kubernetes Service (AKS), kümeleri hızla dağıtmanızı ve yönetmenizi sağlayan yönetilen bir Kubernetes hizmetidir. Bu hızlı başlangıç rehberinde şunları yapacaksınız:
- AKS için Flatcar Container Linux kullanarak AKS kümesi oluşturma (önizleme).
- Azure Resource Manager şablonu kullanarak AKS kümesi dağıtma.
- Bir grup mikro hizmet ve web ön uçlarıyla perakende senaryosunu simüle eden örnek bir çoklu kapsayıcı uygulama çalıştırın.
Azure Resource Manager şablonu, projenizin altyapısını ve yapılandırmasını tanımlayan bir JavaScript Nesne Gösterimi (JSON) dosyasıdır. Şablon deklaratif sözdizimi kullanır. Dağıtımı oluşturmak için programlama komutlarının sırasını yazmadan hedeflenen dağıtımınızı açıklarsınız.
Uyarı
Aks kümesini hızlı bir şekilde sağlamaya başlamak için, bu makale yalnızca değerlendirme amacıyla varsayılan ayarlarla küme dağıtma adımlarını içerir. Üretime hazır bir kümeyi dağıtmadan önce, iş gereksinimlerinizle nasıl uyumlu olduğunu göz önünde bulundurmak için temel başvuru mimarimizi tanımanızı öneririz.
Başlamadan önce
Kubernetes kavramlarına dair temel bir anlayışa sahip olunması gerektiği varsayılmaktadır. Daha fazla bilgi için bkz . Azure Kubernetes Service (AKS) için Kubernetes temel kavramları.
-
Azure hesabınız yoksa, başlamadan önce ücretsiz hesap oluşturun.
Kümenizi oluşturmak için kullandığınız kimliğin uygun minimum izinlere sahip olduğundan emin olun. AKS erişimi ve kimliği hakkında daha fazla bilgi için bkz. Azure Kubernetes Service (AKS) için erişim ve kimlik seçenekleri.
ARM şablonu dağıtmak için, dağıttığınız kaynaklara yazma erişimine ve kaynak türündeki
Microsoft.Resources/deploymentstüm işlemlere erişmeniz gerekir. Örneğin, bir sanal makine dağıtmak içinMicrosoft.Compute/virtualMachines/writeveMicrosoft.Resources/deployments/*izinlerine ihtiyacınız vardır. Rol ve izinlerin bir listesi için Azure yerleşik roller'ine bakın.
Kümeyi şablondan dağıtdıktan sonra, kümeye bağlanmak ve örnek uygulamayı dağıtmak için Azure CLI veya Azure PowerShell kullanabilirsiniz.
Kaynak sağlayıcılarını kaydetme
Kaynak sağlayıcılarını Azure aboneliğinize kaydetmeniz gerekebilir. Örneğin, Microsoft.ContainerService gereklidir.
komutunu kullanarak az provider show kayıt durumunu denetleyin.
az provider show --namespace Microsoft.ContainerService --query registrationState
Gerekirse az provider register komutunu kullanarak kaynak sağlayıcısını kaydedin .
az provider register --namespace Microsoft.ContainerService
Uzantıyı yükleme aks-preview
Önemli
AKS önizleme özellikleri self servis ve kabul temelinde kullanılabilir. Önizlemeler "olduğu gibi" ve "mevcut olduğu şekilde" sağlanmakta olup, hizmet seviyesi anlaşmalarına ve sınırlı garantilere dahil edilmemektedir. AKS önizlemeleri, müşteri desteği ekibi tarafından maksimum çaba gösterilerek kısmen ele alınmaktadır. Bu nedenle, bu özellikler üretim kullanımı için tasarlanmamıştır. Daha fazla bilgi için aşağıdaki destek makalelerine bakın:
aks-previewkomutunu kullanarak Azure CLI uzantısınıaz extension addyükleyin.az extension add --name aks-previewkomutunu kullanarak uzantının en son sürümüne güncelleştirin
az extension update. Flatcar Container Linux için en az 18.0.0b42 gerekir.az extension update --name aks-preview
Özellik bayrağını kaydet AKSFlatcarPreview
AKSFlatcarPreviewözellik bayrağınıaz feature registerkomutunu kullanarak kaydedin.az feature register --namespace "Microsoft.ContainerService" --name "AKSFlatcarPreview"komutunu kullanarak
az feature showkayıt durumunu doğrulayın. Durumun Kayıtlı olarak gösterilmesi birkaç dakika sürer.az feature show --namespace Microsoft.ContainerService --name AKSFlatcarPreviewDurum Kayıtlı olarak yansıtıldığında komutunu kullanarak
az provider registerkaynak sağlayıcısının kaydını yenileyin.az provider register --namespace Microsoft.ContainerService
Bir SSH anahtar çifti oluşturun
ARM şablonu kullanarak AKS kümesi oluşturmak için bir SSH ortak anahtarı sağlarsınız. Bu kaynağa ihtiyacınız varsa bu bölümdeki adımları izleyin. Aksi takdirde Şablonu gözden geçirme bölümüne atlayın.
AKS düğümlerine erişmek için bir SSH anahtar çifti (genel ve özel) kullanarak bağlanırsınız. SSH anahtar çifti oluşturmak için:
https://shell.azure.com adresine gidin ve tarayıcınızda Cloud Shell'i açın.
az group create komutunu kullanarak bir kaynak grubu oluşturun .
az group create \ --name myResourceGroup \ --location eastusaz sshkey create komutunu veya komutunu kullanarak bir SSH anahtar çifti
ssh-keygenoluşturun.az sshkey create --name mySSHKey --resource-group myResourceGroupVeya ssh-keygen kullanarak SSH anahtar çifti oluşturma
ssh-keygen -t rsa -b 4096Şablonu dağıtmak için SSH çiftinden ortak anahtarı sağlamanız gerekir. komutunu kullanarak
az sshkey showortak anahtarı alın.az sshkey show --name mySSHKey --resource-group myResourceGroup --query publicKeyVarsayılan olarak, SSH anahtar dosyaları ~/.ssh dizininde oluşturulur.
az sshkey createveyassh-keygenkomutunu çalıştırmak, aynı ada sahip mevcut SSH anahtar çiftlerinin üzerine yazar.Daha fazla bilgi için SSH anahtarları oluşturma hakkında, Azure'da kimlik doğrulama için SSH anahtarlarını oluşturma ve yönetme bölümüne bakın.
Şablonu gözden geçir
Bu hızlı başlangıçta kullanılan şablon Azure Hızlı Başlangıç Şablonlarından alınmıştır.
{
"$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]"
}
}
}
ARM şablonunda tanımlanan kaynak türü Microsoft.ContainerService/managedClusters'tır.
Daha fazla AKS örneği için AKS hızlı başlangıç şablonları sitesine bakın.
Şablonu dağıt
Oturum açmak ve bir şablon açmak için Azure'a dağıt'ı seçin.
Temel Bilgiler sayfasında İşletim Sistemi Disk Boyutu GB, Aracı Sayısı, Aracı VM Boyutu ve İşletim Sistemi Türü için varsayılan değerleri bırakın ve aşağıdaki şablon parametrelerini yapılandırın:
- Abonelik: Bir Azure aboneliği seçin.
- Kaynak grubu: Yeni oluştur'u seçin. Kaynak grubu için myResourceGroup gibi benzersiz bir ad girin ve Tamam'ı seçin.
-
İşletim Sistemi SKU'su: flatcar belirtin, işletim sistemi SKU'sunu güncelleştirmezseniz varsayılan değer olur
Ubuntu. - Konum: Doğu ABD gibi bir konum seçin.
- Küme adı: AKS kümesi için myAKSCluster gibi benzersiz bir ad girin.
- DNS ön eki: Kümeniz için myakscluster gibi benzersiz bir DNS ön eki girin.
- Linux Yöneticisi Kullanıcı Adı: SSH kullanarak bağlanmak için azureuser gibi bir kullanıcı adı girin.
- SSH ortak anahtar kaynağı: Var olan ortak anahtarı kullan'ı seçin.
- Anahtar çifti adı: SSH anahtar çiftinizin ortak bölümünü kopyalayıp yapıştırın (varsayılan olarak~ /.ssh/id_rsa.pub içindekiler).
Gözden geçir ve oluştur>Oluştur'u seçin.
AKS kümesinin oluşturulması birkaç dakika sürer. Küme başarıyla dağıtılana kadar bir sonraki adıma geçmeyin.
Kümeye bağlanma
Bir Kubernetes kümesini yönetmek için, Kubernetes komut satırı istemcisi olan kubectl'i kullanın.
Azure Cloud Shell kullanıyorsanız zaten kubectl yüklüdür. Yerel olarak kubectl yüklemek ve çalıştırmak için az aks install-cli komutunu kullanın.
kubectl'yi,az aks get-credentialskomutunu kullanarak Kubernetes kümenize bağlanmak için yapılandırın. Bu komut, kimlik bilgilerini indirir ve Kubernetes CLI'yi bunları kullanacak şekilde yapılandırır.az aks get-credentials \ --resource-group myResourceGroup \ --name myAKSClusterKümelenize olan bağlantınızı
kubectl getkomutunu kullanarak doğrulayın. Bu komut, küme düğümlerinin bir listesini döndürür.kubectl get nodesAşağıdaki örnek çıktı, önceki adımlarda oluşturulan üç düğümü gösterir. Düğümün durumunun Hazır olduğundan emin olun:
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
Uygulamayı dağıt
Uygulamayı dağıtmak için, AKS Store uygulamasını çalıştırmak için gereken tüm nesneleri oluşturmak için bir bildirim dosyası kullanırsınız. Bir Kubernetes manifest dosyası, bir kümenin hangi kapsayıcı görüntülerini çalıştıracağı gibi istenilen durumunu tanımlar. Bildirim aşağıdaki Kubernetes dağıtımlarını ve hizmetlerini içerir:
- Mağaza ön: Müşterilerin ürünleri görüntülemesi ve sipariş vermesi için web uygulaması.
- Ürün hizmeti: Ürün bilgilerini gösterir.
- Sipariş hizmeti: Sipariş verir.
- Rabbit MQ: Sipariş kuyruğu için ileti kuyruğu.
Uyarı
Üretim için kalıcı depolama olmadan Rabbit MQ gibi durum bilgisi olan kapsayıcıları çalıştırmanızı önermiyoruz. Bunlar burada kolaylık sağlamak için kullanılır, ancak Azure Cosmos DB veya Azure Service Bus gibi yönetilen hizmetleri kullanmanızı öneririz.
Adlı
aks-store-quickstart.yamlbir dosya oluşturun ve aşağıdaki bildirimde kopyalayın: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: LoadBalancerYAML manifest dosyalarının detayları için, Dağıtımlar ve YAML manifestleri sayfasına bakın.
YAML dosyasını yerel olarak oluşturur ve kaydederseniz, Dosyaları Karşıya Yükle/İndir düğmesini seçip yerel dosya sisteminizden dosyayı seçerek bildirim dosyasını CloudShell'deki varsayılan dizininize yükleyebilirsiniz.
komutunu kullanarak uygulamayı dağıtın
kubectl applyve YAML bildiriminizin adını belirtin.kubectl apply -f aks-store-quickstart.yamlAşağıdaki örnek çıktı dağıtımları ve hizmetleri gösterir:
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
Uygulamayı test et
komutunu kullanarak
kubectl get podsdağıtılan podların durumunu denetleyin. Devam etmeden önce tüm podlarınRunningdurumunda olduğundan emin olun.kubectl get podsMağaza ön uygulaması için genel IP adresi olup olmadığını denetleyin.
kubectl get servicekomutunu--watchargümanıyla kullanarak ilerleme durumunu izleyin.kubectl get service store-front --watchHizmetin EXTERNAL-IP çıkışı
store-frontbaşlangıçta beklemede olarak gösterilir:NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE store-front LoadBalancer 10.0.100.10 <pending> 80:30025/TCP 4h4mEXTERNAL-IP adresi pending'den gerçek bir halka açık IP adresine değiştiğinde,
CTRL-Cizleme işlemini durdurmak içinkubectlkullanın.Aşağıdaki örnek çıktıda hizmete atanmış geçerli bir genel IP adresi gösterilmektedir:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE store-front LoadBalancer 10.0.100.10 20.62.159.19 80:30025/TCP 4h5mAzure Store uygulamasının çalıştığını görmek için hizmetinizin dış IP adresine bir web tarayıcısı açın:
Kümeyi sil
AKS öğreticisini incelemeyi planlamıyorsanız, Azure ücretlerinden kaçınmak için gereksiz kaynakları temizleyin.
- komutunu kullanarak
az group deletekaynak grubunu, kapsayıcı hizmetini ve tüm ilgili kaynakları kaldırın.
az group delete --name myResourceGroup
Uyarı
AKS kümesi, bu hızlı başlangıçta kullanılan varsayılan kimlik seçeneği olan sistem tarafından atanan yönetilen kimlikle oluşturulmuştur. Platform bu kimliği yönetir, bu nedenle el ile kaldırmanız gerekmez.
Sonraki Adımlar
Bu hızlı başlangıçta, önce bir Kubernetes kümesi dağıttınız ve ardından basit bir çoklu kapsayıcılı uygulamayı buna dağıttınız. Bu örnek uygulama yalnızca tanıtım amaçlıdır ve Kubernetes uygulamaları için en iyi yöntemlerin tümünü temsil etmez. Üretim için AKS ile tam çözüm oluşturma yönergeleri için bkz . AKS çözümü kılavuzu.
AKS hakkında daha fazla bilgi edinmek ve eksiksiz bir koddan dağıtım örneğini incelemek için Kubernetes kümesi öğreticisine devam edin.