Zephyrnet-logo

Een uitgebreide gids over Kubernetes

Datum:


Introductie

Vandaag gaan we in deze handleiding dieper in op Kubernetes en gebruiken we het om containers op grote schaal in te zetten en te beheren.

Container- en microservice-architectuur hadden meer gebruikt om moderne apps te maken. Kubernetes is open-sourcesoftware waarmee u containers op schaal kunt implementeren en beheren. Het verdeelt containers in logische delen om het beheer, de detectie en het schalen van uw toepassing gemakkelijker te maken.

Het belangrijkste doel van deze gids is om een ​​compleet overzicht van het Kubernetes-ecosysteem te bieden, terwijl het eenvoudig en duidelijk blijft. Het behandelt de kernideeën van Kubernetes voordat ze worden toegepast op een realistisch scenario.

Zelfs als u geen eerdere ervaring met Kubernetes heeft, is dit artikel een uitstekend startpunt voor uw reis.

Dus laten we zonder verder oponthoud beginnen met dit leren.

Waarom Kubernetes?

Voordat we ingaan op de technische ideeën, laten we beginnen met waarom een ​​ontwikkelaar Kubernetes in de eerste plaats zou moeten gebruiken. Hier zijn een paar redenen waarom ontwikkelaars Kubernetes in hun projecten zouden moeten gebruiken.

Draagbaarheid

Bij het gebruik van Kubernetes lijkt het verplaatsen van gecontaineriseerde applicaties van ontwikkeling naar productie een eenvoudig proces. Met Kubernetes kunnen ontwikkelaars containers in verschillende omgevingen orkestreren, waaronder on-premises infrastructuur, openbare en hybride clouds.

Schaalbaarheid

Kubernetes vereenvoudigt het proces van het definiëren van complexe gecontaineriseerde applicaties en deze wereldwijd te implementeren over meerdere clusters van servers door resources te verminderen op basis van uw gewenste status. Kubernetes controleert en onderhoudt automatisch de status van containers bij het horizontaal schalen van applicaties.

rekbaarheid

Kubernetes heeft een enorme en steeds groter wordende verzameling extensies en plug-ins gemaakt door ontwikkelaars en bedrijven die het eenvoudig maken om unieke mogelijkheden aan uw clusters toe te voegen, zoals beveiliging, monitoring of beheer.

Concepts

Het gebruik van Kubernetes vereist een goed begrip van de verschillende abstracties die het gebruikt om de toestand van het systeem weer te geven. Dat is de focus van dit onderdeel. We maken kennis met de essentiële concepten en geven u een beter beeld van de totale architectuur.

Pods

Een pod is een verzameling van meerdere containers met applicaties die opslag delen, een uniek cluster-IP-adres en instructies om ze uit te voeren (bijvoorbeeld poorten, herstarten, containerimage en foutbeleid).

Ze vormen de basis van het Kubernetes-platform. Bij het maken van een service of implementatie maakt Kubernetes een pod met de container erin.

Elke pod wordt uitgevoerd op het knooppunt waar het is gepland en blijft daar totdat het wordt beëindigd of verwijderd. Als het knooppunt uitvalt of stopt, plant Kubernetes automatisch identieke pods op de andere beschikbare knooppunten van het cluster.

Concepten | Gids over Kubernetes
Afbeelding-2

Knooppunt

Een knoop punt is een werkmachine in een Kubernetes-cluster die virtueel of fysiek kan zijn, afhankelijk van het clustertype. De master heeft de leiding over elk knooppunt. De master plant onvrijwillig pods over alle knooppunten in het cluster, op basis van hun beschikbare resources en huidige configuratie.

Elk knooppunt is vereist om ten minste twee services uit te voeren:

  • Kubelet is een proces dat communiceert tussen de Kubernetes-master en het knooppunt.
  • Een containerruntime is verantwoordelijk voor het downloaden en uitvoeren van een containerimage (bijv. Docker)
Knooppunt
Afbeelding-3

Diensten

Een service is een abstractie die een logische set pods beschrijft en het beleid voor toegang tot deze. Services maken de losse koppeling van afhankelijke pods mogelijk.

Hoewel elke pod een apart IP-adres heeft, zijn die adressen niet zichtbaar voor de buitenwereld. Als gevolg hiervan stelt een service uw implementatie in staat verkeer van externe bronnen te ontvangen.

We kunnen op verschillende manieren diensten aanbieden:

  • ClusterIP (standaard) – Stel de poort alleen bloot aan de interne onderdelen van het cluster.
  • NodePort - Gebruik NAT om de service op dezelfde poort op elk knooppunt in het cluster te onthullen
  • Loadbalancer – Maak een externe load balancer om de service naar een opgegeven IP-adres te exporteren.
Gids over Kubernetes
Afbeelding-4

implementaties

Implementaties bevatten een beschrijving van de gewenste status van uw toepassing. De implementatiecontroller zorgt ervoor dat de huidige status van de toepassing overeenkomt met die beschrijving.

Een implementatie voert automatisch veel replica's van uw programma uit en vervangt alle instanties die mislukken of niet meer reageren. Implementaties helpen om te weten dat uw programma klaar is om gebruikersverzoeken op deze manier te verwerken.

implementaties
Afbeelding-5

Installatie

Voordat we ons cluster gaan bouwen, moeten we eerst Kubernetes installeren op ons lokale werkstation.

Docker-bureaublad

Als u Docker-desktop op Windows of Mac gebruikt, kunt u Kubernetes rechtstreeks installeren vanuit het instellingenvenster van de gebruikersinterface.

Overig

Als u het Docker-bureaublad niet gebruikt, raad ik u aan de officiële installatie procedure voor Kubectl en Minikube.

De Basis

Nu we de fundamentele ideeën hebben behandeld. Laten we verder gaan met de praktische kant van Kubernetes. In dit hoofdstuk wordt u door de basisprincipes geleid die nodig zijn om apps in een cluster te implementeren.

Cluster maken

Wanneer u Minikube start, vormt het onmiddellijk een cluster.

minikube start

Na installatie zou de Docker-desktop ook automatisch een cluster moeten bouwen. U kunt de volgende opdrachten gebruiken om te zien of uw cluster actief is:

# Informatie verkrijgen over het cluster kubectl cluster-info # Alle knooppunten van het cluster kubectl ophalen knooppunten

Een applicatie implementeren:

Nu we de installatie hebben voltooid en ons eerste cluster hebben opgezet, zijn we klaar om een ​​toepassing op Kubernetes te implementeren.

kubectl create deployment nginx --image=nginx:latest

We gebruiken de opdracht create deployment en geven invoer door als de naam van de implementatie en de containerafbeelding. In dit voor beeld wordt Nginx geïmplementeerd met één container en één replica.

Met de opdracht get deployments kunt u uw actieve implementaties bekijken.

kubectl get deployments

Informatie over implementaties

Hier volgen enkele opdrachten die u kunt gebruiken om meer te weten te komen over uw Kubernetes-implementaties en pods.

Alle pods verkrijgen

Met de opdracht kubectl get pods kun je een lijst krijgen van alle actieve pods:

kubectl get pods

Gedetailleerde beschrijving van een pod

Gebruik de opdracht description om meer gedetailleerde informatie over een pod te krijgen.

kubectl describe pods

Logboeken van een pod

De gegevens die uw toepassing naar STDOUT zou verzenden, worden containerlogboeken. De volgende opdracht geeft u toegang tot die logboeken.

kubectl logs $POD_NAME

Opmerking: u kunt de naam van uw pod achterhalen door de opdrachten get pods te gebruiken of pods te beschrijven.

Commando uitvoeren in Container

De opdracht kubectl exec, die de naam van de pod en de term gebruikt om als argumenten uit te voeren, stelt ons in staat om opdrachten rechtstreeks in onze container uit te voeren.

kubectl exec $POD_NAME command

Laten we eens kijken naar een voorbeeld waarbij we een bash-terminal in de container starten om te zien wat ik bedoel.

kubectl exec -it $POD_NAME bash

App openbaar maken

Een service stelt, zoals eerder gezegd, een beleid vast waarmee de implementatie toegankelijk kan zijn. We zullen in deze sectie bekijken hoe dit wordt bereikt en in andere alternatieven die u heeft wanneer u uw services aan het publiek bekendmaakt.

