k9s کا جائزہ - Kubernetes کے لیے ایک جدید ترین ٹرمینل انٹرفیس

k9s کا جائزہ - Kubernetes کے لیے ایک جدید ترین ٹرمینل انٹرفیس

K9s Kubernetes کلسٹرز کے ساتھ تعامل کے لیے ٹرمینل یوزر انٹرفیس فراہم کرتا ہے۔ اس اوپن سورس پروجیکٹ کا ہدف K8s میں ایپلیکیشنز کو نیویگیٹ، نگرانی اور ان کا نظم کرنا آسان بنانا ہے۔ K9s مسلسل Kubernetes میں ہونے والی تبدیلیوں پر نظر رکھتا ہے اور نگرانی شدہ وسائل کے ساتھ کام کرنے کے لیے فوری حکم دیتا ہے۔

یہ پروجیکٹ گو میں لکھا گیا ہے اور اسے ڈیڑھ سال سے زیادہ ہو چکا ہے: پہلی کمٹ 1 فروری 2019 کو کی گئی تھی۔ لکھنے کے وقت، 9000+ ستارے آن ہیں۔ GitHub کے اور تقریباً 80 شراکت دار۔ آئیے دیکھتے ہیں کہ k9s کیا کر سکتا ہے؟

تنصیب اور لانچ

یہ ایک کلائنٹ (Kubernetes کلسٹر کے سلسلے میں) ایپلی کیشن ہے جسے Docker امیج کے طور پر چلانا سب سے آسان ہے:

docker run --rm -it -v $KUBECONFIG:/root/.kube/config quay.io/derailed/k9s

کچھ لینکس ڈسٹری بیوشنز اور دیگر آپریٹنگ سسٹمز کے لیے، انسٹال کرنے کے لیے بھی تیار ہیں۔ پیکیجز. عام طور پر، لینکس سسٹمز کے لیے، آپ بائنری فائل انسٹال کر سکتے ہیں:

sudo wget -qO- https://github.com/derailed/k9s/releases/download/v0.22.0/k9s_Linux_x86_64.tar.gz | tar zxvf -  -C /tmp/
sudo mv /tmp/k9s /usr/local/bin

خود K8s کلسٹر کے لیے کوئی خاص تقاضے نہیں ہیں۔ جائزوں کو دیکھتے ہوئے، ایپلی کیشن Kubernetes کے پرانے ورژن جیسے 1.12 کے ساتھ بھی کام کرتی ہے۔

ایپلیکیشن کو معیاری تشکیل کا استعمال کرتے ہوئے لانچ کیا گیا ہے۔ .kube/config - جیسا کہ یہ کرتا ہے۔ kubectl.

نیویگیشن

پہلے سے طے شدہ طور پر، سیاق و سباق کے لیے مخصوص نام کی جگہ کے ساتھ ایک ونڈو کھلتی ہے۔ یعنی اگر آپ نے لکھا kubectl config set-context --current --namespace=test، پھر نام کی جگہ کھل جائے گی۔ test. (سیاق و سباق/نام کی جگہوں کو تبدیل کرنے کے لیے نیچے دیکھیں۔)

k9s کا جائزہ - Kubernetes کے لیے ایک جدید ترین ٹرمینل انٹرفیس

کے پاس جاؤ کمانڈ موڈ ":" دبانے سے کیا جاتا ہے۔ اس کے بعد، آپ کمانڈز کا استعمال کرتے ہوئے k9s کے آپریشن کو کنٹرول کر سکتے ہیں - مثال کے طور پر، StatefulSets کی فہرست دیکھنے کے لیے (موجودہ نام کی جگہ میں)، آپ درج کر سکتے ہیں۔ :sts.

k9s کا جائزہ - Kubernetes کے لیے ایک جدید ترین ٹرمینل انٹرفیس

کچھ دوسرے Kubernetes وسائل کے لیے:

  • :ns - نام کی جگہیں؛
  • :deploy - تعیناتیاں؛
  • :ing - داخل ہوتا ہے؛
  • :svc - خدمات۔

دیکھنے کے لیے دستیاب وسائل کی اقسام کی مکمل فہرست ظاہر کرنے کے لیے، ایک کمانڈ موجود ہے۔ :aliases.

موجودہ ونڈو میں گرم کلید کے امتزاج کے ذریعہ دستیاب کمانڈز کی فہرست دیکھنا بھی آسان ہے: ایسا کرنے کے لئے، صرف "؟" پر کلک کریں۔

