پیکربندی Kubernetes Readiness and Liveness Probes – آموزش

Kubernetes یک پلت فرم ارکستراسیون کانتینر منبع باز است که به مدیریت و استقرار برنامه ها در یک محیط ابری کمک می کند. برای خودکارسازی استقرار، مقیاسبندی و مدیریت برنامههای کاربردی کانتینری استفاده میشود. این یک روش کارآمد برای مدیریت سلامت برنامه با پروب های Kubernetes است. این وبلاگ در مورد کاوشگرهای Kubernetes، انواع مختلف موجود، و نحوه پیاده سازی آنها در محیط Kubernetes بحث خواهد کرد.
کاوشگرهای Kubernetes چیست؟
کاوشگرهای Kubernetes چکهای سلامتی هستند که برای نظارت بر سلامت برنامهها و خدمات در یک خوشه Kubernetes استفاده میشوند. کاوشگرهای Kubernetes معمولاً با استفاده از Kubernetes API پیادهسازی میشوند که به آنها اجازه میدهد تا برنامه یا سرویس را برای اطلاعات جستجو کنند. سپس می توان از این اطلاعات برای تعیین سلامت برنامه یا سرویس استفاده کرد. کاوشگرهای Kubernetes همچنین می توانند برای تشخیص تغییرات در برنامه یا سرویس و ارسال اعلان به صفحه کنترل Kubernetes استفاده شوند، که سپس می تواند اقدامات اصلاحی انجام دهد. کاوشگرهای Kubernetes بخش مهمی از پلتفرم Kubernetes هستند، زیرا به اطمینان از اجرای روان برنامهها و سرویسها کمک میکنند. آنها می توانند برای شناسایی مشکلات احتمالی قبل از جدی شدن استفاده شوند و به شما امکان می دهند اقدامات اصلاحی را سریع انجام دهید.
پیام موفقیت آمیز برای کاوشگر آمادگی نشان می دهد که کانتینر برای دریافت ترافیک آماده است. اگر یک کاوشگر آمادگی موفقیت آمیز باشد، کانتینر آماده در نظر گرفته می شود و می تواند شروع به دریافت درخواست از سایر کانتینرها، خدمات یا مشتریان خارجی کند.
یک پیام موفقیت آمیز برای کاوشگر زنده نشان می دهد که کانتینر همچنان در حال کار است و به درستی کار می کند. در صورت موفقیت یک کاوشگر زنده، ظرف زنده و سالم در نظر گرفته می شود. اگر یک کاوشگر زنده از کار بیفتد، کانتینر در وضعیت ناموفق در نظر گرفته میشود و Kubernetes تلاش میکند تا ظرف را مجددا راهاندازی کند تا عملکرد آن را بازیابی کند. هر دو کاوشگر آماده و زنده پیام موفقیت آمیزی را با کد پاسخ HTTP 200-399 برمی گردانند یا اتصال سوکت TCP موفقیت آمیز است. اگر کاوشگر خراب شود، یک کد پاسخ غیر 2xx HTTP یا یک اتصال TCP ناموفق را برمیگرداند که نشان میدهد ظرف آماده یا زنده نیست.
به طور خلاصه، یک پیام موفقیت آمیز برای یک کاوشگر Kubernetes نشان می دهد که کانتینر برای دریافت ترافیک آماده است یا بسته به نوع کاوشگر، همچنان در حال اجرا و عملکرد صحیح است.
انواع کاوشگرهای Kubernetes
سه نوع پروب وجود دارد: کاوشگر راه اندازی، کاوشگر آمادگی و کاوشگر زنده.
پروب های راه اندازی: یک کاوشگر راه اندازی برای تعیین اینکه آیا یک کانتینر با موفقیت راه اندازی شده است استفاده می شود. این نوع کاوشگر معمولاً برای برنامههایی که راهاندازی طولانیتری طول میکشد، یا برای کانتینرهایی که وظایف اولیهسازی را قبل از آماده شدن برای دریافت ترافیک انجام میدهند، استفاده میشود. کاوشگر راه اندازی تنها یک بار و پس از ایجاد کانتینر اجرا می شود و شروع کاوشگر آمادگی و زنده بودن را تا زمان موفقیت به تاخیر می اندازد. اگر کاوشگر راهاندازی از کار بیفتد، در نظر گرفته میشود که کانتینر شروع به کار نکرده است و Kubernetes تلاش میکند تا ظرف را دوباره راهاندازی کند.
کاوشگرهای آمادگی: از یک کاوشگر آمادگی برای تعیین اینکه آیا یک کانتینر برای دریافت ترافیک آماده است یا خیر استفاده می شود. این نوع کاوشگر برای اطمینان از اینکه یک کانتینر به طور کامل آماده و کار می کند و می تواند اتصالات ورودی را قبل از اضافه شدن به متعادل کننده بار سرویس بپذیرد استفاده می شود. یک کاوشگر آمادگی میتواند برای بررسی در دسترس بودن وابستگیهای یک برنامه یا انجام هر بررسی دیگری که نشان میدهد ظرف برای ارائه ترافیک آماده است، استفاده شود. اگر کاوشگر آمادگی از کار بیفتد، کانتینر از بالانس بار سرویس خارج می شود تا زمانی که پروب دوباره موفق شود.
کاوشگر زنده بودن: از یک کاوشگر زنده برای تعیین اینکه آیا یک ظرف هنوز کار می کند و به درستی کار می کند استفاده می شود. این نوع کاوشگر برای شناسایی و بازیابی پس از تصادف یا قطع شدن کانتینر استفاده می شود. از کاوشگر زنده بودن می توان برای بررسی پاسخگویی یک برنامه یا انجام هر بررسی دیگری که نشان می دهد ظرف هنوز زنده و سالم است استفاده کرد. اگر کاوشگر liveness از کار بیفتد، Kubernetes سعی می کند ظرف را مجددا راه اندازی کند تا عملکرد آن را بازیابی کند.
هر نوع پروب گزینه های پیکربندی خاص خود را دارد، مانند نقطه پایانی برای بررسی، فاصله کاوشگر، و آستانه موفقیت و شکست. با استفاده از این کاوشگرها، Kubernetes می تواند اطمینان حاصل کند که کانتینرها در حال کار و سالم هستند و در صورت عدم پاسخگویی کانتینر می تواند اقدامات مناسب را انجام دهد.
نحوه پیاده سازی کاوشگرهای Kubernetes
پروب های Kubernetes را می توان به چند روش مختلف پیاده سازی کرد. راه اول استفاده از Kubernetes API برای پرس و جو از برنامه یا سرویس برای اطلاعات است. سپس می توان از این اطلاعات برای تعیین سلامت برنامه یا سرویس استفاده کرد. راه دوم استفاده از پروتکل HTTP برای ارسال درخواست به برنامه یا سرویس است. از این درخواست می توان برای تشخیص پاسخگو بودن یک برنامه یا سرویس استفاده کرد یا اینکه پاسخگویی آن خیلی طول می کشد. راه سوم استفاده از پروب های سفارشی برای تشخیص شرایط خاص در یک برنامه یا سرویس است. از کاوشگرهای سفارشی می توان برای تشخیص مواردی مانند استفاده از منابع، پاسخ های آهسته، یا تغییرات در برنامه یا سرویس استفاده کرد.
هنگامی که تصمیم گرفتید از کدام نوع پروب استفاده کنید، سپس می توانید با استفاده از Kubernetes API آن را پیکربندی کنید. می توانید فرکانس پروب، نوع پروب و پارامترهای پروب را مشخص کنید. هنگامی که کاوشگر پیکربندی شد، می توانید آن را در خوشه Kubernetes مستقر کنید.
امروز، نحوه پیکربندی بررسیهای سلامت برای برنامه کاربردی خود را که در Kubernetes با پروتکل HTTP مستقر شدهاند، به شما نشان میدهم تا بررسی کنیم که آیا برنامه آماده، فعال و شروع به کار مطابق با الزامات ما است یا خیر.
پیش نیازها
آموزش
نمونه برنامه را فورک کنید – https://github.com/pavanbelagatti/Kubernetes-Probes-Tutorial
با دستور وارد پوشه اصلی برنامه شوید
cd Kubernetes-Probes-Tutorial
وابستگی ها را با دستور نصب کنید
npm install
با استفاده از دستور برنامه را به صورت محلی اجرا کنید
node app.js
باید برنامه را روی پورت 3000 اجرا کنید.
در پوشه برنامه باید Dockerfile را با محتوای کد زیر مشاهده کنید.
# Use an existing node image as base image
FROM node:14-alpine
# Set the working directory in the container
WORKDIR /app
# Copy package.json and package-lock.json to the container
COPY package*.json ./
# Install required packages
RUN npm install
# Copy all files to the container
COPY . .
# Expose port 3000
EXPOSE 3000
# Start the application
CMD [ "npm", "start" ]
این Dockerfile برای ایجاد یک تصویر ظرف از برنامه ما و فشار دادن آن به DockerHub است.
سپس با استفاده از دستور زیر تصویر خود را بسازید و به داکر هاب فشار دهید.
docker buildx build --platform=linux/arm64 --platform=linux/amd64 -t docker.io/Docker Hub username/image name:tag --push -f ./Dockerfile .
می توانید تصویر فشار داده شده را در حساب Docker Hub خود در زیر مخازن مشاهده کنید.
در مرحله بعد، فایل های مانیفست را مستقر کنید. در پوشه برنامه، یک فایل deployment.yaml را مشاهده خواهید کرد که شامل بررسیهای سلامت/کاوشگر، مانند کاوشگرهای آمادگی و حیات است.
توجه داشته باشید که ما از نام تصویر فشار داده شده خود در فایل yaml استفاده کرده ایم.
apiVersion: apps/v1
kind: Deployment
metadata:
name: notes-app-deployment
labels:
app: note-sample-app
spec:
replicas: 2
selector:
matchLabels:
app: note-sample-app
template:
metadata:
labels:
app: note-sample-app
spec:
containers:
- name: note-sample-app-container
image: pavansa/note-sample-app
resources:
requests:
cpu: "100m"
imagePullPolicy: IfNotPresent
ports:
- containerPort: 3000
readinessProbe:
httpGet:
path: /
port: 3000
livenessProbe:
httpGet:
path: /
port: 3000
initialDelaySeconds: 30
periodSeconds: 10
timeoutSeconds: 5
می توانید تصویر استفاده شده و بررسی های سلامت پیکربندی شده را در فایل yaml بالا مشاهده کنید.
همه ما با فایل yaml خود آماده ایم. با فرض اینکه یک کلاستر در حال اجرا آماده دارید، بیایید فایل مانیفست فوق را با دستور مستقر کنیم.
kubectl apply -f deployment.yaml
شما باید استقرار موفقیت آمیز فایل را مشاهده کنید.
deployment.apps/notes-app-deployment ایجاد شد
بیایید وضعیت پاد را با دستور زیر بررسی کنیم تا مطمئن شویم که پادها در حال اجرا هستند.
kubectl get pods
بیایید با استفاده از دستور زیر یک pod را توصیف کنیم
kubectl describe pod notes-app-deployment-7fb6f5d74b-hw5fn
شما باید نتیجه زیر را ببینید
هنگام توصیف غلاف ها می توانید وضعیت زنده بودن و آمادگی را در تصویر بالا مشاهده کنید.
بیایید بخش رویدادها را بررسی کنیم
میتوانید رویدادهای مختلف مانند برنامهریزیشده، کشیدهشده، ایجاد شده و شروعشده را ببینید. همه رویدادهای پاد موفقیت آمیز بودند.
نتیجه
کاوشگرهای Kubernetes بخش مهمی از پلتفرم Kubernetes هستند، زیرا به اطمینان از اجرای روان برنامهها و سرویسها کمک میکنند. آنها می توانند برای شناسایی مشکلات احتمالی قبل از جدی شدن استفاده شوند و به شما امکان می دهند اقدامات اصلاحی را سریع انجام دهید. کاوشگرهای Kubernetes در دو نوع هستند: کاوشگر زنده و کاوشگر آمادگی، و همچنین پروب های سفارشی که می توانند برای تشخیص شرایط خاص در یک برنامه یا سرویس استفاده شوند. پیاده سازی کاوشگرهای Kubernetes یک فرآیند ساده است که می تواند با استفاده از Kubernetes API انجام شود.
اگر به دنبال راهی برای اطمینان از سلامت برنامه ها و خدمات خود هستید، کاوشگرهای Kubernetes راهی برای رفتن هستند. بنابراین، مطمئن شوید که کاوشگرهای Kubernetes را امروز در محیط Kubernetes خود پیاده سازی کنید!
BTW، اگر آموزش دیگر من در مورد استقرار برنامه ها در Kubernetes را ندیده اید، لطفاً بررسی کنید.
همچنین، من یک آموزش دیگر در مورد استراتژی های استقرار Kubernetes نوشته ام، لطفا بررسی کنید.
ماژول تحویل مستمر Harness را برای همه استقرار برنامه های مرتبط با Kubernetes خود بررسی کنید.