برنامه نویسی

Kubernetes 101: استفاده و مدیریت ظروف در ابر

مقدمه

در دنیای ابر بومی امروز ، Kubernetes به راه حل برای استقرار ، مدیریت و مقیاس گذاری برنامه های کانتینر تبدیل شده است. این که آیا شما یک مبتدی هستید یا یک مهندس DevOps با تجربه ، درک Kubernetes برای استقرار ابر بسیار مهم است. این وبلاگ اصول اولیه Kubernetes ، معماری آن و نحوه استقرار و مدیریت کانتینرها را به طور مؤثر پوشش می دهد.

Kubernetes چیست؟

Kubernetes (K8S) یک بستر ارکستراسیون کانتینر منبع باز است که به طور خودکار استقرار ، مقیاس گذاری و بهره برداری از ظروف کاربردی را خودکار می کند. در ابتدا توسط Google ساخته شده است ، اکنون توسط بنیاد محاسبات بومی Cloud (CNCF) نگهداری می شود.

ویژگی های اصلی Kubernetes:

  • استقرار خودکار و مقیاس گذاری: تضمین می کند که برنامه ها با مدیریت چرخه های حیات کانتینر به طور کارآمد اجرا می شوند.
  • خود درمانی: به طور خودکار ظروف شکست خورده را مجدداً راه اندازی می کند و جایگزین های پاسخگو نیست.
  • تعادل بار و کشف خدمات: ترافیک داخلی را به طور کارآمد مدیریت می کند.
  • به روزرسانی های نورد و بازگشت: به روزرسانی های برنامه یکپارچه را بدون خرابی فعال می کند.
  • ارکستراسیون ذخیره سازی: از تهیه ذخیره سازی پویا برای برنامه ها پشتیبانی می کند.

نمای کلی معماری Kubernetes

Kubernetes از معماری کارشناسی ارشد که شامل اجزای زیر است ، پیروی می کند:

گره اصلی (صفحه کنترل):

  • سرور API: به عنوان قسمت جلوی Kubernetes عمل می کند و همه ارتباطات را انجام می دهد.
  • مدیر کنترل کننده: کنترل کننده های مسئول حفظ حالت های مورد نظر را مدیریت می کند.
  • برنامه ریزی: بر اساس در دسترس بودن منابع ، بارهای کاری را به گره های کارگر اختصاص می دهد.
  • ETCD: یک فروشگاه ارزش کلیدی که داده های خوشه ای را در خود جای داده است.

گره های کارگر:

  • کلت: تضمین می کند که گره غلافهای اختصاص داده شده را اجرا می کند و گزارش ها را به استاد باز می گرداند.
  • پروکسی باشید: درخواست های شبکه و ارسال درخواست های داخل خوشه را انجام می دهد.
  • زمان اجرا کانتینر: ظروف واقعی (داکر ، کانتین و غیره) را اجرا می کند.

استفاده از برنامه در Kubernetes

بیایید قدم به قدم برویم تا یک سرور وب ساده Nginx را با استفاده از Kubernetes مستقر کنیم.

مرحله 1: kubernetes را نصب کنید

برای شروع ، شما باید Kubernetes را با استفاده از ابزارهایی مانند Minikube (برای توسعه محلی) نصب کنید یا یک خوشه مبتنی بر ابر را در AWS (EKS) ، Google Cloud (GKE) یا Azure (AKS) تنظیم کنید.

مرحله 2: یک فایل 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:latest
        ports:
        - containerPort: 80
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

مرحله 3: استقرار را اعمال کنید

دستور زیر را برای استقرار برنامه اجرا کنید:

kubectl apply -f nginx-deployment.yaml
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

مرحله 4: استقرار را به عنوان یک سرویس افشا کنید

برای دسترسی به برنامه ، آن را به عنوان یک سرویس در معرض دید قرار دهید.

apiVersion: v1
kind: Service
metadata:
  name: nginx-service
spec:
  selector:
    app: nginx
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80
  type: LoadBalancer
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

خدمات را اعمال کنید:

kubectl apply -f nginx-service.yaml
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

مرحله 5: استقرار را تأیید کنید

بررسی کنید که غلافها در حال اجرا هستند:

kubectl get pods
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

جزئیات سرویس را بررسی کنید:

kubectl get svc
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

پس از اختصاص LoadBalancer IP خارجی ، می توانید از طریق آدرس داده شده به سرور وب NGINX دسترسی پیدا کنید.

مدیریت بار کاری Kubernetes

پس از استقرار درخواست شما ، Kubernetes قابلیت های مختلف مدیریتی را ارائه می دهد:

  kubectl scale --replicas=5 deployment/nginx-deployment
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

این تعداد غلافهای در حال اجرا را به 5 افزایش می دهد.

  • به روزرسانی های نورد:
    نسخه برنامه را بدون خرابی به روز کنید:
  kubectl set image deployment/nginx-deployment nginx=nginx:latest
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

  • گزارش های نظارت:
    مشاهده گزارش های برنامه برای اشکال زدایی:
  kubectl logs -f 
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

شبکه Kubernetes

شبکه Kubernetes ارتباطات یکپارچه بین غلاف ها ، خدمات و مشتریان خارجی را تضمین می کند.

اجزای شبکه:

  • خوشه: خدمات داخلی را در داخل خوشه قرار می دهد.
  • NODEPORT: امکان دسترسی به خدمات در درگاه خاص هر گره را فراهم می کند.
  • LoadBalancer: دسترسی خارجی به خدمات را فراهم می کند.
  • کنترل کننده Ingress: ترافیک HTTP و HTTPS خارجی را مدیریت می کند.

بهترین روشهای امنیتی Kubernetes

امنیت هنگام مدیریت خوشه های Kubernetes بسیار مهم است. برخی از بهترین شیوه ها عبارتند از:

  • RBAC (کنترل دسترسی مبتنی بر نقش): دسترسی کاربر و سرویس را محدود کنید.
  • سیاست های شبکه: کنترل ارتباط بین غلافها.
  • مدیریت اسرار: داده های حساس را به طور ایمن ذخیره کنید.
  • سیاست های امنیتی POD: تنظیمات امنیتی را برای POD ها تعریف کنید.

HELM: مدیر بسته Kubernetes

HELM با استفاده از الگوهای از پیش تنظیم شده به نام نمودارها ، استقرار برنامه Kubernetes را ساده می کند.

دستورات HELM اساسی:

  helm install my-release stable/nginx
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

  • لیست نمودارهای کلاه نصب شده:
  helm list
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

  helm uninstall my-release
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

نظارت و ورود به سیستم در Kubernetes

مشاهده برای حفظ خوشه های Kubernetes بسیار مهم است.

ابزاری برای نظارت:

  • پرومتئوس و گرافانا: معیارها را جمع آوری و تجسم کنید.
  • Fluentd & Elk Stack: ورود به سیستم متمرکز
  • داشبورد Kubernetes: یک UI مبتنی بر وب برای نظارت بر وضعیت خوشه ای فراهم می کند.

پایان

Kubernetes استقرار و مدیریت برنامه های کانتینر شده را ساده می کند و آن را به یک مهارت ضروری برای مهندسان DevOps تبدیل می کند. با درک اصول اولیه Kubernetes و تمرین با استقرار در دنیای واقعی ، می توانید پتانسیل کامل توسعه ابر بومی را باز کنید.

اگر این راهنما را مفید دیدید ، آن را با شبکه خود به اشتراک بگذارید و برای بینش های DevOps بیشتر با ما در ارتباط باشید!

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا