Kubernetes-ийн үндэсний гарын авлага: Контейнержуулсан програмуудыг хэрхэн үр дүнтэй удирдах вэ
Kubernetes-ийн үндэсний гарын авлага: Контейнержуулсан програмуудыг хэрхэн үр дүнтэй удирдах вэ
Kubernetes нь одоогоор хамгийн алдартай контейнерийн зохион байгуулалтын платформ болжээ. Энэ нь контейнержуулсан програмуудыг автоматжуулан байршуулж, өргөжүүлж, удирдах шийдлийг санал болгодог. Энэ нийтлэл нь эхлэгчид болон дунд зэргийн хөгжүүлэгчдэд зориулсан хэрэгтэй үндэсний гарын авлага болох бөгөөд та Kubernetes-ийн гол ойлголтууд болон практик үйлдлүүдийг хурдан сурахад туслах болно.
Кubernetes гэж юу вэ?
Kubernetes (ихэвчлэн K8s гэж товчилдог) нь контейнержуулсан програмуудыг автоматжуулан байршуулж, өргөжүүлж, удирдахад зориулагдсан нээлттэй платформ юм. Энэ нь Google-ийн хөгжүүлсэн бөгөөд Cloud Native Computing Foundation (CNCF)-д хандивласан. Kubernetes-ийн гол зорилго нь програмын амьдралын мөчлөгийн удирдлагыг хялбаршуулах бөгөөд системийн өндөр хүртээмж, автоматжуулсан удирдлагыг хангах явдал юм.
Kubernetes-ийн гол бүрэлдэхүүн хэсгүүд
1. Pod
Pod нь Kubernetes-д хамгийн жижиг байршуулалтын нэгж бөгөөд нэг буюу хэд хэдэн контейнер агуулж болно. Бүх Pod нь сүлжээ болон хадгалагдсан мэдээллийг хуваалцдаг бөгөөд ойр холбоотой үйлчилгээ явуулахад тохиромжтой.
apiVersion: v1
kind: Pod
metadata:
name: my-app-pod
spec:
containers:
- name: my-app-container
image: nginx
2. Deployment
Deployment нь Pod-ийн амьдралын мөчлөгийг удирдахад ашиглагддаг бөгөөд заасан тооны Pod ажиллаж байгааг баталгаажуулж, хувилбарын хяналт болон шинэчлэлт хийх боломжийг олгодог.
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app-deployment
spec:
replicas: 3
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: my-app-container
image: nginx
3. Service
Service нь тогтвортой хандалтын орцыг хангаж, бусад Pod эсвэл гадаад хэрэглэгчид ажиллаж буй Pod-д хандах боломжийг олгодог.
apiVersion: v1
kind: Service
metadata:
name: my-app-service
spec:
type: LoadBalancer
selector:
app: my-app
ports:
- port: 80
targetPort: 80
Kubernetes-ийн давуу талууд
- Автоматжуулсан удирдлага: Kubernetes нь контейнерийн програмуудыг автоматжуулан байршуулж, өргөжүүлж, удирдаж, гараар хийх үйлдлийг багасгаж, алдааны магадлалыг бууруулдаг.
- Өндөр хүртээмж: ReplicaSets-ээр дамжуулан Kubernetes нь хангалттай Pod-ийн жишээг ажиллаж байгааг баталгаажуулж, хэрэв нэг жишээ алдагдвал систем автоматаар дахин эхлүүлж эсвэл солих болно.
- Ачаалал тэнцвэржүүлэх: Kubernetes нь дотоод ачаалал тэнцвэржүүлэх функцтэй бөгөөд үйлчилгээний урсгалыг хуваарилах боломжийг олгодог, нөөцийг үр дүнтэй ашиглахыг хангадаг.
Kubernetes-ийг хэрхэн хурдан сурах вэ
1. Орчны бэлтгэл
Эхлээд та Kubernetes орчныг байгуулж хэрэгтэй. Энэ нь олон аргаар хийгдэж болно, жишээлбэл Minikube-ийг ашиглан орон нутгийн тест хийх, эсвэл үүл үйлчилгээний ханган нийлүүлэгчид (жишээлбэл Google Kubernetes Engine, AWS EKS, Azure AKS) дээр кластер байгуулах.
Minikube ашиглан Kubernetes суулгах
- Minikube болон kubectl суулгах
# Minikube суулгах (нарийн суулгах аргыг Minikube-ийн албан ёсны баримт бичгээс үзнэ үү)
brew install minikube
# kubectl суулгах
brew install kubectl
minikube start
2. Эхний програмыг байршуул
Nginx-ийг жишээ болгон авч үзвэл, бид Nginx-ийг байршуулж, `Deployment` болон `Service`-ийг тодорхойлж болно.
# deployment.yaml файл үүсгэх
cat deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 2
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx
ports:
- containerPort: 80
EOF
# deployment-г хэрэгжүүлэх
kubectl apply -f deployment.yaml
# service.yaml файл үүсгэх
cat service.yaml
apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
selector:
app: nginx
ports:
- protocol: TCP
port: 80
targetPort: 80
type: NodePort
EOF
# service-г хэрэгжүүлэх
kubectl apply -f service.yaml
3. Програмд хандах
Та `NodePort` төрлийн Service үүсгэх бүрт Kubernetes үүнд порт олгоно. Хандах хаягийг авахын тулд дараах командыг ашиглана уу:
minikube service nginx-service --url
Хэвлэгдсэн URL-ийг браузераар нээгээд Nginx-ийн мэндчилгээний хуудсыг харах боломжтой.
Түгээмэл алдаанууд болон алдааг засах
Kubernetes-ийг ашиглах явцад та Pod-ийн төлөв `CrashLoopBackOff` байх зэрэг зарим түгээмэл асуудалтай тулгарч магадгүй. Энэ нь алдаа биш, харин аюулгүй байдлын механизм бөгөөд Kubernetes Pod унасан үед дахин дахин эхлүүлэхгүй, харин дахин эхлүүлэх бүрт хүлээлтийн хугацааг нэмэгдүүлж, системийн самуурлаас зайлсхийдэг.
Та Pod-ийн логийг шалгахын тулд дараах командыг ашиглаж, алдааг засахад туслах болно:
kubectl logs
Дүгнэлт
Kubernetes нь хүчирхэг контейнерийн удирдлагын хэрэгсэл бөгөөд түүний гол ойлголтууд болон түгээмэл командуудыг эзэмшсэнээр та үүлд суурилсан програмуудыг илүү үр дүнтэй удирдаж, байршуулж чадна. Үүлний тооцоолол болон контейнерийн технологийн түгээмэл байдалтай холбоотойгоор Kubernetes-ийг сурах нь таны мэргэжлийн хөгжлийг шинэ боломжууд руу нээх болно. Энэ гарын авлага нь Kubernetes-ийн суралцах аялалд тань туслах, лавлахад зориулагдсан гэж найдаж байна.