Een dienst ontwikkelen:

We kunnen een service bouwen met de opdracht create-service, die de poort die we willen vrijgeven en het soort poort als parameters neemt.

kubectl create service nodeport nginx --tcp=80:80

Het genereert service voor onze Nginx-implementatie en stelt poort 80 van onze container bloot aan een poort op onze hostcomputer.

Gebruik op het hostsysteem de opdracht kubectl get services om de poort te verkrijgen:

dataset
Afbeelding door auteur

Zoals je kunt zien, was poort 80 van de container gerouteerd naar poort 31041 van mijn hostmachine. Als u de poort hebt, kunt u uw implementatie testen door toegang te krijgen tot uw localhost op die poort.

Een dienst verwijderen

De opdracht delete service kan ook worden gebruikt om bestaande services te verwijderen.

kubectl delete service nginx

De app opschalen

Uw applicatie op en neer schalen is een fluitje van een cent met Kubernetes. Door deze opdracht te gebruiken, kunt u het aantal replica's wijzigen en Kubernetes zal alles voor u genereren en onderhouden.

kubectl scale deployments/nginx --replicas=5

Deze opdracht repliceert onze Nginx-service naar maximaal vijf replica's.

Deze manier van applicatie-implementatie werkt goed voor kleine apps met één container, maar mist het overzicht en de herbruikbaarheid die vereist zijn voor grotere applicaties. YAML-bestanden zijn handig in deze situatie.

Met YAML-bestanden kunt u uw implementatie, services en pods specificeren met behulp van een opmaaktaal, waardoor ze beter herbruikbaar en schaalbaar zijn. De volgende hoofdstukken gaan uitgebreid in op Yaml-bestanden.

Kubernetes-object in YAML

Elk object in Kubernetes was uitgedrukt als een declaratief YAML-object dat specificeert wat en hoe het moet worden uitgevoerd. Deze bestanden waren vaak gebruikt om de herbruikbaarheid van resourceconfiguraties, zoals implementaties, services en volumes, te bevorderen.

Deze sectie leidt u door de basisprincipes van YAML en hoe u een lijst met alle beschikbare parameters en kenmerken voor een Kubernetes-object kunt verkrijgen. We bladeren door de implementatie- en servicebestanden om de syntaxis te begrijpen en hoe deze was geïmplementeerd.

Parameters van verschillende objecten

Er zijn talloze Kubernetes-objecten en het is moeilijk om elke instelling te onthouden. Dat is waar het commando explain binnenkomt.

U kunt ook documentatie voor een specifiek veld verkrijgen door de syntaxis te gebruiken:

kubectl explain deployment.spec.replicas

implementatie bestand

Voor het gemak van herbruikbaarheid en veranderbaarheid worden meer geavanceerde implementaties doorgaans geschreven in YAML.

De basisbestandsstructuur is als volgt:

apiVersion: apps/v1 soort: Metadata van implementatie: # De naam en het label van uw implementatienaam: mongodb-implementatielabels: app: mongo spec: # Hoeveel exemplaren van elke pod wilt u replica's: 3 # Welke pods worden hiermee beheerd deployment selector: matchLabels: app: mongo # Normale podconfiguratie / Definieert containers, volumes en omgevingsvariabele sjabloon: metadata: # label de pod-labels: app: mongo spec: containers: - naam: mongo afbeelding: mongo:4.2 poorten: - containerPort : 27017

Er zijn verschillende cruciale secties in het YAML-bestand:

  • apiVersion – Specificeert de API-versie.
  • soort – Het Kubernetes-objecttype dat in het bestand is gedefinieerd (bijv. implementatie, service, persistent volume, …)
  • metadata: een beschrijving van uw YAML-component die de naam, labels en andere informatie van de component bevat.
  • spec: specificeert de kenmerken van uw implementatie, zoals replica's en resourcebeperkingen.
  • template: de podconfiguratie van het implementatiebestand.

Nu u de basisindeling begrijpt, kunt u de opdracht Apply gebruiken om het bestand te implementeren.

