Writing a Real Kubernetes Manifest
Haqiqiy Kubernetes manifestini yozish
Qurilish rejasini tasavvur qiling: me'mor uyni QURISHDAN oldin, uning barcha o'lchamlari, xonalar soni va materiallari YOZILGAN chizma tayyorlaydi — quruvchi keyin shu chizmaga QARAB ishlaydi. Kubernetes'da ham siz "nima BO'LISHINI" YOZASIZ (bu — manifest, odatda YAML formatida), Kubernetes esa shu "chizma"ga qarab, haqiqiy Pod'larni QURADI. Shu paytgacha siz o'zingiz Go'da YOZGAN Pod, ReplicaSet, Deployment, Service struct'lari — aynan shu manifest'lardagi maydonlarning, soddalashtirilgan ko'rinishi edi.
apiVersion: apps/v1
kind: Deployment
metadata:
name: web
namespace: production
labels:
app: web
spec:
replicas: 3 # "ReplicaSet: Keeping N Copies Running" darsidagi Desired
selector:
matchLabels:
app: web # "Labels & Selectors" darsidagi Selector
strategy:
type: RollingUpdate
rollingUpdate:
maxUnavailable: 1
maxSurge: 1
template:
metadata:
labels:
app: web # Pod'ga yopishtiriladigan Label
spec:
containers:
- name: app
image: myapp:v2.1.0 # HECH QACHON ":latest" emas!
resources:
limits:
cpu: "500m"
memory: "256Mi"
readinessProbe:
httpGet:
path: /ready
port: 8080
livenessProbe:
httpGet:
path: /health
port: 8080
---
apiVersion: v1
kind: Service
metadata:
name: web
namespace: production
spec:
selector:
app: web # Service ham AYNAN shu Selector orqali Pod'larni topadi
ports:
- port: 80
targetPort: 8080Bu bitta faylda IKKITA resurs bor (--- bilan ajratilgan): Deployment va Service. E'tibor bering, ular bir-biriga TO'G'RIDAN-TO'G'RI ishora QILMAYDI — Servicening spec.selector: app: web qatori, Deployment yaratgan Pod'lardagi app: web yorlig'i bilan MOS kelgani uchun, Service ULARNI avtomatik topadi. Bu — "Labels & Selectors" va "Service: Stable Networking for Pods" darslarida o'zingiz yozgan Selector.Matches va Service.Endpoints mantig'ining, AYNAN o'zi — endi YAML tilida ifodalangan.
resources.limits, readinessProbe, livenessProbe — bularning har biri sizga TANISH: "Admission Validation" darsida yozgan RequireResourceLimits qoidasi aynan shu resources.limits maydoni MAVJUDLIGINI tekshiradi; readinessProbe/livenessProbe esa "Health Checks: Liveness & Readiness" darsida o'zingiz yozgan LivenessHandler/ReadinessHandlerga ishora qiladi. Manifest — sizning butun kurs davomida Go'da qurgan MODELINGIZNING, haqiqiy Kubernetes tushunadigan tildagi ifodasi, xolos.
Key Takeaway
Key Takeaway:
Kubernetes manifest (odatda YAML) — "nima bo'lishi kerak"ligini deklarativ tarzda yozib beruvchi hujjat; uning ichidagi replicas, selector, resources.limits, readinessProbe kabi maydonlar — bu kursda siz Go'da o'zingiz qurgan struct va metodlarning, real Kubernetes tushunadigan tildagi ko'rinishi.
NEXT UP
kubectl in Practice