k9s کا جائزہ - Kubernetes کے لیے ایک جدید ترین ٹرمینل انٹرفیس

k9s میں بھی ہے۔ تلاش موڈ، جس پر جانے کے لیے "/" درج کرنا کافی ہے۔ اس کے ساتھ، موجودہ "ونڈو" کے مواد پر تلاش کی جاتی ہے۔ آئیے کہتے ہیں کہ اگر آپ پہلے داخل ہوئے ہیں۔ :ns، آپ کے پاس نام کی جگہوں کی فہرست کھلی ہے۔ اگر ان میں سے بہت سارے ہیں، تو زیادہ دیر تک نیچے نہ جانے کے لیے، نام کی جگہوں کے ساتھ ونڈو میں داخل ہونا کافی ہے۔ /mynamespace.

لیبل کے ذریعے تلاش کرنے کے لیے، آپ مطلوبہ نام کی جگہ میں تمام پوڈ منتخب کر سکتے ہیں، پھر درج کریں، مثال کے طور پر، / -l app=whoami. ہمیں اس لیبل کے ساتھ پھلیوں کی فہرست ملے گی:

k9s کا جائزہ - Kubernetes کے لیے ایک جدید ترین ٹرمینل انٹرفیس

تلاش تمام قسم کی ونڈوز میں کام کرتی ہے، بشمول لاگز، YAML مینی فیسٹ دیکھنا، اور describe وسائل کے لیے - ان خصوصیات کے بارے میں مزید تفصیلات کے لیے نیچے دیکھیں۔

نیویگیشن کا مجموعی بہاؤ کیسا لگتا ہے؟

حکم کے ساتھ :ctx آپ سیاق و سباق کا انتخاب کر سکتے ہیں:

k9s کا جائزہ - Kubernetes کے لیے ایک جدید ترین ٹرمینل انٹرفیس

نام کی جگہ کو منتخب کرنے کے لیے، پہلے ہی بیان کردہ کمانڈ موجود ہے۔ :ns، اور پھر آپ مطلوبہ جگہ کی تلاش کا استعمال کرسکتے ہیں: /test.

اگر ہم اب وہ وسیلہ منتخب کرتے ہیں جس میں ہماری دلچسپی ہے (مثال کے طور پر وہی StatefulSet)، اس کے لیے متعلقہ معلومات ظاہر ہوں گی: ان کے بارے میں مختصر معلومات کے ساتھ کتنے پوڈ چل رہے ہیں۔

k9s کا جائزہ - Kubernetes کے لیے ایک جدید ترین ٹرمینل انٹرفیس

صرف pods دلچسپی کا ہو سکتا ہے - پھر یہ داخل کرنے کے لئے کافی ہے :pod. ConfigMaps کی صورت میں (:cm - ان وسائل کی فہرست کے لیے)، آپ دلچسپی کی چیز کو منتخب کر سکتے ہیں اور "u" پر کلک کر سکتے ہیں، جس کے بعد K9s آپ کو بتائے گا کہ اسے کون خاص طور پر استعمال کرتا ہے (یہ سی ایم)۔

وسائل کو دیکھنے کے لیے ایک اور کارآمد خصوصیت ان کی ہے۔ "ایکس رے" (ایکسرے ویو). اس موڈ کو کمانڈ کے ذریعہ کہا جاتا ہے۔ :xray RESOURCE اور ... یہ بتانا آسان ہے کہ یہ کیسے کام کرتا ہے اس کی وضاحت کرنے سے۔ StatefulSets کے لیے یہاں ایک مثال ہے:

k9s کا جائزہ - Kubernetes کے لیے ایک جدید ترین ٹرمینل انٹرفیس
(ان وسائل میں سے ہر ایک میں ترمیم، تبدیل، بنایا جا سکتا ہے describe.)

اور یہاں Ingress کے ساتھ تعیناتی ہے:

k9s کا جائزہ - Kubernetes کے لیے ایک جدید ترین ٹرمینل انٹرفیس

وسائل کے ساتھ کام کرنا

