In onze Kubernetes quickstart handleiding hebben we laten zien hoe je je Kubernetes-cluster klaar maakt voor gebruik. Aan het eind kun je de status van je cluster opvragen, maar... hoe dan verder?
In Kubernetes begin je bijna altijd met het maken van een Deployment op basis van een container image. Als onderdeel daarvan worden één of meer Pods (een groep van één of meer containers) aangemaakt.
In deze handleiding laten we als voorbeeld zien hoe je een Kubernetes Deployment aanmaakt door een 'hello node' container image te deployen. In dit voorbeeld wordt hiervoor één Pod aangemaakt, maar in een praktische use case zijn dit eigenlijk atlijd meer Pods.
Voor de stappen in deze handleiding is het belangrijk dat je Kubectl hebt geïnstalleerd en je Kubeconfig-file hebt gedownload.
Een Kubernetes Hello Node Deployment maken
Stap 1
Maak een Deployment aan met het onderstaande commando. Hiervoor gebruiken we de hello-node container image van de officiële Kubernetes organisatie.
kubectl create deployment hello-node --image=registry.k8s.io/echoserver:1.4
Je krijgt de volgende bevestiging te zien:
deployment.apps/hello-node created
So far so good. 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
hello-node 1/1 1 1 54s
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
hello-node-74bfcb5b58-zkxdt 1/1 Running 0 1m2s
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
De Pod is standaard alleen bereikbaar vanuit het interne virtuele netwerk van je Kubernetes-cluster en niet via het publieke internet. Om je hello-node container bereikbaar te maken voor het publieke internet 'expose' je de Pod als een Kubernetes Service van het type 'LoadBalancer'.
kubectl expose deployment hello-node --type=LoadBalancer --port=8080
- 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 applicatie in de 'hello node' container image luistert alleen naar verkeer op poort 8080. In een eigen use case kan dit prima een andere poort zijn.
Je krijgt een duidelijke bevestiging te zien:
service/hello-node 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
hello-node LoadBalancer 10.105.123.234 86-123-234-123.haip.transip.net 8080:30625/TCP 1m1s
kubernetes ClusterIP 10.96.0.1 443/TCP 11d
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 :8080 voor de poort waar je Service op luistert, bijvoorbeeld: 86-123-234-123.haip.transip.net:8080.
Het external-IP dat je hier ziet is in feite een subdomein. Het daadwerkelijke IP-adres is de getallenreeks maar dan met . in plaats van - oftewel 86.123.234.123. Je kunt ook te allen tijde in het controlepaneel de IP-adressen terug zien van je load balancers door bij je cluster naar het tabblad 'Load Balancers' te navigeren.
Je krijgt in tegenstelling tot wat je misschien verwacht niet een soort 'hello world' bericht te zien, maar enige client informatie:
CLIENT VALUES:
client_address=10.128.0.3
command=GET
real path=/
query=nil
request_version=1.1
request_uri=http://86-123-234-123.haip.transip.net:8080/
SERVER VALUES:
server_version=nginx: 1.10.0 - lua: 10001
HEADERS RECEIVED:
accept=text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
accept-encoding=gzip, deflate
accept-language=en-US,en;q=0.5
connection=keep-alive
host=86-105-246-14.haip.transip.net:8080
upgrade-insecure-requests=1
user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:105.0) Gecko/20100101 Firefox/105.0
BODY:
-no body in request-
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 het verwijderen van de daadwerkelijke Deployment.
kubectl delete service hello-node
kubectl delete deployment hello-node
Mocht je niet meer zeker weten hoe je Service(s) 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 deployen van een hello node in Kubernetes. In een toekomstige update voegen we hier een overzicht toe van handleidingen voor het opzetten van specifieke use cases.