Servicebestand

Servicebestanden zijn op dezelfde manier gestructureerd als implementaties, met kleine variaties in de parameters.

apiVersion: v1 soort: Service metadata: naam: mongo spec: selector: app: mongo poorten: - poort: 27017 targetPort: 27017 type: LoadBalancer

Opbergen

Wanneer de container opnieuw wordt opgestart of de pod wordt verwijderd, wordt het volledige bestandssysteem verwijderd. Het is een goed teken, omdat het ervoor zorgt dat uw staatloze toepassing niet verstopt raakt met onnodige gegevens. In andere omstandigheden is het behouden van de gegevens van uw bestandssysteem van cruciaal belang voor uw toepassing.

Er zijn verschillende soorten opslag beschikbaar:

  • Het containerbestandssysteem slaat de gegevens van een enkele container op tot zijn bestaan.
  • Met volumes kunt u gegevens opslaan en deze tussen containers delen zolang de pod actief is.
  • Gegevens zijn opgeslagen, zelfs als de pod wordt gewist of opnieuw wordt opgestart met behulp van permanente volumes. Ze zijn de langetermijnopslag van uw Kubernetes-cluster.

Volumes

Met volumes kunt u gegevens tussen talloze containers in de pod opslaan, uitwisselen en bewaren. Het is handig als u pods hebt met veel containers die gegevens communiceren.

In Kubernetes zijn er twee fasen voor het gebruik van een volume:

  • Het volume was bepaald door de pod.
  • De container gebruikt volume-mounts om het volume toe te voegen aan een bepaald bestandssysteempad.

U kunt een volume aan uw pod toevoegen met behulp van de syntaxis:

apiVersion: v1 soort: Pod-metadata: naam: nginx spec: containers: - naam: nginx afbeelding: nginx volumeMounts: - naam: nginx-storage mountPath: /etc/nginx volumes: - naam: nginx-storage emptyDir: {}

Hier wordt de volume-tag gebruikt om een ​​volume te leveren dat is gekoppeld aan een bepaalde map van het containerbestandssysteem (in dit geval /etc/nginx).

Aanhoudende volumes

Deze zijn bijna identiek aan conventionele volumes, met unieke verschilgegevens die bewaard zijn gebleven, zelfs als de pod wordt gewist. Daarom worden ze gebruikt voor langdurige gegevensopslag, zoals een database.

Een Persistent Volume Claim (PVC)-object, dat via een reeks abstracties verbinding maakt met backend-opslagvolumes, is de meest typische manier om een ​​persistent volume te definiëren.

Voorbeeld van YAML-configuratiebestand.

apiVersion: v1 soort: PersistentVolumeClaim metadata: naam: pv-claim labels: app: sampleAppName spec: accessModes: - ReadWriteOnce bronnen: verzoeken: opslag: 20Gi

Er zijn meer opties om uw gegevens in Kubernetes op te slaan en u kunt het proces zoveel mogelijk automatiseren. Hier is een lijst met een paar interessante onderwerpen om naar te kijken.

Computerbronnen

Met het oog op de indeling van containers is het beheer van rekenresources voor uw containers en toepassingen van cruciaal belang.

Wanneer uw containers een bepaald aantal resources hebben, kan de planner verstandige beslissingen nemen over welk knooppunt de pod moet worden geplaatst. U zult ook minder problemen hebben met resourceconflicten met diverse implementaties.

In de volgende twee delen gaan we dieper in op twee soorten resourcedefinities.

Aanvragen

Verzoeken vertellen Kubernetes wat de pod nodig heeft en dat het de pod alleen op knooppunten mag plaatsen die aan die behoeften voldoen. Verzoeken worden gedefinieerd in de resourcetag van uw container.

Grenzen

Bronbeperkingen worden gebruikt om het geheugen en het CPU-gebruik van een pod te beperken en de maximale hoeveelheid bronnen in te stellen die het nooit kan overtreffen.

Secrets

Met geheimen in Kubernetes kunt u gevoelige gegevens zoals wachtwoorden, API-tokens en SSH-sleutels veilig opslaan en beheren.

