Cvičení – nasazení aplikace v clusteru Azure Kubernetes Service
V tomto cvičení nasaďte web vaší společnosti jako testovací aplikaci do služby Azure Kubernetes Service (AKS). Web je statickým webem, který používá základní technologický zásobník HTML, CSS a JavaScriptu. Nepřijímá tolik požadavků jako ostatní služby a poskytuje bezpečný způsob otestování možností nasazení.
Poznámka:
Kód webové aplikace je k dispozici v tomto úložišti GitHubu , pokud chcete zdrojový kód prozkoumat podrobněji. Tato ukázková aplikace se také nasadí jenom ve fondu uzlů s Linuxem.
Důležité
K dokončení tohoto cvičení potřebujete vlastní předplatné Azure a můžou se vám účtovat poplatky. Pokud ještě nemáte předplatné Azure, vytvořte si před zahájením bezplatný účet .
Vytvoření manifestu nasazení
Soubor manifestu nasazení vytváříte za účelem nasazení aplikace. Soubor manifestu vám umožní definovat typ prostředku, který chcete nasadit, a všechny podrobnosti související s touto úlohou.
Kubernetes seskupuje kontejnery do logických struktur nazvaných pody, které nemají žádné inteligentní funkce. Nasazení přidávají chybějící inteligentní funkce pro vytvoření aplikace. Pojďme vytvořit soubor nasazení.
Přihlaste se ke službě Azure Cloud Shell.
Pomocí integrovaného editoru vytvořte v Cloud Shellu soubor manifestu pro nasazení Kubernetes s názvem
deployment.yaml.touch deployment.yamlV Cloud Shellu otevřete integrovaný editor zadáním
code ..Otevřete soubor
deployment.yamla přidejte následující část kódu YAML.# deployment.yaml apiVersion: apps/v1 # The API resource where this workload resides kind: Deployment # The kind of workload we're creating metadata: name: contoso-website # This will be the name of the deploymentV tomto kódu jste přidali první dva klíče, které Kubernetes informují o
apiVersionakindmanifestu, který vytváříte.nameje název nasazení. Použijte ho k identifikaci a dotazování informací o nasazení při použitíkubectl.Návod
Další informace o
apiVersiona hodnotách, které se mají do tohoto klíče vložit, najdete v oficiální dokumentaci ke Kubernetes. Odkaz najdete na konci tohoto modulu.Nasazení zabalí pod. Pomocí definice šablony můžete definovat informace podu v souboru manifestu. Šablona je umístěná v souboru manifestu pod oddílem specifikace nasazení.
Aktualizujte soubor
deployment.yaml, aby odpovídal následujícímu souboru YAML.# deployment.yaml apiVersion: apps/v1 kind: Deployment metadata: name: contoso-website spec: template: # This is the template of the pod inside the deployment metadata: # Metadata for the pod labels: app: contoso-websitePody nepoužívají stejné názvy jako nasazení. Název podu je kombinace názvu nasazení s náhodným ID přidaným na konec.
Všimněte si použití klíče
labels. Klíčlabelspřidáte, abyste nasazením povolili vyhledat a seskupit pody.Pod zabalí jeden nebo více kontejnerů. Všechny pody mají oddíl specifikace, který vám umožňuje definovat kontejnery uvnitř daného podu.
Aktualizujte soubor
deployment.yaml, aby odpovídal následujícímu souboru YAML.# deployment.yaml apiVersion: apps/v1 kind: Deployment metadata: name: contoso-website spec: template: # This is the template of the pod inside the deployment metadata: labels: app: contoso-website spec: containers: # Here we define all containers - name: contoso-websiteKlíč
containersje pole specifikací kontejneru, protože pod může obsahovat jeden nebo více kontejnerů. Specifikace definuje ,imageaname,resourcesports, a další důležité informace o kontejneru.Všechny spuštěné pody se řídí názvem
contoso-website-<UUID>, kde UUID je vygenerované ID k jednoznačné identifikaci všech prostředků.Je vhodné definovat minimum a maximální množství prostředků, které může aplikace používat z clusteru. K zadání této informace použijte klíč
resources.Aktualizujte soubor
deployment.yaml, aby odpovídal následujícímu souboru YAML.# deployment.yaml apiVersion: apps/v1 kind: Deployment metadata: name: contoso-website spec: template: # This is the template of the pod inside the deployment metadata: labels: app: contoso-website spec: containers: - image: mcr.microsoft.com/mslearn/samples/contoso-website name: contoso-website resources: requests: # Minimum amount of resources requested cpu: 100m memory: 128Mi limits: # Maximum amount of resources requested cpu: 250m memory: 256MiVšimněte si, že vám oddíl prostředků umožňuje zadat minimální počet prostředků jako požadavek a maximální počet prostředků jako omezení.
Posledním krokem je definování portů, které tento kontejner externě zveřejňuje prostřednictvím
portsklíče. Klíčportsje pole objektů, což znamená, že kontejner v podu může zveřejnit několik portů s několika názvy.Aktualizujte soubor
deployment.yaml, aby odpovídal následujícímu souboru YAML.# deployment.yaml apiVersion: apps/v1 kind: Deployment metadata: name: contoso-website spec: template: # This is the template of the pod inside the deployment metadata: labels: app: contoso-website spec: nodeSelector: kubernetes.io/os: linux containers: - image: mcr.microsoft.com/mslearn/samples/contoso-website name: contoso-website resources: requests: cpu: 100m memory: 128Mi limits: cpu: 250m memory: 256Mi ports: - containerPort: 80 # This container exposes port 80 name: http # We named that port "http" so we can refer to it laterVšimněte si, jak pomocí klíče
namepojmenujete port. Pojmenování portů vám umožňuje změnit zveřejněný port, aniž byste museli měnit soubory, které na tento port odkazují.Nakonec přidejte oddíl selektoru, který definuje úlohy, které nasazení spravuje. Klíč
selectorje umístěný v oddílu specifikace nasazení souboru manifestu. Pomocí klíčematchLabelszobrazte seznam popisků pro všechny pody spravované v nasazení.Aktualizujte soubor
deployment.yaml, aby odpovídal následujícímu souboru YAML.# deployment.yaml apiVersion: apps/v1 kind: Deployment metadata: name: contoso-website spec: selector: # Define the wrapping strategy matchLabels: # Match all pods with the defined labels app: contoso-website # Labels follow the `name: value` template template: # This is the template of the pod inside the deployment metadata: labels: app: contoso-website spec: nodeSelector: kubernetes.io/os: linux containers: - image: mcr.microsoft.com/mslearn/samples/contoso-website name: contoso-website resources: requests: cpu: 100m memory: 128Mi limits: cpu: 250m memory: 256Mi ports: - containerPort: 80 name: httpPoznámka:
V clusteru AKS, který má více fondů uzlů (Linux a Windows), soubor manifestu nasazení dříve uvedený také definuje, že
nodeSelectorcluster AKS má spustit pod ukázkové aplikace na uzlu, který může spouštět kontejnery Linuxu.Linuxové uzly nemůžou spouštět kontejnery Windows a naopak.
Soubor manifestu uložte a zavřete editor.
Použití manifestu
Spuštěním příkazu
kubectl applyv Cloud Shellu odešlete manifest nasazení do clusteru.kubectl apply -f ./deployment.yamlVýstup tohoto příkazu by měl vypadat zhruba jako v následujícím příkladu.
deployment.apps/contoso-website createdSpusťte příkaz
kubectl get deploya ověřte, jestli bylo nasazení úspěšné.kubectl get deploy contoso-websiteVýstupem tohoto příkazu by měla být tabulka podobná tabulce v následujícím příkladu.
NAME READY UP-TO-DATE AVAILABLE AGE contoso-website 0/1 1 0 16sSpusťte příkaz
kubectl get podsa ověřte, jestli pod běží.kubectl get podsVýstupem tohoto příkazu by měla být tabulka podobná tabulce v následujícím příkladu.
NAME READY STATUS RESTARTS AGE contoso-website-7c58c5f699-r79mv 1/1 Running 0 63s