Kubectl یک ابزار مبتنی بر خط فرمان یا Command-Line است که امکان برقراری ارتباط میان Kubernetes API و Control Plane را فراهم میکند. در واقع Kubectl به کاربران امکان میدهد تا از طریق خط فرمان با کلاستر کوبرنتیز ارتباط برقرار کنند و کارهای مختلفی از جمله مدیریت کلاستر، استقرار برنامهها، مانیتورینگ منابع، و اجرای دستورات داخل کانتینرها را انجام دهند.
در این مطلب از وبلاگ همروش شما را با چیستی Kubectl آشنا خواهیم کرد و همچنین کاربردها، سینتکس، دستورات کاربردی، نحوه نصب و پلاگینهای آن را بررسی میکنیم.
چرا باید از Kubectl استفاده کنیم؟
Kubectl یکی از مهمترین ابزارها برای مدیریت زیرساختهای مبتنی بر کوبرنتیز است. البته زمانی این ابزار اهمیت بالای خود را نشان میدهد که پیادهسازی کوبرنتیز ما پیچیده بوده و مدیریت آن سخت باشد. Kubectl با ایجاد ارتباط میان کاربران، منابع کوبرنتیز و دیگر اجزاء خارج از کوبرنتیز، به ما این امکان را میدهد تا نهایت کنترل روی کلاستر را داشته باشیم. این ارتباط از طریق ارسال درخواستهای HTTP به Kubernetes API Server انجام میشود.
در ادامه با ۶ مزیت و کاربرد استفاده از Kubectl آشنا خواهیم شد:
- سهولت در مدیریت کلاستر: Kubectl یک رابط خط فرمان قدرتمند و انعطافپذیر را فراهم میکند که به شما اجازه میدهد تقریباً هر منبعی را در کلاستر Kubernetes ایجاد، مشاهده، ویرایش و حذف (CRUD) کنید. این موضوع به سادهسازی مدیریت کوبرنتیز کمک میکند.
- خودکارسازی: با نوشتن اسکریپتهای سفارشی میتوانید فرآیندهای تکراریِ مرتبط با مدیریت کلاستر را خودکارسازی کنید. استقرار خودکار برنامهها، تنظیم مجدد منابع، تهیه نسخههای پشتیبان، بهروزرسانی دستهجمعی، بررسی وضعیت کلاستر و… از جمله کارهایی هستند که با قدرت اسکریپتها و Kubectl میتوانند در یک فرایند خودکارسازی شده اجرا شوند.
- عیبیابی و نظارت: Kubectl ابزارهای مفیدی را برای مشاهده لاگهای کانتینرها و وضعیت اجرایی پادها فراهم میکند. این قابلیتها به شما امکان میدهند مشکلات را به سرعت شناسایی و رفع کرده و وضعیت سلامت کلاسترتان را به سادگی بررسی کنید.
- تعامل مستقیم با API Kubernetes: با برقراری تعامل و ارتباط مستقیم با API کوبرنتیز، Kubectl امکان مدیریت منابع و تعاملات را به شکل سادهتری، در دسترس مهندسین و تیم عملیات قرار میدهد.
- مدیریت پیکربندی: Kubectl امکان مدیریت و اعمال پیکربندیها را از طریق فایلهای YAML یا JSON میدهد. این قابلیت به یکپارچهسازی پیکربندیها در محیطهای مختلف کمک میکند.
- پشتیبانی از محیطهای چندگانه: Kubectl به شما امکان کار با چندین کلاستر را میدهد، در نتیجه شما این توانمندی را خواهید داشت که به راحتی بین کلاسترها در محیطهای توسعه، آزمایش و تولید جابجا شوید.
سینتکس
ساختار سینتکسی دستور kubectl به صورت زیر است. در ادامه نیز با بخشهای مختلف آن آشنا خواهیم شد:
kubectl [command] [TYPE] [NAME] [flags]
- command به عملیاتی که قصد اجرا روی کلاستر داریم اشاره دارد.
create
،delete
وdescribe
از جمله این موارد هستند. - TYPE به نوع منبعی اشاره دارد که قصد داریم command را روی آن اجرا کنیم. این بخش به بزرگی و کوچکی حروف حساس نیست.
- NAME به نام منبع مورد نظر اشاره دارد. این بخش به کوچکی/بزرگی حروف حساس است. در نتیجه نیاز است که در وارد کردن آن دقت کنید.
- flags از جمله پارامترهای اختیاری هستند که برای تعیین پورت مربوط به Kubernetes API Server استفاده میشوند.
مثال عملی
kubectl get pod pod1
با اجرای این دستور، کلاستر، pod1 را نمایش میدهد. در این مثال دستور اصلی get، نوع مد نظر pod و نام آن pod1 است. همانطور که مشاهده میکنید ما از flags در این ساختار استفاده نکردهایم.
کاربردیترین دستورات در Kubectl
دستور | سینتکس | توضیحات |
---|---|---|
get | <em>kubectl get po -o wide</em> | نمایش و لیست کردن اطلاعات مربوط به تمام پادها |
create | <em>kubectl create -f filename</em> | ایجاد یک Cluster Resource از طریق یک فایل |
run | kubectl run deployname –image=nginx:latests] | اجرای یک image در کلاستر |
set | kubectl set image deploy deployname containername=containername:1.0 | تغییر image مربوط به یک دیپلویمنت |
edit | kubectl edit po po-nginx-btv4j | ویرایش و بهروزرسانی یک پاد با ادیتور پیشفرض |
delete | kubectl delete po podname | حذف منابع با نام یا label آنها |
rollout | kubectl rollout status/history deployment/deployname | بررسی وضعیت rollout یا تاریخچه یک دیپلویمنت مشخص |
برای آشنایی بیشتر با دستورات Kubectl میتوانید به مستندات موجود در این لینک مراجعه کنید.
پلاگینهای Kubectl
پلاگینهای Kubectl ابزارهای قدرتمندی هستند که قابلیتهای اضافی را به ابزار خط فرمان Kubectl برای مدیریت کلاسترهای Kubernetes اضافه میکنند. این پلاگینها به کاربران اجازه میدهند تا عملکردهای Kubectl را شخصیسازی و توسعه دهند تا به نیازهای خاص خود پاسخ دهند.
در واقع مانند هر ابزار و سیستم دیگری که پلاگینها در آن نقش اضافه کردن فانکشنالیتی را دارند، میتوانید به ساختار پلاگینها در Kubectl فکر کنید.
برای مدیریت پلاگینهای Kubectl میتوانید از ابزار Krew استفاده کنید. برخی از کاربردیترین پلاگینهای مرتبط را میتوانید در ادامه مشاهده کنید.
- Kubescape: این پلاگین روی بهبود وضعیت امنیت کلاستر کوبرنتیز تمرکز دارد. Kubescape میتواند در بررسی و آنالیزهای امنیتی، پیکربندیهای اشتباه و… به شما کمک کند.
- Stern: با استفاده از این پلاگین میتوانید لاگهای چندین کانتینر در یک کلاستر کوبرنتیز را بررسی کنید. در واقع هدف این پلاگین ساده کردن فرایند پیگیری لاگهاست.
- Kubepug: این پلاگین در استفاده کردن از نسخههای مختلف کوبرنتیز و مهاجرت از نسخههای قدیمی به نسخههای جدید به شما کمک خواهد کرد. بیشتر کاری که این پلاگین انجام میدهد ارائه اطلاعات دقیق از نسخههای جدیدی است که توسط کوبرنتیز ارائه میشود.
- Ingress-nginx: پلاگین Ingress-nginxبه شما قابلیتهای آسانتر برای ایجاد ارتباط میان سرویسهای خارجی و کلاسترهای کوبرنتیز را میدهد.
چگونه Kubectl را نصب کنیم؟
برای نصب Kubectl روی توزیع اوبونتو (از آنجایی که نصب Kubectl در محیطهای دیگر نیز مشابه همین حالت است توضیح در رابطه با توزیعهای دیگر ارائه نمیشود) کافیست ابتدا لیست پکیجها را آپدیت کرده و سپس kubectl را نصب کنید. برای اینکار دستورات زیر را اجرا کنید:
sudo apt-get update
sudo apt-get install -y kubectl
در نهایت برای مطمئن بودن از نصب kubectl میتوانید دستور زیر را اجرا کنید:
kubectl version
جمعبندی
بهصورت کلی Kubectl ابزاری مبتنی بر خط فرمان یا Command-Line است که در مدیریت کلاستر کوبرنتیز به شما کمک میکند. کاربردهای Kubectl بسیار زیاد بوده و به همین دلیل یکی از ابزارهای مفید متخصصین حوزه کوبرنتیز است. در صورتی که به مطالعه بیشتر ویژگیهای Kubectl نیاز دارید میتوانید به مستندات رسمی مراجعه کنید.
در این مطلب از وبلاگ همروش ما با چیستی Kubectl و کاربردهای آن آشنا شدیم و همچنین سینتکس، پلاگینها و دستورات کاربردی آن را بررسی کردیم.