Als u een geheim in uw pod wilt gebruiken, moet u er eerst naar verwijzen. Het kan op veel verschillende manieren gebeuren:

  • Een omgevingsvariabele gebruiken en als een bestand op een schijf die is gekoppeld aan een container.
  • Wanneer kubelet een afbeelding uit een privéregister haalt.

Een geheim maken

Geheimen waren gemaakt met behulp van de kubelet-opdrachttool of door een geheim Kubernetes-object in YAML te declareren.

De kubus gebruiken

Met Kubelet kunt u geheimen maken met een create-opdracht waarvoor alleen de gegevens en de geheime naam nodig zijn. De gegevens worden ingevoerd met behulp van een bestand of een letterlijke.

kubectl create secret generic admin-credentials --from-literal=user=poweruser --from-literal=password='test123'

Als u een bestand gebruikt, ziet dezelfde functionaliteit er als volgt uit.

echo -n 'poweruser' > ./gebruikersnaam.txt echo -n 'test123' > ./password.txt kubectl maak geheime generieke admin-credentials--from-file=./username.txt --from-file=./ wachtwoord.txt

Gebruik maken van definitiebestanden

Geheimen kunnen, net als andere Kubernetes-objecten, worden gedeclareerd in een YAML-bestand.

apiVersion: v1 soort: Geheime metadata: naam: geheime-apikey data: apikey: YWRtaW4=

Uw gevoelige informatie wordt in het geheim opgeslagen als een sleutel-waardepaar, met apiKey als de sleutel en YWRtaW4= als de gedecodeerde basiswaarde.

Met behulp van de opdracht Apply kunt u nu het geheim genereren.

kubectl apply -f secret.yaml

Gebruik in plaats daarvan het kenmerk stringData als u gewone gegevens wilt geven en Kubernetes de codering wilt laten afhandelen.

apiVersion: v1 soort: geheime metadata: naam: platte tekst-geheime stringData: wachtwoord: test

ImagePullSecrets

Als u een afbeelding uit een privéregister haalt, moet u zich mogelijk eerst verifiëren. Wanneer al uw knooppunten een specifieke afbeelding moeten maken, bewaart een ImagePullSecrets-bestand de authenticatie-informatie en maakt deze voor hen beschikbaar.

apiVersion: v1 soort: Pod metadata: naam: private-image spec: containers: - naam: privateapp image: gabrieltanner/graphqltesting imagePullSecrets: - naam: authenticatie-geheim

Namespaces

Naamruimten zijn virtuele clusters die werden gebruikt om grote projecten te beheren en clusterbronnen aan veel gebruikers toe te wijzen. Ze bieden verschillende namen en kunnen in elkaar worden genest.

Het beheren en gebruiken van naamruimten met kubectl is eenvoudig. In dit gedeelte wordt u door de meest voorkomende naamruimteacties en -opdrachten geleid.

Kijk naar de bestaande naamruimten

U kunt de opdracht kubectl get namespaces gebruiken om alle momenteel toegankelijke naamruimten van uw cluster te zien.

kubectl get namespaces # Uitvoer NAAM STATUS LEEFTIJD standaard Actief 32d docker Actief 32d kube-public Actief 32d kube-system Actief 32d

Naamruimte maken

Naamruimten kunnen worden gemaakt met de kubectl CLI of door YAML te gebruiken om een ​​Kubernetes-object te maken.

kubectl create namespace testnamespace # Output namespace/testnamespace aangemaakt

Dezelfde functionaliteit kan worden bereikt met een YAML-bestand.

apiVersion: v1 soort: naamruimte metadata: naam: testnamespace

De opdracht kubectl apply kan vervolgens worden gebruikt om het configuratiebestand toe te passen.

kubectl apply -f testNamespace.yaml

Naamruimte filteren

Wanneer een nieuw object in Kubernetes is gemaakt zonder een aangepaste naamruimte-eigenschap, wordt dit toegevoegd aan de standaardnaamruimte.

U kunt dit doen als u uw item in een andere werkruimte wilt bouwen.

kubectl create deployment --image=nginx nginx --namespace=testnamespace

U kunt nu de opdracht get gebruiken om te filteren op uw implementatie.

kubectl get deployment --namespace=testnamespace