آپ YAML یا اس کے ہر وسائل کے بارے میں معلومات حاصل کر سکتے ہیں۔ describe متعلقہ کی بورڈ شارٹ کٹ دبانے سے (بالترتیب "y" اور "d")۔ بلاشبہ، اس سے بھی زیادہ بنیادی آپریشنز ہیں: ان کی فہرست اور کی بورڈ شارٹ کٹس ہمیشہ انٹرفیس میں ایک آسان "ہیڈر" کی بدولت نظر آتے ہیں (Ctrl + e دبانے سے پوشیدہ)۔

k9s کا جائزہ - Kubernetes کے لیے ایک جدید ترین ٹرمینل انٹرفیس

کسی بھی وسائل میں ترمیم کرتے وقت ("e" اس کے انتخاب کے بعد)، ماحولیاتی متغیرات میں بیان کردہ ٹیکسٹ ایڈیٹر کھل جاتا ہے (export EDITOR=vim).

اور یہ ہے کہ وسائل کی تفصیلی وضاحت کیسی دکھتی ہے (describe):

k9s کا جائزہ - Kubernetes کے لیے ایک جدید ترین ٹرمینل انٹرفیس

اس آؤٹ پٹ (یا YAML ریسورس مینی فیسٹ کو دیکھنے کا آؤٹ پٹ) مانوس کی بورڈ شارٹ کٹ Ctrl + s کا استعمال کرتے ہوئے محفوظ کیا جا سکتا ہے۔ اسے کہاں محفوظ کیا جائے گا K9s پیغام سے معلوم ہوگا:

Log /tmp/k9s-screens-root/kubernetes/Describe-1601244920104133900.yml saved successfully!

آپ سسٹم لیبلز اور تشریحات کو ہٹانے کے بعد تخلیق کردہ بیک اپ فائلوں سے وسائل کو بھی بحال کر سکتے ہیں۔ ایسا کرنے کے لیے، آپ کو ان کے ساتھ ڈائریکٹری میں جانا ہوگا (:dir /tmp)، پھر مطلوبہ فائل کو منتخب کریں اور اپلائی کریں۔ apply.

ویسے، کسی بھی وقت آپ پچھلے ReplicaSet پر واپس جا سکتے ہیں اگر موجودہ میں کوئی مسئلہ ہو۔ ایسا کرنے کے لیے، مطلوبہ RS (:rs ان کی فہرست کے لیے):

k9s کا جائزہ - Kubernetes کے لیے ایک جدید ترین ٹرمینل انٹرفیس

... اور Ctrl + l کے ساتھ رول بیک۔ ہمیں ایک اطلاع ملنی چاہیے کہ سب کچھ ٹھیک ہو گیا:

k9s/whoami-5cfbdbb469 successfully rolled back

اور نقلیں پیمانہ کرنے کے لیے، صرف "s" (پیمانہ) پر کلک کریں اور مطلوبہ مثالوں کی تعداد کو منتخب کریں:

k9s کا جائزہ - Kubernetes کے لیے ایک جدید ترین ٹرمینل انٹرفیس

آپ شیل کا استعمال کرتے ہوئے کسی بھی کنٹینر میں داخل کر سکتے ہیں: ایسا کرنے کے لیے، مطلوبہ پوڈ پر جائیں، "s" (شیل) پر کلک کریں اور کنٹینر کو منتخب کریں۔

دوسرے امکانات

بلاشبہ، نوشتہ جات کو دیکھنا بھی معاون ہے (منتخب وسائل کے لیے "l")۔ اور نئے لاگز دیکھنے کے لیے، مسلسل Enter دبانے کی ضرورت نہیں ہے: ("m") کو نشان زد کرنا کافی ہے، اور پھر صرف نئے پیغامات کو ٹریک کریں۔

k9s کا جائزہ - Kubernetes کے لیے ایک جدید ترین ٹرمینل انٹرفیس

اسی ونڈو میں بھی، آپ لاگز کے آؤٹ پٹ کے لیے وقت کی حد منتخب کر سکتے ہیں:

  • کلید "1" - 1 منٹ کے لیے؛
  • "2" - 5 منٹ؛
  • "3" - 15 منٹ؛
  • "4" - 30 منٹ؛
  • "5" - 1 گھنٹہ؛
  • "0" - پھلی کی پوری زندگی کے لیے۔

سپیشل آپریٹنگ موڈ پلس (کمانڈ :pulse) Kubernetes کلسٹر کے بارے میں عمومی معلومات دکھاتا ہے:

k9s کا جائزہ - Kubernetes کے لیے ایک جدید ترین ٹرمینل انٹرفیس

