Een toepassing implementeren in uw Azure Kubernetes Service-cluster

Voltooid

Uw bedrijf zoekt een manier om uw cloudgebaseerde videorenderingsservice te implementeren. U hebt Azure Kubernetes Service (AKS) gekozen als uw cloudeigen ontwikkelplatform. Nu het cluster is geconfigureerd, kunt u één van de onderdelen in uw videorenderingstoepassing implementeren. U besluit om een statische versie van uw bedrijfswebsite te implementeren om het Kubernetes-implementatieproces te verkennen.

Voordat we de implementatiemethode van Kubernetes bespreken, bekijken we een aantal stappen die u moet uitvoeren om een vergelijkbare toepassing naar een niet-Kubernetes-omgeving te implementeren.

Stel dat u een virtuele Azure-machine (VM) als uw doelplatform gebruikt. De eerste stap bestaat uit het voorbereiden van de serversoftware om de toepassing te hosten. U gaat het volgende doen:

  • Het besturingssysteem installeren.
  • Ervoor zorgen dat u het besturingssysteem wordt bijgewerkt naar de nieuwste beveiligings- en softwarepatches.
  • Software voor de webserver installeren en configureren.
  • De webtoepassing implementeren.

Herhaal dit proces voor elke nieuwe VIRTUELE machine wanneer u besluit om de website uit te schalen om een toename van de vraag van klanten af te handelen.

Een alternatieve methode is het uitvoeren van de website in een op een container gebaseerd platform zoals Azure Container Instances. U hoeft zich geen zorgen te maken over de onderliggende servertechnologie, maar u moet verschillende containers configureren en beheren om deze strategie handmatig te kunnen gebruiken.

Kubernetes en AKS helpen u met de indeling van containers. Met de Kubernetes-functies voor containerindeling is het eenvoudig om werkbelastingen op het cluster te beheren. U implementeert werkbelastingen met behulp van containers die zijn gebouwd op basis van containerinstallatiekopieën om uw toepassingen in een AKS-cluster uit te voeren.

Hier kunt u verkennen hoe u workloads maakt in uw AKS-cluster.

Wat is een containerregister?

In een containerregister kunt u veilig containerinstallatiekopieën opslaan in de cloud voor latere implementatie. U kunt het containerregister zien als een archief waarin meerdere versies van uw containerinstallatiekopie worden opgeslagen. Aan elke opgeslagen installatiekopie is een tag toegewezen voor identificatie.

Misschien hebt u bijvoorbeeld de installatiekopie contoso-website:latest, wat een andere versie is dan de installatiekopie met de tag contoso-website:v1.0.0.

A diagram that shows how container images are downloaded from a container registry to a Kubernetes cluster by using a manifest file.

Containerregisters kunnen openbaar of privé zijn. Voor privéregisters zijn referenties vereist voor toegang tot installatiekopieën en het downloaden van installatiekopieën. Dit is de strategie die u volgt wanneer u containerinstallatiekopieën opslaat.

Kubernetes staat u alleen toe om installatiekopieën te implementeren die in een containerregister worden gehost. Het maken van een privécontainerregister maakt normaal gesproken deel uit van uw standaard-AKS-implementatiestrategie.

Wat is een Kubernetes-pod?

Een Kubernetes-pod groepeert containers en toepassingen in een logische structuur. Deze pods hebben geen intelligentie en bestaan uit een of meer toepassingscontainers. Elke pod heeft een IP-adres, netwerkregels en beschikbaar gemaakte poorten.

Als u bijvoorbeeld alle werkbelastingen met betrekking tot de contoso-websitewerkbelasting wilt doorzoeken, zoekt u een query uit op het cluster voor pods met het label app en de waarde contoso-website.

Wat is Kubernetes-implementatie?

A diagram that shows a Kubernetes deployment with a label and three pods.

Een Kubernetes-implementatie is een evolutie van pods. Een implementatie verpakt de pods in een intelligent object waarmee ze kunnen worden uitgeschaald. U kunt uw toepassing eenvoudig dupliceren en schalen om meer belasting te ondersteunen zonder dat u complexe netwerkregels hoeft te configureren.

Met behulp van implementaties kunnen gebruikers toepassingen bijwerken door alleen de tag van de installatiekopie te wijzigen, zonder enige uitvaltijd. Wanneer u een implementatie bijwerkt in plaats van alle apps te verwijderen, worden de online-apps één voor één uitgeschakeld door de implementatie. Vervolgens worden ze vervangen door de nieuwste versie. Dit aspect betekent dat met eender welke implementatie de pods in die implementatie kunnen worden bijgewerkt, zonder zichtbare gevolgen voor de beschikbaarheid.

Kubernetes-manifestbestanden

Met een Kubernetes-manifestbestand kunt u uw werkbelastingen declaratief in de YAML-indeling beschrijven en het beheer van Kubernetes-objecten vereenvoudigen.

Stel dat u handmatig een werkbelasting moet implementeren. U moet dan rekening houden met verschillende aspecten, en deze beheren. U moet een container maken, een specifiek knooppunt selecteren, deze inpakken in een pod, de pod uitvoeren, de uitvoering bewaken, enzovoort.

Manifestbestanden bevatten alle informatie die u nodig hebt om de beschreven workload te maken en te beheren.

Wat is een Kubernetes-label?

Met een Kubernetes-label kunt u Kubernetes-objecten logisch groeperen. Met behulp van deze labels kan het systeem een query uitvoeren op het cluster voor objecten die overeenkomen met een label met een specifieke naam.

De structuur van een manifestbestand

De structuur van manifestbestanden is anders op basis van het type resource dat u maakt. Manifestbestanden delen echter algemene instructies. Met deze instructies worden verschillende aspecten gedefinieerd, zoals de API's die moeten worden gebruikt en het type werkbelasting dat moet worden gemaakt.

De eerste twee vermeldingen in alle manifestbestanden bevatten twee belangrijke sleutels, apiVersion en kind. Hier ziet u een voorbeeld van een implementatiebestand.

apiVersion: apps/v1 # Where in the API it resides
kind: Deployment # The kind of workload we're creating

De apiVersion sleutel definieert het API-servereindpunt dat het object beheert dat u implementeert.

De kind sleutel definieert de workload die door deze implementatie wordt gemaakt.

Andere algemene sleutels voor alle bestanden zijn de metadata- en name-sleutels. Alle Kubernetes-resources moeten een naam hebben. Deze naam wordt onderdeel van de metadata-sleutel.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: contoso-website # This will be the name of the deployment

Objecten in een implementatie groeperen

Voor implementaties wordt gebruikgemaakt van een label om pods te zoeken en te groeperen. U definieert het label als onderdeel van uw implementatiemanifestbestand.

Dit is een voorbeeld. Let op de matchLabels-waarde die is gedefinieerd in de selector-definitie die aan de spec-definitie is toegevoegd.

# deployment.yaml
# ...
spec:
  selector:
    matchLabels:
      app: contoso-website
# ...

Vanaf dit punt hebben alle bestanden verschillende structuren gebaseerd op het type resource dat door Kubernetes moet worden gemaakt.

Een implementatiebestand toepassen

U implementeert een Kubernetes-implementatiemanifestbestand met behulp van kubectl. Hier volgt een voorbeeld van de opdracht .

kubectl apply -f ./deployment.yaml

Test uw kennis

1.

Wat is een containerregister?

2.

Wat is een manifestbestand?