Naamruimte wijzigen

U hebt nu geleerd hoe u objecten construeert in een andere naamruimte dan de standaardnaam. Het toevoegen van de naamruimte aan elke opdracht die u wilt uitvoeren, kost echter tijd en geeft een foutmelding.

Als gevolg hiervan kunt u de opdracht set-context gebruiken om de standaardcontext te wijzigen waarop instructies van toepassing waren.

kubectl config set-context $(kubectl config current-context) --namespace=testnamespace

De opdracht get-context kan worden gebruikt om de wijzigingen te valideren.

kubectl config get-contexts # Uitvoer HUIDIGE NAAM CLUSTER AUTHINFO NAMESPACE * Standaard Standaard Standaard testnaamruimte

Kubernetes met Docker Compose

Voor individuen die uit de Docker-gemeenschap komen, kan het schrijven van Docker Compose-bestanden in plaats van Kubernetes-objecten eenvoudig zijn. Kompose komt in deze situatie om de hoek kijken. Het gebruikt een eenvoudige CLI om uw docker-compose-bestand naar Kubernetes (opdrachtregelinterface) te converteren of te implementeren.

Hoe Kompose te installeren

Het is eenvoudig en snel te implementeren op alle drie de volwassen besturingssystemen.

Om Kompose op Linux of Mac te installeren, krul je de binaire bestanden.

# Linux curl -L https://github.com/kubernetes/kompose/releases/download/v1.21.0/kompose-linux-amd64 -o kompose # macOS curl -L https://github.com/kubernetes/kompose/ releases/download/v1.21.0/kompose-darwin-amd64 -o kompose chmod +x kompose sudo mv ./kompose /usr/local/bin/kompose

Implementeren met Kompose

Kompose implementeert Docker Compose-bestanden op Kubernetes met behulp van bestaande Docker Compose-bestanden. Beschouw het volgende samengestelde bestand als voorbeeld.

versie: "2" services: redis-master: afbeelding: k8s.gcr.io/redis:e2e-poorten: - "6379" redis-slave: afbeelding: gcr.io/google_samples/gb-redisslave:v1-poorten: - "6379 " omgeving: - GET_HOSTS_FROM=dns frontend: afbeelding: gcr.io/google-samples/gb-frontend:v4 poorten: - "80:80" omgeving: - GET_HOSTS_FROM=dns-labels: kompose.service.type: LoadBalancer

Met Kompose kunnen we, net als Docker Compose, onze setup implementeren met een enkele opdracht.

kom op

Je zou nu in staat moeten zijn om de bronnen te zien die waren geproduceerd.

kubectl get deployment,svc,pods,pvc

Kompose omzetten

Kompose kan ook uw bestaande Docker Compose-bestand omzetten in het Kubernetes-object dat u nodig hebt.

kompose convert

De opdracht Apply was gebruikt om uw toepassing te implementeren.

kubectl apply -f filenames

Toepassing Implementatie

Nu je de theorie en alle kernideeën van Kubernetes onder de knie hebt, is het tijd om het geleerde in de praktijk te brengen. In dit hoofdstuk wordt uitgelegd hoe u Kubernetes gebruikt om een ​​backend-applicatie te implementeren.

De specifieke toepassing van deze tutorial is een GraphQL-boilerplate voor het backend-framework van Nest.js.

Laten we eerst de repository klonen.

git clone https://github.com/[user name]/nestjs-graphql-boilerplate.git

Afbeeldingen naar een register

We moeten de afbeeldingen eerst naar een openbaar toegankelijk Image Register pushen voordat we beginnen met de constructie van Kubernetes-objecten. Het kan een openbaar register zijn zoals DockerHub of een eigen privéregister.

Bezoek dit bericht voor meer informatie over het maken van je eigen privé Docker-afbeelding.

Om de afbeelding te pushen, neemt u de afbeeldingstag op in uw Compose-bestand samen met het register dat u wilt verplaatsen.

