Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Az AKS-hez készült Azure Container Linux (ACL) használatának első lépései egy AKS-fürt üzembe helyezésével a Azure CLI használatával.
Ezen rövid útmutató segítségével megtanulhatja a következőket:
- AKS-klaszter létrehozása az ACL for AKS segítségével.
- Telepítse a fürtöt az Azure CLI használatával.
- Futtasson egy többtárolós mintaalkalmazást mikroszolgáltatások és webes kezelőfelületek egy csoportjával, amely egy kiskereskedelmi forgatókönyvet szimulál.
Note
Ez a cikk egy olyan fürt üzembe helyezésének lépéseit tartalmazza, amely csak kiértékelési célokra használja az alapértelmezett beállításokat. Az éles üzemre kész fürtök üzembe helyezése előtt javasoljuk, hogy ismerkedjen meg az alapszintű referenciaarchitektúrával , és gondolja át, hogyan igazodik az üzleti követelményekhez.
Important
Ha Azure Container Linux (ACL) használ AKS-en, tekintse át az alábbi szempontokat és korlátozásokat:
- Az ACL általában az AKS 1.34-től érhető el.
- Az ACL biztonságos rendszerindítással és vTPM-lel rendelkező megbízható indítást igényel. A Non-Trusted Launch változatok nem érhetők el.
- Az Arm64-en futó ACL-hez kobaltalapú (v6-os) termékváltozatokra van szükség a megbízható indítási kompatibilitás engedélyezéséhez.
-
NodeImageésNoneaz egyetlen támogatott operációsrendszer-frissítési csatorna.UnmanagedésSecurityPatcha nem módosítható/usrcímtár miatt nem kompatibilisek az ACL-vel. - Az artifaktum-streamelés nem támogatott.
- A Pod-sandboxolás nem támogatott.
- A bizalmas virtuális gépek (CVM-ek) nem támogatottak .
- Az 1. generációs virtuális gépek nem támogatottak .
Prerequisites
A rövid útmutató feltételezi, hogy rendelkezik a Kubernetes használatára vonatkozó alapvető ismeretekkel. További információkért tekintse meg az Azure Kubernetes Service (AKS) Kubernetes alapfogalmait.
Ha nem rendelkezik Azure-fiókkal, a kezdés előtt hozzon létre egy ingyenes fiókot .
Használja a Bash-környezetet az Azure Cloud Shellben. További információért lásd: Az Azure Cloud Shell használatának kezdő lépései.
Ha inkább helyileg szeretné futtatni a CLI-referencia parancsokat, telepítse az Azure CLI-t. Ha Windows vagy macOS rendszeren fut, fontolja meg az Azure CLI-t egy Docker-konténerben futtatni. További információkért lásd: Az Azure CLI használata Docker-konténerben.
- Ha helyi telepítést használ, jelentkezzen be az Azure CLI-be a
az loginparanccsal. Az azonosítási folyamat befejezéséhez kövesse a terminálján megjelenő lépéseket. További bejelentkezési lehetőségekért lásd: Az Azure CLI használatával történő Azure-hitelesítést. - Amikor megjelenik a felszólítás, az első használatkor telepítse az Azure CLI bővítményt. További információ a bővítményekről: Bővítmények használata és kezelése az Azure CLI-vel.
- Szüksége van Azure CLI 2.86.0-s vagy újabb verziójára. Futtassa a
az versiona telepített verzió és a függő kódtárak megkereséséhez. A legújabb verzióra való frissítéshez futtassa a következőtaz upgrade: .
- Ha helyi telepítést használ, jelentkezzen be az Azure CLI-be a
Győződjön meg arról, hogy az identitás, amit a klaszter létrehozásához használ, rendelkezik a szükséges minimális jogosultságokkal. Az AKS-hez való hozzáféréssel és identitással kapcsolatos további információkért lásd az Azure Kubernetes Service (AKS) hozzáférési és identitásbeállításait.
Ha több Azure-előfizetéssel rendelkezik, válassza ki a megfelelő előfizetés-azonosítót, amelyben az erőforrásokat a
az account setparanccsal kell számlázni. További információ: Azure-előfizetések kezelése – Azure CLI.Az Azure-előfizetésétől függően előfordulhat, hogy vCPU-kvótanövelést kell kérnie. További információ: VM-családi vCPU-kvóták növelése.
A szükséges erőforrás-szolgáltatók regisztrálása
Előfordulhat, hogy regisztrálnia kell a szükséges erőforrás-szolgáltatókat, például Microsoft.ContainerService a Azure-előfizetésében.
Regisztrációs állapot ellenőrzése
Ellenőrizze a regisztrációs állapotot a az provider show paranccsal.
az provider show --namespace Microsoft.ContainerService --query registrationState
Az erőforrás-szolgáltató regisztrálása
Szükség esetén regisztrálja a Microsoft.ContainerService erőforrás-szolgáltatót a az provider register paranccsal.
az provider register --namespace Microsoft.ContainerService
Környezeti változók definiálása
A rövid útmutató során a következő környezeti változók definiálhatók. Tetszés szerint saját egyéni nevekre cserélheti az értékeket.
export RESOURCE_GROUP="myAKSResourceGroup"
export REGION="westus"
export CLUSTER_NAME="myAKSCluster"
Erőforráscsoport létrehozása
Az Azure-erőforráscsoportok olyan logikai csoportok, amelyekben az Azure-erőforrások üzembe helyezése és kezelése történik. Erőforráscsoport létrehozásakor a rendszer kérni fogja, hogy adjon meg egy helyet. Ez a hely az erőforráscsoport metaadatainak tárolási helye, és ahol az erőforrások az Azure-ban futnak, ha nem ad meg egy másik régiót az erőforrás létrehozása során.
Hozzon létre egy erőforráscsoportot a az group create paranccsal.
az group create \
--name $RESOURCE_GROUP \
--location $REGION
A kimenet példája:
{
"id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/myAKSResourceGroup",
"location": "westus",
"managedBy": null,
"name": "myAKSResourceGroup",
"properties": {
"provisioningState": "Succeeded"
},
"tags": null,
"type": "Microsoft.Resources/resourceGroups"
}
AKS-klaszter létrehozása
Hozzon létre egy AKS-cluster-t a az aks create paranccsal. A --os-sku AzureContainerLinux paraméter úgy konfigurálja a rendszercsomópontkészletet, hogy az ACL-t használja csomópont operációs rendszerként. Az alábbi példa egy egy csomóponttal rendelkező fürtöt hoz létre, és engedélyezi a rendszer által hozzárendelt felügyelt identitást:
az aks create \
--resource-group $RESOURCE_GROUP \
--name $CLUSTER_NAME \
--os-sku AzureContainerLinux \
--node-count 1 \
--generate-ssh-keys
Note
Új fürt létrehozásakor az AKS automatikusan létrehoz egy második erőforráscsoportot az AKS-erőforrások tárolásához. További információ: Miért jön létre két erőforráscsoport az AKS-sel?
Csatlakozzon a klaszterhez
A Kubernetes-fürt kezeléséhez használja a Kubernetes parancssori klienst, a kubectl-t.
kubectl már telepítve van az Azure Cloud Shell használata esetén. A kubectl helyi telepítéséhez használja a az aks install-cli parancsot.
Konfigurálja a
kubectl-t, hogy aaz aks get-credentialsparanccsal csatlakozhasson a Kubernetes klaszterhez. Ez a parancs letölti a hitelesítő adatokat, és konfigurálja a Kubernetes parancssori felületét a használatukhoz.az aks get-credentials \ --resource-group $RESOURCE_GROUP \ --name $CLUSTER_NAMEEllenőrizze a klaszterhez való kapcsolatot a
kubectl getparanccsal. Ez a parancs a fürtcsomópontok listáját adja vissza.kubectl get nodes
Az alkalmazás üzembe helyezése
Az alkalmazás üzembe helyezéséhez egy jegyzékfájl használatával hozza létre a AKS Store-alkalmazás futtatásához szükséges összes objektumot. Egy Kubernetes-manifeszt fájl meghatározza a fürt elvárt állapotát, például hogy mely konténerképeket kell futtatni. A manifest a következő Kubernetes üzembe helyezéseket és szolgáltatásokat tartalmazza:
- Áruházi előtér: Webalkalmazás az ügyfelek számára termékek megtekintésére és megrendelések leadására.
- Termékszolgáltatás: A termékinformációkat jeleníti meg.
- Rendelési szolgáltatás: Rendeléseket rendel.
-
RabbitMQ: Üzenetsor egy rendelési sorhoz.
Note
Nem javasoljuk, hogy állapotalapú tárolókat futtasson, például RabbitMQállandó tárolás nélkül éles környezetben. Itt az egyszerűség kedvéért használjuk, de azt javasoljuk, hogy felügyelt szolgáltatásokat használjon, például az Azure Cosmos DB-t vagy az Azure Service Bust.
Hozzon létre egy aks-store-quickstart.yaml nevű fájlt, és másolja a következő jegyzékbe:
apiVersion: apps/v1 kind: StatefulSet metadata: name: rabbitmq spec: serviceName: rabbitmq 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 startupProbe: httpGet: path: /health port: 3000 failureThreshold: 5 initialDelaySeconds: 20 periodSeconds: 10 readinessProbe: httpGet: path: /health port: 3000 failureThreshold: 3 initialDelaySeconds: 3 periodSeconds: 5 livenessProbe: httpGet: path: /health port: 3000 failureThreshold: 5 initialDelaySeconds: 3 periodSeconds: 3 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 env: - name: AI_SERVICE_URL value: "http://ai-service:5001/" resources: requests: cpu: 1m memory: 1Mi limits: cpu: 2m memory: 20Mi readinessProbe: httpGet: path: /health port: 3002 failureThreshold: 3 initialDelaySeconds: 3 periodSeconds: 5 livenessProbe: httpGet: path: /health port: 3002 failureThreshold: 5 initialDelaySeconds: 3 periodSeconds: 3 --- 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 startupProbe: httpGet: path: /health port: 8080 failureThreshold: 3 initialDelaySeconds: 5 periodSeconds: 5 readinessProbe: httpGet: path: /health port: 8080 failureThreshold: 3 initialDelaySeconds: 3 periodSeconds: 3 livenessProbe: httpGet: path: /health port: 8080 failureThreshold: 5 initialDelaySeconds: 3 periodSeconds: 3 --- apiVersion: v1 kind: Service metadata: name: store-front spec: ports: - port: 80 targetPort: 8080 selector: app: store-front type: LoadBalancerA YAML-jegyzékfájlok lebontásához tekintse meg az üzembe helyezéseket és a YAML-jegyzékeket.
Ha helyileg hozza létre és menti a YAML-fájlt, akkor feltöltheti a jegyzékfájlt az alapértelmezett könyvtárba a Cloud Shellben a Fájlok feltöltése/letöltése gombra kattintva, majd kiválasztva a fájlt a helyi fájlrendszerből.
Telepítse az alkalmazást a
kubectl applyparanccsal, és adja meg a YAML-jegyzék nevét.kubectl apply -f aks-store-quickstart.yamlAz alábbi példakimenet az üzembe helyezéseket és szolgáltatásokat mutatja be.
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
Az alkalmazás tesztelése
Az alkalmazás futtatásakor egy Kubernetes-szolgáltatás elérhetővé teszi az alkalmazás előtérét az interneten. A folyamat eltarthat pár percig.
Ellenőrizze az üzembe helyezett podok állapotát a
kubectl get podsparanccsal. Győződjön meg arról, hogy az összes podRunning, mielőtt folytatja.kubectl get podsEllenőrizze, hogy van-e nyilvános IP-cím az
store-frontalkalmazáshoz. Használja akubectl get serviceparancsot a--watchargumentummal a folyamat figyeléséhez.kubectl get service store-front --watchEXTERNAL-IP kimenet a
store-frontszolgáltatáshoz kezdetben függőben jelenik meg:NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE store-front LoadBalancer 10.0.100.10 <pending> 80:30025/TCP 4h4mHa a külső IP-cím függőben lévőrőltényleges nyilvános IP-címre változik, állítsa
CTRL-Cle akubectlfigyelés folyamatát.Az alábbi példakimenet a szolgáltatáshoz rendelt érvényes nyilvános IP-címet jeleníti meg:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE store-front LoadBalancer 10.0.100.10 20.62.159.19 80:30025/TCP 4h5mNyisson meg egy webböngészőt a szolgáltatás külső IP-címére az Azure Store-alkalmazás működés közbeni megtekintéséhez.
Fürt törlése
Ha nem tervezi végigvezetni az AKS-oktatóanyagot, törölje a felesleges erőforrásokat az Azure számlázási költségeinek elkerülése érdekében.
Távolítsa el az erőforráscsoportot, a tárolószolgáltatást és az összes kapcsolódó erőforrást a az group delete parancs használatával.
az group delete --name $RESOURCE_GROUP
Az AKS-fürt egy rendszer által hozzárendelt felügyelt identitással lett létrehozva, amely az ebben a gyorsútmutatóban használt alapértelmezett identitásbeállítás. A platform kezeli ezt az identitást, így önnek nem kell manuálisan eltávolítania.
Kapcsolódó tartalom
Ebben a rövid útmutatóban az Azure CLI használatával egy AKS-fürtöt helyezett üzembe az AKS-hez készült ACL-lel. Az ACL for AKS-ről a Azure Container Linux (ACL) Azure Kubernetes Service (AKS) című témakörben talál további információt.