اس میں آپ وسائل کی تعداد اور ان کی حیثیت دیکھ سکتے ہیں (سبز ان کو دکھاتا ہے جن کی حیثیت ہے۔ Running).

K9s کی ایک اور ٹھنڈی خصوصیت کہلاتی ہے۔ Popeye. یہ درستگی کے کچھ معیارات کے لیے تمام وسائل کی جانچ پڑتال کرتا ہے اور اس کے نتیجے میں "درجہ بندی" کو وضاحت کے ساتھ دکھاتا ہے۔ مثال کے طور پر، آپ دیکھ سکتے ہیں کہ کافی ٹرائلز یا حدود نہیں ہیں، اور کچھ کنٹینر جڑ کے طور پر چل سکتے ہیں ...

k9s کا جائزہ - Kubernetes کے لیے ایک جدید ترین ٹرمینل انٹرفیس

ہیلم کے لیے بنیادی حمایت موجود ہے۔ مثال کے طور پر، آپ کلسٹر میں تعینات ریلیز کو اس طرح دیکھ سکتے ہیں:

:helm all # все
:helm $namespace # в конкретном пространстве имен

معیار

یہاں تک کہ K9s میں بنایا گیا ہے۔ ہے ایک سادہ HTTP سرور لوڈ جنریٹر ہے، جو بہتر معلوم ab (ApacheBench) کا متبادل ہے۔

اسے فعال کرنے کے لیے، آپ کو پوڈ میں پورٹ فارورڈ کو فعال کرنے کی ضرورت ہے۔ ایسا کرنے کے لیے، پوڈ کو منتخب کریں اور Shift + f دبائیں، "pf" عرف کا استعمال کرتے ہوئے پورٹ فارورڈ سب مینیو پر جائیں۔

k9s کا جائزہ - Kubernetes کے لیے ایک جدید ترین ٹرمینل انٹرفیس

پورٹ کو منتخب کرنے اور Ctrl + b دبانے کے بعد، بینچ مارک خود شروع ہو جائے گا۔ اس کے کام کے نتائج اس میں محفوظ ہیں۔ /tmp اور K9s میں بعد میں دیکھنے کے لیے دستیاب ہیں۔

k9s کا جائزہ - Kubernetes کے لیے ایک جدید ترین ٹرمینل انٹرفیس
k9s کا جائزہ - Kubernetes کے لیے ایک جدید ترین ٹرمینل انٹرفیس

بینچ مارک کی ترتیب کو تبدیل کرنے کے لیے، آپ کو ایک فائل بنانے کی ضرورت ہے۔ $HOME/.k9s/bench-<my_context>.yml (ہر کلسٹر کے لیے مقرر)

نوٹ: یہ ضروری ہے کہ ڈائریکٹری میں تمام YAML فائلوں کی توسیع ہو۔ .k9s یہ بالکل تھا .yml (.yaml صحیح طریقے سے کام نہیں کرتا)۔

ترتیب مثال:

benchmarks:
  defaults:
    # Количество потоков
    concurrency: 2
    # Количество запросов
    requests: 1000
  containers:
    # Настройки для контейнера с бенчмарком
    # Контейнер определяется как namespace/pod-name:container-name
    default/nginx:nginx:
      concurrency: 2
      requests: 10000
      http:
        path: /
        method: POST
        body:
          {"foo":"bar"}
        header:
          Accept:
            - text/html
          Content-Type:
            - application/json
 services:
    # Можно проводить бенчмарк на сервисах типа NodePort и LoadBalancer
    # Синтаксис: namespace/service-name
    default/nginx:
      concurrency: 5
      requests: 500
      http:
        method: GET
        path: /auth
      auth:
        user: flant
        password: s3cr3tp455w0rd

انٹرفیس

وسائل کی فہرستوں کے لیے کالم کی ظاہری شکل کو فائل بنا کر تبدیل کیا جاتا ہے۔ $HOME/.k9s/views.yml. اس کے مواد کی ایک مثال:

k9s:
 views:
   v1/pods:
     columns:
       - AGE
       - NAMESPACE
       - NAME
       - IP
       - NODE
       - STATUS
       - READY
   v1/services:
     columns:
       - AGE
       - NAMESPACE
       - NAME
       - TYPE
       - CLUSTER-IP