versie: '3' services: nodejs: build: context: ./ dockerfile: Dockerfile afbeelding: gabrieltanner.dev/nestgraphql herstart: altijd omgeving: - DATABASE_HOST=mongo - PORT=3000 poorten: - '3000:3000' depend_on: [mongo ] mongo: afbeelding: mongo poorten: - '27017:27017' volumes: - mongo_data:/data/db volumes: mongo_data: {}

Ik gebruikte een privéregister dat ik eerder had ingesteld, maar DockerHub zou net zo goed werken.

Kubernetes-objecten maken

Nu u uw afbeelding naar een register heeft gepubliceerd, gaan we onze Kubernetes-objecten schrijven.

Maak om te beginnen een nieuwe map waarin u de implementaties wilt opslaan.

mkdir-implementaties cd-implementaties touch mongo.yaml touch nestjs.yaml

Dit is hoe de MongoDB-service en -implementatie eruit zullen zien.

apiVersion: v1 soort: Service metadata: naam: mongo spec: selector: app: mongo poorten: - poort: 27017 targetPort: 27017 --- apiVersion: apps/v1 soort: implementatie metadata: naam: mongo spec: selector: matchLabels: app : mongo-sjabloon: metadata: labels: app: mongo spec: containers: - naam: mongo afbeelding: mongo-poorten: - containerPort: 27017

Een implementatieobject met een enkele MongoDB-container met de naam mongo was in het bestand opgenomen. Het wordt ook geleverd met een service waarmee het Kubernetes-netwerk poort 27017 kan gebruiken.

Omdat de container enkele aanvullende instellingen vereist, zoals omgevingsvariabelen en imagePullSecrets, is het Nest.js Kubernetes-object iets gecompliceerder.

Een load balancer helpt de service die de poort beschikbaar maakt op de hostcomputer.

Implementeer de applicatie

Nu de Kubernetes-objectbestanden gereed zijn. Laten we kubectl gebruiken om ze te implementeren.

kubectl Apply -f mongo.yaml kubectl Apply -f nestjs.yaml

Op localhost/graphql zou je nu de GraphQL-speeltuin moeten zien.

Gefeliciteerd, u heeft zojuist uw eerste Kubernetes-toepassing geïmplementeerd.

De applicatie implementeren | Gids over Kubernetes
Afbeelding-6

Je hebt volgehouden tot het einde! Ik hoop dat deze handleiding je een beter begrip heeft gegeven van Kubernetes en de manier waarop je Kubernetes kunt gebruiken om je ontwikkelproces te verbeteren, met betere oplossingen van productiekwaliteit.

Kubernetes is gemaakt met behulp van de tien jaar ervaring van Google met het op grote schaal uitvoeren van gecontaineriseerde apps. Het is al overgenomen door de beste leveranciers van openbare cloud en technologieleveranciers en wordt nu overgenomen door de meeste softwarefabrikanten en bedrijven. Het resulteerde zelfs in de oprichting van de Cloud Native Computing Foundation (CNCF) in 2015, het eerste project dat afstudeerde onder CNCF en begon met het stroomlijnen van het container-ecosysteem naast andere containergerelateerde projecten zoals CNI, Containers, Envoy, Fluentd, gRPC, Jagger, Linkerd en Prometheus. Het onberispelijke ontwerp, de samenwerking met marktleiders, het open source maken en altijd openstaan ​​voor ideeën en bijdragen, kunnen de belangrijkste redenen zijn voor zijn populariteit en goedkeuring op zo'n hoog niveau.

Deel dit met andere ontwikkelaars, als je het nuttig vindt.

Bekijk de onderstaande links voor meer informatie over Kubernetes:

Leer basisprincipes van onze blog.

Referenties

Afbeelding-1 – Foto door  Ian Taylor On Unsplash

Afbeelding-2,3,4,5 – https://kubernetes.io/docs/tutorials/kubernetes-basics/

Afbeelding-6 – Foto door  Xan Griffioen On Unsplash

De in dit artikel getoonde media zijn geen eigendom van Analytics Vidhya en worden naar goeddunken van de auteur gebruikt. 

Bron: https://www.analyticsvidhya.com/blog/2022/01/a-comprehensive-guide-on-kubernetes/

spot_img

Laatste intelligentie

spot_img

Chat met ons

Hallo daar! Hoe kan ik u helpen?