Winkelwagen

    Sorry, we konden geen resultaten vinden voor jouw zoekopdracht.

    Kubernetes Deployments via YAML Objects

    In een Kubernetes-cluster maak je in veel gevallen gebruik van een Deployment. Als onderdeel van een Deployment worden één of meer Pods (een groep van één of meer containers) aangemaakt. In de praktijk gebruikt men hier meestal Kubernetes (YAML) objects voor, of een package manager zoals Helm.

    In deze handleiding laten we zien hoe je een Kubernetes Deployment maakt door gebruikt te maken van Kubernetes objects. Meer informatie over Kubernetes objects en het maken daarvan, vind je in onze artikelen 'Wat zijn Kubernetes objects' en 'Kubernetes (yaml) objects maken'.

    Voor de stappen in deze handleiding is het belangrijk dat je Kubectl hebt geïnstalleerd en je Kubeconfig-file hebt gedownload.

    Een Deployment maken met een Kubernetes object

     

    Een Kubernetes object bevat de specificiaties van de gewenste status van een Kubernetes-cluster, zoals de gebruikte Kubernetes API versie, de container image, aantal replica's, etc. In deze handleiding gebruiken we een voorbeeld object van de officiële Kubernetes-organisatie dat terug te vinden is op https://k8s.io/examples/application/deployment.yaml. Je bent vrij hiervoor een eigen object te gebruiken.

     

    Stap 1

    Maak een Deployment aan met het onderstaande commando. Als je een ander object wil deployen dan dit voorbeeld, vervang dan het adres https://k8s.io/examples/application/deployment.yaml door het adres waar het gewenste object gehost wordt, of de locatie van het .yaml-bestand op je computer.

    kubectl apply -f https://k8s.io/examples/application/deployment.yaml 

    Je krijgt de volgende bevestiging te zien:

    deployment.apps/nginx-deployment created

    Je Deployment op basis van een .yaml object is nu klaar voor gebruik. We doorlopen gelijk enkele nuttige beheercommando's waarmee je de status van verschillende aspecten van je Deployment kunt controleren.

     

    De status van je Deployment controleren

    Controleer gelijk de status van je nieuwe Deployment met het commando:

    kubectl get deployments

    Host je meerdere Deployments? Dan zie je die allemaal terug met dit commando. Als dit je enige Deployment is, ziet de output er als volgt uit:

    NAME               READY   UP-TO-DATE   AVAILABLE   AGE
    nginx-deployment   2/2     2            2           21s

     

    De status van je Pods controleren

    Controleer vervolgens de status van je Pods:

    kubectl get pods

    De output ziet er als volgt uit. Het maakt niet uit hoeveel Pods je hebt of tot welke Deployments die behoren, je ziet ze hier allemaal terug. Je Deployment herken je aan dat de naam van je Pod altijd begint met de naam van je Deployment.

    NAME                               READY   STATUS    RESTARTS   AGE
    nginx-deployment-9456bbbf9-m25sr   1/1     Running   0          52s
    nginx-deployment-9456bbbf9-wwczr   1/1     Running   0          52s

    Er zijn nog veel meer commando's beschikbaar. Een overzicht van enkele van de nuttigste voor het beheer van jouw cluster vind je in deze handleiding.


     

    Stap 2

    Een Pod is standaard alleen bereikbaar vanuit het interne virtuele netwerk van je Kubernetes-cluster en niet via het publieke internet. Om de containers in dit voorbeeld bereikbaar te maken voor het publieke internet 'expose' je de Pods als een Kubernetes Service van het type 'LoadBalancer'.

    kubectl expose deployment nginx-deployment --type=LoadBalancer --port=80
    • De toevoeging --type=LoadBalancer geeft aan dat je een LoadBalancer Service wil aanmaken en zo je Pods wil exposen aan het publieke internet. Hiervoor wordt in onze systemen automatisch een HA-IP loadbalancer aangemaakt voor jouw Deployment.
    • De Nginx-applicatie luistert naar verkeer op poort 80, zie de opmaak van dit specifieke object in ons artikel 'Wat zijn Kubernetes objects'. Gebruik je een ander object voor jouw Deployment, controleer dan daarin het poortnummer en pas dat hier aan.

    Je krijgt een duidelijke bevestiging te zien:

    service/nginx-deployment exposed

    De status van je LoadBalancer Service (en alle andere Kubernetes Services op jouw cluster) zie je terug met het commando:

    kubectl get services

    Bij een nieuw cluster ziet de output er ongeveer als volgt uit:

    NAME               TYPE           CLUSTER-IP       EXTERNAL-IP   PORT(S)        AGE
    kubernetes         ClusterIP      10.96.0.1        <none>        443/TCP        42d
    nginx-deployment   LoadBalancer   10.123.234.123   <pending>     80:31867/TCP   15s

    Pending geeft aan dat de loadbalancer nog aangemaakt wordt. Doorgaans duurt dit maximaal een minuut of twee. Hierna zie je onder 'EXTERNAL-IP' het externe IP-adres van de loadbalancer terug.


     

    Stap 3

    Tot slot blijft er nog één ding over: het testen van je hello node Deployment.

    Open een browser en ga naar het IP-adres dat je aan het eind van stap 2 onder 'EXTERNAL-IP' ziet, met de toevoeging :80 voor de poort waar je Service op luistert, bijvoorbeeld: 86.123.234.123.haip.transip.net:80

    Als je het voorbeeld object gebruikt hebt om een Deployment aan te maken, krijg je nu een Nginx welkomstpagina te zien.

    Voor het daadwerkelijk gebruiken van je eigen website zijn aanvullende stappen nodig: Je kunt of je website in een keer in een container stoppen en die deployen, of naast nginx ook een FTP-server deployen. We lichten deze opties in de toekomst in een apart artikel toe.


    Je Deployment en bijbehorende services verwijderen

     

    Nu je klaar bent met het testen van een hello node Deployment, wil je deze allicht verwijderen. Dit bestaat uit twee onderdelen: het verwijderen van aangemaakte Services en het verwijderen van de daadwerkelijke Deployment.

    kubectl delete service nginx-deployment
    kubectl delete deployment nginx-deployment

    Mocht je niet meer zeker weten hoe je Service of je Deployment heet, dan kun je die opnieuw opvragen met respectievelijk:

    kubectl get services
    kubectl get deployments

     

    Dit brengt ons bij het eind van deze handleiding over het maken van Deployments op basis van objects in Kubernetes.

    Kom je er niet uit?

    Ontvang persoonlijke hulp van onze supporters

    Neem contact op