Med sin egen stak planlæggere og controllere kan Kubernetes gendanne fra mindre fejl, knudepunkter, der fejler, eller apps, der går ned fra deres pods. Men hvis der sker mange nedbrud, har det muligvis ikke noget med infrastrukturen at gøre, men alt at gøre med din app, som Kubernetes kan forsøge at genstarte igen og igen, men da koden er skyld, vil fejlen fortsætte og kan endda gå ubemærket hen.
Den slags fejl, der går ubemærket hen for de fleste gange, er dem, hvor apps ikke går ned, men ender med at bruge systemressourcer og skade klyngerne over al ydeevne. Dette er de særligt ubehagelige tilfælde, og Kubernetes Metrics Server kan være et nyttigt værktøj til at holde øje med dem.
Projektet er officielt en del af Kubernetes-projektet, men kommer ikke forudaktiveret i de fleste Kubernetes-certificerede distroer. Det har to vigtige dele, der er værd at diskutere Metrics API og selve Metrics Server. Men lad os først give det til vores Kubernetes (K8) klynge.
En eksperimentel Kubernetes-opsætning
Fra juli 2018 kommer Docker til Mac og Windows begge med en Kubernetes-certificeret implementering af selve K8. Gør det så nemt som at installere K8 på en Linux-distro. Du kan gå til Docker-indstillinger, og hvis Docker-forekomsten er opdateret, finder du en Kubernetes-fane i menuen. Aktivér bare Kubernetes i stedet for Docker Swarm, og du vil have en enkelt node-klynge klar og klar til eksperimenter.
Derefter har vi brug for nogle enkle sæt applikationer, der er i gang til vores brugssag. Opret en mappe kaldet Implementeringer, og inden i den skal vi oprette en nginx-implementering.yaml filer, der vil distribuere statsløse Nginx-bælg.
apiVersion: apps / v1 # til versioner før 1.9.0 brug apps / v1beta2art: Implementering
metadata:
navn: nginx-implementering
spec:
vælger:
matchLabels:
app: nginx
replikaer: 2 # fortæller implementering at køre 2 bælg, der matcher skabelonen
skabelon:
metadata:
etiketter:
app: nginx
spec:
containere:
- navn: nginx
billede: nginx: 1.7.9
porte:
- containerPort: 80
Gem filen, og kør kommandoen i samme bibliotek, hvor denne fil er:
$ kubectl oprette -f nginx-implementering.yamlVi bliver muligvis nødt til at vente et par minutter for at lade Kubernetes downloade containerbillederne, klargøre containerne og lave lidt anden bogføring. Når det er gjort, kan du se listen over bælg som:
$ kubectl få bælg
Som du kan se, har vi to forekomster af bælgen, som .yaml-filen havde ordineret.
Nu hvor vi har noget at overvåge, er vi nødt til at aktivere Metrics Server. Kontroller først den version af Kubernetes, du kører. Hvis versionen er 1.8 eller derover, kører vi en anden implementering, og hvis den er 1.7 så tyr vi tilbage til arven:
$ kubectl versionDu kan få det officielle billede og komme i gang ved at klone denne GitHub-repo og derefter inde i lagerets rod køre kubectl oprette -f med det relevante .yaml afhængigt af den K8-version, du kører.
$ git klon https: // github.com / kubernetes-inkubator / metrics-server.git$ cd metrics-server
# Hvis du kører version 1 af Kubernetes.8 eller højere
$ kubectl create -f deploy / 1.8 + /
# Hvis versionen er 1.7, derefter
$ kubectl create -f deploy / 1.7 /
Giv kubernetes et stykke tid til at downloade billederne og spin metrics-serveren op. Det kan tage et par minutter. Når det er gjort, er du nu klar til at køre metrics-serveren. Den grundlæggende kommando er inspireret af top kommando, der ofte køres for at overvåge et Linux-system. Men det har to varianter, en til kontrol af ressourceudnyttelse på computeren noder og for det andet at måle forbrugt ressource af de indsatte bælg og. Sådan ser du disse to detaljer:
$ kubectl øverste knude$ kubectl top pod
Du kan se, hvor meget en pod beskatter dit system med hensyn til hukommelse eller CPU-tid, og ved hjælp af Metrics API kan du også konfigurere alarmer i henhold til.
Hvor vil det gå herfra?
De nye brugssager fra metrics serveren vil være afgørende i fremtiden for Kubernetes. Dette projekt er stadig i version 0.2.x, når den modnes og integreres i den almindelige Kubernetes-arkitektur, samler den vigtige data til planlæggeren, hvilket hjælper det med at allokere pods effektivt til noder på en meget mere effektiv måde.
Ligeledes vil Horizontal Pod Autoscaler have stor gavn af projektet og vil hjælpe dig med at skalere op eller ned, så ressourcerne bruges optimalt af applikationerne.
Referencer
- Nginx-implementeringer
- Kubernetes Metrics Server
- Design Docs til Metrics API kan findes her og lignende. Du kan finde oplysninger om Metrics Server her.