سچ ہے، لیبلز کے لیے کافی کالم نہیں ہے، جس کے لیے وہاں موجود ہے۔ منصوبے میں مسئلہ.

کالموں کی ترتیب کی بورڈ شارٹ کٹس کے ذریعے کی جاتی ہے:

  • شفٹ + این - نام سے؛
  • شفٹ + او - نوڈس کے ذریعے؛
  • شفٹ + i - آئی پی کے ذریعہ؛
  • شفٹ + اے - کنٹینر کی زندگی کے حساب سے؛
  • شفٹ + ٹی - دوبارہ شروع ہونے کی تعداد سے؛
  • شفٹ + آر - تیاری کی حیثیت سے؛
  • شفٹ + سی - CPU استعمال کے لحاظ سے؛
  • شفٹ + ایم - میموری کی کھپت کے لحاظ سے۔

اگر کسی کو ڈیفالٹ رنگ سکیم پسند نہیں ہے، تو K9s بھی سپورٹ کرتا ہے۔ کھالیں. تیار شدہ مثالیں (7 ٹکڑے) دستیاب ہیں۔ یہاں. یہاں ان کھالوں میں سے ایک کی ایک مثال ہے۔ (بحریہ میں):

k9s کا جائزہ - Kubernetes کے لیے ایک جدید ترین ٹرمینل انٹرفیس

پلگ ان

آخر میں پلگ ان آپ کو K9s کی صلاحیتوں کو بڑھانے کی اجازت دیتا ہے۔ میں نے خود ان میں سے صرف ایک کو اپنے کام میں استعمال کیا ہے۔ kubectl get all -n $namespace.

ایسا لگتا ہے۔ ایک فائل بنائیں $HOME/.k9s/plugin.yml اس طرح کے مواد کے ساتھ:

plugin:
 get-all:
   shortCut: g    
   confirm: false    
   description: get all
   scopes:
   - all
   command: sh
   background: false
   args:
   - -c
   - "kubectl -n $NAMESPACE get all -o wide | less"

اب آپ نام کی جگہ پر جا سکتے ہیں اور متعلقہ کمانڈ کے ساتھ عمل کرنے کے لیے "g" دبائیں:

k9s کا جائزہ - Kubernetes کے لیے ایک جدید ترین ٹرمینل انٹرفیس

پلگ انز میں، مثال کے طور پر، kubectl-jq کے ساتھ انضمام اور لاگ دیکھنے کے لیے ایک افادیت سخت.

حاصل يہ ہوا

میرے ذوق کے مطابق، K9s کام کرنے کے لیے بہت آسان نکلا: آپ اسے استعمال کیے بغیر اپنی ضرورت کی ہر چیز تلاش کرنے کے عادی ہو سکتے ہیں۔ kubectl. میں نوشتہ جات اور ان کی بچت، وسائل کی فوری تدوین، عام طور پر کام کی رفتار * دیکھ کر خوش ہوا، Popeye موڈ کارآمد ثابت ہوا۔ ایک خاص ذکر پلگ ان بنانے اور آپ کی ضروریات کے مطابق ایپلی کیشن میں ترمیم کرنے کی صلاحیت ہے۔

* اگرچہ، لاگز کی ایک بڑی مقدار کے ساتھ، میں نے K9s کے سست عمل کو بھی دیکھا۔ ایسے لمحات میں، یوٹیلیٹی نے Intel Xeon E2xx سے 312 کور "کھائے" اور یہاں تک کہ منجمد بھی ہو سکتے ہیں۔

اس وقت کیا غائب ہے؟ ڈائرکٹری میں جانے کے بغیر پچھلے ورژن پر فوری رول بیک (ہم RS کے بارے میں بات نہیں کر رہے ہیں)۔ اس کے علاوہ، وصولی صرف کے لئے ہوتی ہے صرف وسائل: اگر آپ ایک تشریح یا لیبل حذف کرتے ہیں، تو آپ کو پورے وسائل کو حذف اور بحال کرنا پڑے گا (یہ وہ جگہ ہے جہاں آپ کو ڈائریکٹری میں جانے کی ضرورت ہے)۔ ایک اور چھوٹی سی - اس طرح کے محفوظ کردہ "بیک اپ" کے لئے کافی تاریخ نہیں ہے۔

PS

ہمارے بلاگ پر بھی پڑھیں:

ماخذ: www.habr.com

نیا تبصرہ شامل کریں