Kubectl-dan qanday samarali foydalanish kerak: batafsil qo'llanma

Kubectl-dan qanday samarali foydalanish kerak: batafsil qo'llanma
Agar siz Kubernetes bilan ishlasangiz, kubectl sizning eng ko'p ishlatiladigan yordamchi dasturlaringizdan biri bo'lishi mumkin. Muayyan vosita bilan ishlashga ko'p vaqt sarflaganingizda, uni yaxshilab o'rganish va undan samarali foydalanishni o'rganishga arziydi.

komanda Mail.ru dan Kubernetes aaS Men Daniel Weibelning kubectl bilan samarali ishlash bo'yicha maslahatlar va fokuslarni taqdim etgan maqolasini tarjima qildim. Shuningdek, bu sizga Kubernetes haqida chuqurroq tushunchaga ega bo'lishingizga yordam beradi.

Muallifning so'zlariga ko'ra, ushbu maqolaning maqsadi Kubernetes bilan kundalik ishingizni nafaqat samaraliroq, balki yanada qiziqarli qilishdir!

Kirish: kubectl nima?

Kubectl-dan qanday samarali foydalanishni o'rganishdan oldin, uning nima ekanligini va qanday ishlashi haqida asosiy tushunchaga ega bo'lishingiz kerak.

Foydalanuvchi nuqtai nazaridan, kubectl - bu Kubernetes operatsiyalarini bajarishga imkon beruvchi boshqaruv paneli.

Texnik jihatdan kubectl bu Kubernetes API mijozidir.

Kubernetes API HTTP REST API hisoblanadi. Ushbu API Kubernetes uchun haqiqiy foydalanuvchi interfeysi bo'lib, u orqali u to'liq boshqariladi. Bu shuni anglatadiki, har bir Kubernetes operatsiyasi API so'nggi nuqtasi sifatida taqdim etiladi va ushbu so'nggi nuqtaga HTTP so'rovi orqali bajarilishi mumkin.

Shuning uchun kubectl-ning asosiy vazifasi Kubernetes API-ga HTTP so'rovlarini yuborishdir:

Kubectl-dan qanday samarali foydalanish kerak: batafsil qo'llanma
Kubernetes to'liq resurslarga yo'naltirilgan tizimdir. Bu uning ichki resurs holatini saqlab turishini anglatadi va barcha Kubernetes operatsiyalari CRUD operatsiyalari hisoblanadi.

Ushbu resurslarni boshqarish orqali siz Kubernetes ustidan toʻliq nazoratga egasiz va Kubernetes resurslarning joriy holatidan kelib chiqib nima qilish kerakligini belgilaydi. Shu sababli, Kubernetes API resurs turlari va ular bilan bog'liq operatsiyalar ro'yxati sifatida tashkil etilgan.

Keling, bir misolni ko'rib chiqaylik.

Aytaylik, siz ReplicaSet resursini yaratmoqchisiz. Buni amalga oshirish uchun siz ReplicaSet-ni nomli faylda tasvirlaysiz replicaset.yaml, keyin buyruqni bajaring:

$ kubectl create -f replicaset.yaml

Bu ReplicaSet resursini yaratadi. Ammo parda ortida nima bo'lyapti?

Kubernetesda ReplicaSet yaratish operatsiyasi mavjud. Boshqa har qanday operatsiya singari, u API so'nggi nuqtasi sifatida namoyon bo'ladi. Ushbu operatsiya uchun maxsus API so'nggi nuqtasi quyidagicha ko'rinadi:

POST /apis/apps/v1/namespaces/{namespace}/replicasets

Barcha Kubernetes operatsiyalari uchun API so'nggi nuqtalarini quyidagi manzilda topish mumkin API havolasi (shu jumladan yuqoridagi yakuniy nuqta). Oxirgi nuqtaga haqiqiy soʻrov yuborish uchun avval API serveri URL manzilini API havolasida koʻrsatilgan oxirgi nuqta yoʻllariga qoʻshishingiz kerak.

Shuning uchun, yuqoridagi buyruqni bajarganingizda, kubectl yuqoridagi API so'nggi nuqtasiga HTTP POST so'rovini yuboradi. Faylda ko'rsatgan ReplicaSet ta'rifi replicaset.yaml, so'rov tanasida uzatiladi.

Kubernetes klasteri bilan o'zaro aloqada bo'lgan barcha buyruqlar uchun kubectl shunday ishlaydi. Ushbu barcha holatlarda kubectl HTTP so'rovlarini tegishli Kubernetes API so'nggi nuqtalariga yuboradi.

kabi yordamchi dastur yordamida Kubernetes-ni to'liq boshqarishingiz mumkinligini unutmang curl, HTTP so'rovlarini Kubernetes API-ga qo'lda yuborish. Kubectl shunchaki Kubernetes API-dan foydalanishni soddalashtiradi.

Bu kubectl nima ekanligi va u qanday ishlashining asoslari. Ammo Kubernetes API haqida har bir kubectl foydalanuvchisi bilishi kerak bo'lgan ko'proq narsa bor. Keling, Kubernetesning ichki ishlariga tezda sho'ng'ib olaylik.

Kubernetesning ichki dunyosi

Kubernetes klaster tugunlarida alohida jarayonlar sifatida ishlaydigan mustaqil komponentlar to'plamidan iborat. Ba'zi komponentlar asosiy tugunlarda ishlaydi, boshqalari ishchi tugunlarida, har biri ma'lum bir vazifani bajaradi.

Mana asosiy tugunlardagi eng muhim komponentlar:

  1. Vault — resurs taʼriflarini saqlaydi (Odatda bu va hokazo).
  2. API serveri — API taqdim etadi va saqlashni boshqaradi.
  3. Nazoratchi menejeri - resurs holatlarining texnik shartlarga muvofiqligini ta'minlaydi.
  4. Rejalashtiruvchi — ishchi tugunlarida podkastlarni rejalashtiradi.

Va bu erda ishchi tugunlarning eng muhim tarkibiy qismlaridan biri:

  1. kubelet — ishchi tugunidagi konteynerlarni ishga tushirishni boshqaradi.

Ushbu komponentlar qanday ishlashini tushunish uchun keling, misolni ko'rib chiqaylik.

Aytaylik, siz hozirgina tugatdingiz kubectl create -f replicaset.yaml, shundan so'ng kubectl HTTP POST so'rovini yubordi ReplicaSet API oxirgi nuqtasi (ReplicaSet resurs ta'rifidan o'tish).

Klasterda nima bo'lyapti?

  1. Amalga oshirilgandan keyin kubectl create -f replicaset.yaml API serveri sizning ReplicaSet resursingizning ta'rifini saqlashda saqlaydi:

    Kubectl-dan qanday samarali foydalanish kerak: batafsil qo'llanma

  2. Keyinchalik, ReplicaSet boshqaruvchisi ReplicaSet resurslarini yaratish, o'zgartirish va o'chirish bilan shug'ullanadigan kontroller menejerida ishga tushiriladi:

    Kubectl-dan qanday samarali foydalanish kerak: batafsil qo'llanma

  3. ReplicaSet kontrolleri ReplicaSet-dagi har bir replika uchun pod ta'rifini yaratadi (ReplicaSet ta'rifidagi pod shabloniga ko'ra) va ularni do'konda saqlaydi:

    Kubectl-dan qanday samarali foydalanish kerak: batafsil qo'llanma

  4. Rejalashtiruvchi ishga tushiriladi, hali biron bir ishchi tugunga tayinlanmagan podlarni kuzatish:

    Kubectl-dan qanday samarali foydalanish kerak: batafsil qo'llanma

  5. Rejalashtiruvchi har bir podkast uchun mos ishchi tugunni tanlaydi va bu ma'lumotni saqlashdagi pod ta'rifiga qo'shadi:

    Kubectl-dan qanday samarali foydalanish kerak: batafsil qo'llanma

  6. Qopqoq tayinlangan ishchi tugunda Kubelet ishga tushiriladi va ushbu tugunga tayinlangan podlarni nazorat qiladi:

    Kubectl-dan qanday samarali foydalanish kerak: batafsil qo'llanma

  7. Kubelet ombordan pod ta'rifini o'qiydi va tugundagi konteynerlarni ishga tushirish uchun Docker kabi konteynerning ishlash vaqtiga buyruqlar beradi:

    Kubectl-dan qanday samarali foydalanish kerak: batafsil qo'llanma

Quyida ushbu tavsifning matnli versiyasi keltirilgan.

ReplicaSet yaratish so'nggi nuqtasiga API so'rovi API serveri tomonidan qayta ishlanadi. API server so'rovni autentifikatsiya qiladi va ReplicaSet resurs ta'rifini saqlashda saqlaydi.

Ushbu hodisa boshqaruvchi menejerining quyi jarayoni bo'lgan ReplicaSet kontrollerini ishga tushiradi. ReplicaSet tekshirgichi saqlashdagi ReplicaSet resurslarini yaratish, yangilash va o'chirishni nazorat qiladi va ular sodir bo'lganda voqea bildirishnomalarini oladi.

ReplicaSet boshqaruvchisining vazifasi kerakli miqdordagi ReplicaSet podlari mavjudligini ta'minlashdan iborat. Bizning misolimizda hali podkastlar mavjud emas, shuning uchun ReplicaSet boshqaruvchisi bu pod ta'riflarini yaratadi (ReplicaSet ta'rifidagi pod shabloniga ko'ra) va ularni saqlashda saqlaydi.

Yangi podkastlarni yaratish rejalashtiruvchini ishga tushiradi, u hali ishchi tugunlarga rejalashtirilmagan pod ta'riflarini kuzatadi. Rejalashtiruvchi har bir podkast uchun mos ishchi tugunni tanlaydi va ombordagi pod ta'riflarini yangilaydi.

E'tibor bering, shu paytgacha klasterning biron bir joyida ish yuki kodi bajarilmagan. Hozirgacha qilingan hamma narsa, - Bu asosiy tugundagi saqlashdagi resurslarni yaratish va yangilash.

Oxirgi voqea Kubelet-ni ishga tushiradi, u ishchi tugunlari uchun rejalashtirilgan podslarni kuzatadi. ReplicaSet podkastlaringiz o'rnatilgan ishchi tugunning Kubeleti Docker kabi konteynerning ishlash vaqtiga kerakli konteyner tasvirlarini yuklab olish va ularni ishga tushirishni ko'rsatishi kerak.

Ayni paytda ReplicaSet ilovangiz nihoyat ishlamoqda!

Kubernetes API ning roli

Oldingi misolda ko'rganingizdek, Kubernetes komponentlari (API serveri va xotiradan tashqari) saqlashdagi resurslardagi o'zgarishlarni kuzatadi va saqlashdagi resurslar haqidagi ma'lumotlarni o'zgartiradi.

Albatta, bu komponentlar to'g'ridan-to'g'ri saqlash bilan o'zaro ta'sir qilmaydi, faqat Kubernetes API orqali.

Keling, quyidagi misollarni ko'rib chiqaylik:

  1. ReplicaSet boshqaruvchisi API oxirgi nuqtasidan foydalanadi ReplicaSets ro'yxati parametr bilan watch ReplicaSet resurslaridagi o'zgarishlarni kuzatish.
  2. ReplicaSet boshqaruvchisi API oxirgi nuqtasidan foydalanadi pod yaratish (pod yaratish) podalar yaratish.
  3. Rejalashtiruvchi API so'nggi nuqtasidan foydalanadi Patch pod (podni o'zgartirish) tanlangan ishchi tugun haqidagi ma'lumotlar bilan podkalarni yangilash.

Ko'rib turganingizdek, bu kubectl kiradigan bir xil API. Ichki komponentlar va tashqi foydalanuvchilar uchun bir xil APIdan foydalanish Kubernetesning asosiy dizayn konsepsiyasi hisoblanadi.

Endi biz Kubernetes qanday ishlashini umumlashtirishimiz mumkin:

  1. Saqlash shtatni, ya'ni Kubernetes resurslarini saqlaydi.
  2. API serveri Kubernetes API ko'rinishidagi xotiraga interfeysni taqdim etadi.
  3. Boshqa barcha Kubernetes komponentlari va foydalanuvchilari API orqali Kubernetes holatini (resurslarini) o‘qiydi, kuzatadi va boshqaradi.

Ushbu tushunchalarni bilish kubectl-ni yaxshiroq tushunishga va undan maksimal darajada foydalanishga yordam beradi.

Endi kubectl yordamida unumdorligingizni oshirishga yordam beradigan ba'zi maxsus maslahatlar va fokuslarni ko'rib chiqamiz.

1. Buyruqni bajarish bilan yozishni tezlashtiring

Kubectl unumdorligini oshirishning eng foydali, ammo ko'pincha e'tibordan chetda qoladigan usullaridan biri bu buyruqni bajarishdir.

Buyruqning bajarilishi Tab tugmasi yordamida kubectl buyruqlarining alohida qismlarini avtomatik ravishda bajarish imkonini beradi. Bu quyi buyruqlar, variantlar va argumentlar, jumladan, manba nomlari kabi murakkablar uchun ishlaydi.

kubectl buyrug'ini bajarish qanday ishlashini ko'ring:

Kubectl-dan qanday samarali foydalanish kerak: batafsil qo'llanma
Buyruqni bajarish Bash va Zsh qobiqlari uchun ishlaydi.

Rasmiy qo'llanma avtoto'ldirishni o'rnatish bo'yicha batafsil ko'rsatmalarni o'z ichiga oladi, ammo quyida biz qisqacha parcha keltiramiz.

Buyruqni bajarish qanday ishlaydi

Buyruqni bajarish - bu tugatish skripti yordamida ishlaydigan qobiq xususiyati. Tugallash skripti - bu ma'lum bir buyruq uchun bajarish xatti-harakatini belgilaydigan qobiq skripti.

Kubectl quyidagi buyruqlar yordamida Bash va Zsh uchun yakuniy skriptlarni avtomatik ravishda yaratadi va chiqaradi:

$ kubectl completion bash

Yoki:

$ kubectl completion zsh

Nazariy jihatdan, kubectl buyruqlarni bajarishi uchun ushbu buyruqlarning chiqishini tegishli buyruq qobig'iga o'tkazish kifoya.

На практике — способ подключения отличается для Bash (включая различия между Linux и MacOS) и Zsh. Ниже мы рассмотрим все эти варианты.

Bash в Linux

Bash tugatish skripti bash-to'ldirish paketiga bog'liq, shuning uchun avval uni o'rnatishingiz kerak:

$ sudo apt-get install bash-completion

Yoki:

$ yum install bash-completion

Paket muvaffaqiyatli o'rnatilganligini quyidagi buyruq yordamida tekshirishingiz mumkin:

$ type _init_completion

Agar bu qobiq funktsiyasi kodini chiqarsa, bash-to'ldirish to'g'ri o'rnatilgan. Agar buyruq "topilmadi" xatosini qaytarsa, faylingizga quyidagi qatorni qo'shishingiz kerak. ~ / .bashrc:

$ source /usr/share/bash-completion/bash_completion

Ushbu qatorni faylga qo'shish kerakmi ~ / .bashrc Bu kerakmi yoki yo'qmi, bash-to'ldirishni o'rnatgan paket menejeriga bog'liq. Bu APT uchun zarur, lekin YUM uchun emas.

Bash-to'ldirish o'rnatilgandan so'ng, barcha qobiq seanslarida kubectl yakunlash skripti yoqilgan bo'lishi uchun narsalarni sozlashingiz kerak.

Buning usullaridan biri faylga quyidagi qatorni qo'shishdir ~ / .bashrc:

source <(kubectl completion bash)

Yana bir usul kubectl addon skriptini katalogga qo'shishdir /etc/bash_completion.d (agar u mavjud bo'lmasa, uni yarating):

$ kubectl completion bash >/etc/bash_completion.d/kubectl

Katalogdagi barcha qo'shimcha skriptlar /etc/bash_completion.d avtomatik ravishda bash-to'ldirishga qo'shiladi.

Ikkala variant ham bir xil darajada qo'llaniladi.

Qobiqni qayta ishga tushirgandan so'ng, kubectl buyrug'ini bajarish ishlaydi.

MacOS-da Bash

MacOS-da sozlash biroz murakkabroq. Buning sababi, macOS sukut bo'yicha Bash 3.2 dan foydalanadi va kubectl avtoto'ldirish skripti Bash 4.1 yoki undan yuqori versiyasini talab qiladi va Bash 3.2 da ishlamaydi.

MacOS’da Bash’ning eskirgan versiyasidan foydalanish litsenziyalash bilan bog‘liq muammolar bilan bog‘liq. Bash versiyasi 4 GPLv3 ostida litsenziyalangan, Apple buni qo'llab-quvvatlamaydi.

MacOS’da kubectl avtoto‘ldirishni sozlash uchun Bash’ning yangiroq versiyasini o‘rnatishingiz kerak. Shuningdek, yangilangan Bash-ni standart qobiq sifatida o'rnatishingiz mumkin, bu kelajakda sizni ko'p muammolardan xalos qiladi. Bu oson; Tafsilotlar maqolada keltirilgan "MacOS-da Bash yangilanmoqda".

Davom etishdan oldin, Bash-ning so'nggi versiyasidan foydalanayotganingizga ishonch hosil qiling (chiqishni tekshiring bash --version).

Bash avtoto'ldirish skripti loyihaga xosdir bash-to'ldirish, shuning uchun avval uni o'rnatishingiz kerak.

yordamida bash-to'ldirishni o'rnatishingiz mumkin Homebrew:

$ brew install bash-completion@2

u @2 bash-completion version 2 degan ma'noni anglatadi. kubectl to'ldirish uchun bash-to'ldirish v2, bash-to'ldirish v2 esa kamida Bash 4.1 versiyasini talab qiladi.

Buyruqning chiqishi brew-install faylga nima qo'shilishi kerakligini ko'rsatadigan "Ogohlantirishlar" bo'limini o'z ichiga oladi ~/.bash_profile:

export BASH_COMPLETION_COMPAT_DIR=/usr/local/etc/bash_completion.d
[[ -r "/usr/local/etc/profile.d/bash_completion.sh" ]] && . 
"/usr/local/etc/profile.d/bash_completion.sh"

Biroq, men ushbu qatorlarni emas, balki qo'shishni tavsiya qilaman ~/.bash_profilevaqt ichida ~/.bashrcBunday holda, avtoto'ldirish nafaqat asosiy qobiqda, balki bolalar buyruq qobig'ida ham mavjud bo'ladi.

Buyruqlar qobig'ini qayta ishga tushirgandan so'ng, siz quyidagi buyruq yordamida o'rnatishning to'g'riligini tekshirishingiz mumkin:

$ type _init_completion

Agar siz chiqishda qobiq funksiyasini ko'rsangiz, unda hamma narsa to'g'ri tuzilgan.

Endi biz kubectl avtoto'ldirish barcha seanslarda yoqilganligiga ishonch hosil qilishimiz kerak.

Buning usullaridan biri quyidagi qatorni o'zingizga qo'shishdir ~/.bashrc:

source <(kubectl completion bash)

Ikkinchi usul - papkaga avtomatik to'ldirish skriptini qo'shish /usr/local/etc/bash_completion.d:

$ kubectl completion bash
>/usr/local/etc/bash_completion.d/kubectl

Bu usul faqat Homebrew yordamida bash-to'ldirishni o'rnatgan bo'lsangiz ishlaydi. Bunday holda, bash-to'ldirish ushbu katalogdagi barcha skriptlarni yuklaydi.

Agar siz o'rnatgan bo'lsangiz kubectl Homebrew yordamida, keyin oldingi qadamni bajarishingiz shart emas, chunki avtomatik to'ldirish skripti avtomatik ravishda papkaga joylashtiriladi. /usr/local/etc/bash_completion.d o'rnatish vaqtida. Bunday holda, kubectl avtomatik yakunlash bash-to'ldirishni o'rnatishingiz bilanoq ishlay boshlaydi.

Oxir-oqibat, bu variantlarning barchasi ekvivalentdir.

zsh

Zsh avtoto'ldirish skriptlari hech qanday bog'liqlikni talab qilmaydi. Siz qilishingiz kerak bo'lgan yagona narsa qobiqni ishga tushirganingizda ularni yoqishdir.

Buni o'zingizning qatoringizga qator qo'shish orqali qilishingiz mumkin ~/.zshrc fayl:

source <(kubectl completion zsh)

Agar xato olsangiz not found: compdef Qobiqni qayta ishga tushirgandan so'ng, siz o'rnatilgan funksiyani yoqishingiz kerak compdef. Siz uni faylingizning boshiga qo'shish orqali yoqishingiz mumkin. ~/.zshrc Quyidagilar:

autoload -Uz compinit
compinit

2. Resurs xususiyatlarini tezda ko'rib chiqing

YAML resurs ta'riflarini yaratishda siz ushbu resurslar uchun maydonlar va ularning ma'nolarini bilishingiz kerak. Ushbu ma'lumotni topish uchun bitta joy barcha resurslarning to'liq xususiyatlarini o'z ichiga olgan API ma'lumotnomasida.

Biroq, har safar biror narsani qidirish kerak bo'lganda veb-brauzerga o'tish noqulay. Shuning uchun kubectl buyruq beradi kubectl explain, bu sizning terminalingizdagi barcha resurslarning texnik xususiyatlarini ko'rsatadi.

Buyruqning formati quyidagicha:

$ kubectl explain resource[.field]...

Buyruq so'ralgan manba yoki maydonning spetsifikatsiyasini chiqaradi. Ma'lumot chiqishi API qo'llanmasida mavjud bo'lgan bilan bir xil.

sukut kubectl explain dala uyasining faqat birinchi darajasini ko'rsatadi.

Bu qanday ko'rinishini ko'ring Keyin mumkin.

Variantni qo'shish orqali butun daraxtni ko'rsatishingiz mumkin --recursive:

$ kubectl explain deployment.spec --recursive

Agar sizga qaysi resurslar kerakligini aniq bilmasangiz, ularni quyidagi buyruq bilan ko'rsatishingiz mumkin:

$ kubectl api-resources

Bu buyruq manba nomlarini ko'plik shaklida ko'rsatadi, masalan, deployments o'rniga deployment. Shuningdek, u qisqa nomni ko'rsatadi, masalan deploy, unga ega bo'lgan resurslar uchun. Bu farqlar haqida tashvishlanmang. Ushbu nomlash variantlarining barchasi kubectl uchun ekvivalentdir. Ya'ni, siz ulardan har qandayidan foydalanishingiz mumkin kubectl explain.

Quyidagi buyruqlarning barchasi ekvivalentdir:

$ kubectl explain deployments.spec
# или
$ kubectl explain deployment.spec
# или        
$ kubectl explain deploy.spec

3. Maxsus ustun chiqish formatidan foydalaning

Standart buyruq chiqish formati kubectl get:

$ kubectl get pods
NAME                     READY    STATUS    RESTARTS  AGE
engine-544b6b6467-22qr6   1/1     Running     0       78d
engine-544b6b6467-lw5t8   1/1     Running     0       78d
engine-544b6b6467-tvgmg   1/1     Running     0       78d
web-ui-6db964458-8pdw4    1/1     Running     0       78d

Ushbu format qulay, ammo u cheklangan miqdordagi ma'lumotlarni o'z ichiga oladi. To'liq manba ta'rifi formati bilan solishtirganda, u faqat bir nechta maydonlarni ko'rsatadi.

Bunday holda siz maxsus ustun chiqish formatidan foydalanishingiz mumkin. Bu sizga qaysi ma'lumotlarni chiqarish kerakligini aniqlash imkonini beradi. Har qanday resurs maydonini alohida ustun sifatida chiqarishingiz mumkin.

Maxsus formatdan foydalanish variantlar bilan belgilanadi:

-o custom-columns=<header>:<jsonpath>[,<header>:<jsonpath>]...

Har bir chiqish ustunini juftlik sifatida belgilashingiz mumkin <header>:<jsonpath>qayerda <header> — ustun nomi va <jsonpath> — resurs maydonini belgilovchi ifoda.

Keling, oddiy misolni ko'rib chiqaylik:

$ kubectl get pods -o custom-columns='NAME:metadata.name'

NAME
engine-544b6b6467-22qr6
engine-544b6b6467-lw5t8
engine-544b6b6467-tvgmg
web-ui-6db964458-8pdw4

Chiqishda podalar nomlari yozilgan bitta ustun mavjud.

Variantdagi ifoda maydondan pod nomlarini tanlaydi metadata.nameBuning sababi, pod nomi pastki maydon nomida aniqlangan metadata pod resurs tavsifida. Batafsil ma'lumotni sahifada topishingiz mumkin API qo'llanma yoki buyruq yozing kubectl explain pod.metadata.name.

Aytaylik, siz chiqishga qo'shimcha ustun qo'shmoqchisiz, masalan, har bir pod ishlayotgan tugunni ko'rsatish. Buni amalga oshirish uchun siz oddiy ustunlar parametriga tegishli ustun spetsifikatsiyasini qo'shishingiz mumkin:

$ kubectl get pods 
  -o custom-columns='NAME:metadata.name,NODE:spec.nodeName'

NAME                       NODE
engine-544b6b6467-22qr6    ip-10-0-80-67.ec2.internal
engine-544b6b6467-lw5t8    ip-10-0-36-80.ec2.internal
engine-544b6b6467-tvgmg    ip-10-0-118-34.ec2.internal
web-ui-6db964458-8pdw4     ip-10-0-118-34.ec2.internal

Ifoda tugun nomini tanlaydi spec.nodeName — tugunga pod tayinlanganda maydonga uning nomi yoziladi spec.nodeName pod resurs spetsifikatsiyasi. Batafsil ma'lumotni chiqishda topish mumkin kubectl explain pod.spec.nodeName.

Kubernetes resurs maydonlari katta-kichik harflarga sezgir ekanligini unutmang.

Har qanday manba maydonini ustun sifatida ko'rishingiz mumkin. Shunchaki resurs spetsifikatsiyasini ko'rib chiqing va uni o'zingiz yoqtirgan maydonlar bilan sinab ko'ring.

Biroq, avvalo, maydon tanlash ifodalarini batafsil ko'rib chiqaylik.

JSONPath ifodalari

Resurs maydonlarini tanlash uchun ifodalar asoslanadi JSONPath.

JSONPath - bu JSON hujjatlaridan ma'lumotlarni olish uchun til. Bitta maydonni olish JSONPath uchun eng oddiy foydalanish holatidir. Unda ko'p narsa bor ko'proq imkoniyatlar, shu jumladan selektorlar, filtrlar va boshqalar.

Kubectl tushuntirish cheklangan miqdordagi JSONPath imkoniyatlarini qo'llab-quvvatlaydi. Ushbu imkoniyatlar va foydalanish misollari quyida tasvirlangan:

# Выбрать все элементы списка
$ kubectl get pods -o custom-columns='DATA:spec.containers[*].image'
# Выбрать специфический элемент списка
$ kubectl get pods -o custom-columns='DATA:spec.containers[0].image'
# Выбрать элементы списка, попадающие под фильтр
$ kubectl get pods -o custom-columns='DATA:spec.containers[?(@.image!="nginx")].image'
# Выбрать все поля по указанному пути, независимо от их имени
$ kubectl get pods -o custom-columns='DATA:metadata.*'
# Выбрать все поля с указанным именем, вне зависимости от их расположения
$ kubectl get pods -o custom-columns='DATA:..image'

[] operatori ayniqsa muhimdir. Ko'pgina Kubernetes resurs maydonlari ro'yxatlardir va bu operator sizga ushbu ro'yxatlardan elementlarni tanlash imkonini beradi. Ko'pincha ro'yxatning barcha elementlarini tanlash uchun [*] kabi joker belgi bilan ishlatiladi.

Qo'llash misollari

Maxsus ustun chiqish formatidan foydalanish imkoniyatlari cheksizdir, chunki chiqishda istalgan maydon yoki manba maydonlarining kombinatsiyasini ko'rsatishingiz mumkin. Mana bir nechta misol ilovalari, lekin ularni o'zingiz o'rganing va foydali ilovalarni toping.

  1. Podlar uchun konteyner tasvirlari ko'rsatilmoqda:
    $ kubectl get pods 
      -o custom-columns='NAME:metadata.name,IMAGES:spec.containers[*].image'
    
    NAME                        IMAGES
    engine-544b6b6467-22qr6     rabbitmq:3.7.8-management,nginx
    engine-544b6b6467-lw5t8     rabbitmq:3.7.8-management,nginx
    engine-544b6b6467-tvgmg     rabbitmq:3.7.8-management,nginx
    web-ui-6db964458-8pdw4      wordpress

    Bu buyruq har bir pod uchun konteyner tasvir nomlarini ko'rsatadi.

    Esda tutingki, podkastda bir nechta konteynerlar bo'lishi mumkin, bu holda tasvir nomlari vergul bilan ajratilgan bitta satrda ko'rsatiladi.

  2. Tugun mavjudligi zonalari ko'rsatilmoqda:
    $ kubectl get nodes 
      -o 
    custom-columns='NAME:metadata.name,ZONE:metadata.labels.failure-domain.beta.kubernetes.io/zone'
    
    NAME                          ZONE
    ip-10-0-118-34.ec2.internal   us-east-1b
    ip-10-0-36-80.ec2.internal    us-east-1a
    ip-10-0-80-67.ec2.internal    us-east-1b

    Agar sizning klasteringiz umumiy bulutda joylashgan bo'lsa, bu buyruq foydalidir. U har bir tugun uchun mavjudlik zonasini ko'rsatadi.

    Mavjudlik zonasi - bu replikatsiya maydonini geografik mintaqa bilan cheklaydigan bulut tushunchasi.

    Har bir tugun uchun mavjudlik zonalari maxsus yorliq orqali olinadi - failure-domain.beta.kubernetes.io/zoneAgar klaster umumiy bulutda ishlayotgan bo'lsa, bu yorliq avtomatik ravishda yaratiladi va har bir tugun uchun mavjudlik zonalari nomlari bilan to'ldiriladi.

    Yorliqlar Kubernetes resurs spetsifikatsiyasining bir qismi emas, shuning uchun ular haqida maʼlumot topa olmaysiz API qo'llanmaBiroq, ularni YAML yoki JSON formatida tugun ma'lumotlarini so'rash orqali ko'rish mumkin (boshqa teglar kabi):

    $ kubectl get nodes -o yaml
    # или
    $ kubectl get nodes -o json

    Bu resurs xususiyatlarini o'rganishdan tashqari, resurslar haqida ko'proq ma'lumot olishning ajoyib usuli.

4. Klasterlar va nomlar bo'shliqlari o'rtasida oson almashish

kubectl Kubernetes API ga so'rov yuborganda, u ulanish uchun barcha kerakli parametrlarni olish uchun avval kubeconfig faylini o'qiydi.

Odatiy bo'lib, kubeconfig fayli ~/.kube/config. Ushbu fayl odatda maxsus buyruq bilan yaratiladi yoki yangilanadi.

Bir nechta klasterlar bilan ishlaganingizda kubeconfig faylida ularning barchasi uchun ulanish parametrlari mavjud. Sizga kubectl buyrug'iga qaysi klaster bilan ishlayotganingizni aytish uchun usul kerak.

Klaster ichida siz bir nechta nom maydonlarini yaratishingiz mumkin - jismoniy klaster ichida virtual klaster turi. Kubectl kubeconfig fayli asosida qaysi nom maydonidan foydalanishni aniqlaydi. Shuning uchun, sizga kubectl-ga qaysi nom maydonidan foydalanishni aytish usuli kerak.

Ushbu bobda biz uning qanday ishlashini va samarali ishlashga qanday erishish mumkinligini tushuntiramiz.

Esda tutingki, siz KUBECONFIG muhit oʻzgaruvchisida bir nechta kubeconfig fayllariga ega boʻlishingiz mumkin. Bunday holda, ushbu fayllarning barchasi ish vaqtida bitta umumiy konfiguratsiyaga birlashtiriladi. Shuningdek, kubectl ni parametr bilan ishga tushirish orqali standart kubeconfig faylini o'zgartirishingiz mumkin --kubeconfig. Qarang rasmiy hujjatlar.

kubeconfig fayllari

Keling, kubeconfig faylida nima borligini ko'rib chiqaylik:

Kubectl-dan qanday samarali foydalanish kerak: batafsil qo'llanma
Ko'rib turganingizdek, kubeconfig faylida kontekstlar to'plami mavjud. Kontekst uchta elementdan iborat:

  • Klaster - Klaster server API URL manzili.
  • Foydalanuvchi — klaster uchun foydalanuvchi autentifikatsiya maʼlumotlari.
  • Nomlar maydoni - Klasterga qo'shilishda foydalaniladigan nomlar maydoni.

Amalda kubeconfig faylida har bir klaster uchun bitta kontekstdan foydalanish odatiy holdir. Biroq, har bir klaster uchun foydalanuvchi yoki nom maydoni bilan farqlangan bir nechta kontekstga ega bo'lishingiz mumkin. Biroq, bir nechta kontekstli bunday konfiguratsiya kam uchraydi, shuning uchun odatda klasterlar va kontekstlar o'rtasida birma-bir xaritalash mavjud.

Har qanday vaqtda kontekstlardan biri joriy:

Kubectl-dan qanday samarali foydalanish kerak: batafsil qo'llanma
kubectl konfiguratsiya faylini o'qiganda, u har doim joriy kontekstdan ma'lumot oladi. Yuqoridagi misolda kubectl Xare klasteriga ulanadi.

Shunga ko'ra, boshqa klasterga o'tish uchun kubeconfig faylidagi joriy kontekstni o'zgartirishingiz kerak:

Kubectl-dan qanday samarali foydalanish kerak: batafsil qo'llanma
Endi kubectl Fox klasteriga ulanadi.

Xuddi shu klasterdagi boshqa nom maydoniga o'tish uchun joriy kontekst uchun nom maydoni elementining qiymatini o'zgartirishingiz kerak:

Kubectl-dan qanday samarali foydalanish kerak: batafsil qo'llanma
Yuqoridagi misolda kubectl Fox klasterining Prod nom maydonidan foydalanadi (Sinov nom maydoni avval o'rnatilgan).

E'tibor bering, kubectl ham variantlarni taqdim etadi --cluster, --user, --namespace и --context, bu kubeconfig faylida nima o'rnatilganidan qat'i nazar, alohida elementlarni va joriy kontekstning o'zini qayta yozishga imkon beradi. Qarang kubectl options.

Nazariy jihatdan kubeconfig faylidagi parametrlarni qo'lda o'zgartirishingiz mumkin. Biroq, bu noqulay. Ushbu operatsiyalarni soddalashtirish uchun parametrlarni avtomatik ravishda o'zgartirishga imkon beruvchi turli xil yordamchi dasturlar mavjud.

kubectx dan foydalaning

Klasterlar va nomlar bo'shliqlari o'rtasida almashish uchun juda mashhur yordamchi dastur.

Yordamchi dastur buyruqlar beradi kubectx и kubens mos ravishda joriy kontekst va nom maydonini o'zgartirish uchun.

Yuqorida aytib o'tilganidek, joriy kontekstni o'zgartirish har bir klasterda faqat bitta kontekstga ega bo'lsangiz, klasterni o'zgartirishni anglatadi.

Mana bu buyruqlarni bajarish misoli:

Kubectl-dan qanday samarali foydalanish kerak: batafsil qo'llanma
Aslida, bu buyruqlar kubeconfig faylini yuqorida aytib o'tilganidek tahrir qiladi.

O'rnatish uchun kubectx, ustidagi ko'rsatmalarga amal qiling Github.

Ikkala buyruq ham kontekst va nom maydoni nomlarini avtomatik to'ldirishni qo'llab-quvvatlaydi, bu ularni to'liq terish zaruratini yo'q qiladi. Avtomatik to'ldirishni sozlash bo'yicha ko'rsatmalar shu yerda.

Yana bir foydali xususiyat kubectx u interaktiv rejimU yordamchi dastur bilan birgalikda ishlaydi fzf, bu alohida o'rnatilishi kerak. Fzf-ni avtomatik ravishda o'rnatish interaktiv rejimni mavjud qiladi kubectxInteraktiv rejimda siz fzf tomonidan taqdim etilgan interaktiv bepul qidiruv interfeysi orqali kontekst va nomlar maydonini tanlashingiz mumkin.

Shell taxalluslaridan foydalanish

Joriy kontekst va nomlar maydonini o'zgartirish uchun sizga alohida vositalar kerak emas, chunki kubectl ham buning uchun buyruqlar beradi. Masalan, buyruq kubectl config Kubeconfig fayllarini tahrirlash uchun kichik buyruqlar beradi.

Ulardan ba'zilari quyidagilardir:

  • kubectl config get-contexts: barcha kontekstlarni chiqarish;
  • kubectl config current-context: joriy kontekstni olish;
  • kubectl config use-context: joriy kontekstni o'zgartirish;
  • kubectl config set-context: kontekst elementini o'zgartirish.

Biroq, bu buyruqlarni bevosita ishlatish unchalik qulay emas, chunki ular uzoq. Ular uchun bajarilishi oson bo'lgan qobiq taxalluslarini yaratishingiz mumkin.

Men kubectx-ga o'xshash funksionallikni ta'minlaydigan ushbu buyruqlar asosida taxalluslar to'plamini yaratdim. Siz ularni bu yerda ko'rishingiz mumkin:

Kubectl-dan qanday samarali foydalanish kerak: batafsil qo'llanma
E'tibor bering, taxalluslar fzf dan interaktiv, bepul qidiruv interfeysini ta'minlash uchun foydalanadi (kubectx interaktiv rejimiga o'xshash). Bu sizga kerak degan ma'noni anglatadi fzf ni o'rnatingbu taxalluslardan foydalanish uchun.

Mana taxalluslarning ta'riflari:

# Получить текущий контекст
alias krc='kubectl config current-context'
# Список всех контекстов
alias klc='kubectl config get-contexts -o name | sed "s/^/  /;|^  $(krc)$|s/ /*/"'
# Изменить текущий контекст
alias kcc='kubectl config use-context "$(klc | fzf -e | sed "s/^..//")"'

# Получить текущее пространство имен
alias krn='kubectl config get-contexts --no-headers "$(krc)" | awk "{print $5}" | sed "s/^$/default/"'
# Список всех пространств имен
alias kln='kubectl get -o name ns | sed "s|^.*/|  |;|^  $(krn)$|s/ /*/"'
# Изменить текущее пространство имен
alias kcn='kubectl config set-context --current --namespace "$(kln | fzf -e | sed "s/^..//")"'

Ushbu taxalluslarni o'rnatish uchun faylingizga yuqoridagi ta'riflarni qo'shishingiz kerak. ~/.bashrc yoki ~/.zshrc va qobiqni qayta ishga tushiring.

Plaginlardan foydalanish

Kubectl sizga asosiy buyruqlar kabi bajariladigan plaginlarni yuklash imkonini beradi. Masalan, kubectl-foo plaginini o'rnatishingiz va buyruqni ishga tushirishingiz mumkin kubectl foo.

Kontekst va nomlar maydonini shu tarzda o'zgartirish qulay bo'ladi, masalan, ishga tushirish kubectl ctx kontekstni o'zgartirish va kubectl ns nom maydonini o'zgartirish uchun.

Men buni amalga oshiradigan ikkita plaginni yozdim:

Plaginlar oldingi qismdagi taxalluslar asosida ishlaydi.

Mana ular qanday ishlaydi:

Kubectl-dan qanday samarali foydalanish kerak: batafsil qo'llanma
Iltimos, plaginlar interaktiv, bepul qidiruv interfeysini ta'minlash uchun fzf dan foydalanishini unutmang (kubectx interaktiv rejimiga o'xshash). Bu sizga kerak degan ma'noni anglatadi fzf ni o'rnatingbu taxalluslardan foydalanish uchun.

Plaginlarni o'rnatish uchun siz nomli qobiq skriptlarini yuklab olishingiz kerak kubectl-ctx и kubectl-ns PATH o'zgaruvchingizdagi istalgan katalogga kiriting va ularni bajariladigan qilib qo'ying, masalan chmod +x. Shundan so'ng siz uni darhol ishlatishingiz mumkin. kubectl ctx и kubectl ns.

5. Avtoaliazlar bilan kiritishni qisqartiring

Shell taxalluslari yozishni tezlashtirishning ajoyib usuli hisoblanadi. Loyiha kubectl-taxalluslar Asosiy kubectl buyruqlari uchun 800 ga yaqin yorliqlarni o'z ichiga oladi.

800 ta taxallusni qanday eslab qolishni qiziqtirgandirsiz. Ammo ularning barchasini eslab qolish shart emas, chunki ular quyida ko'rsatilganidek, oddiy formulaga amal qiladi:

Kubectl-dan qanday samarali foydalanish kerak: batafsil qo'llanma
Masalan:

  1. kgpooyaml - kubectl pods oyaml olish
  2. ksysgsvcw — kubectl -n kube-tizimi svc w olish
  3. ksysrmcm -kubectl -n kube-tizimi rm sm
  4. kgdepallls - kubectl barcha sl-ni joylashtirishni oladi

Ko'rib turganingizdek, taxalluslar komponentlardan iborat bo'lib, ularning har biri kubectl buyrug'ining ma'lum bir elementini ifodalaydi. Har bir taxallus asosiy buyruq, operatsiya va resurs uchun bitta komponentga va parametrlar uchun bir nechta komponentlarga ega bo'lishi mumkin. Yuqoridagi diagrammaga ko'ra, siz shunchaki chapdan o'ngga ushbu komponentlarni "to'ldirasiz".

Joriy batafsil diagramma quyidagi manzilda joylashgan GitHubU erda siz ham topishingiz mumkin taxalluslarning to'liq ro'yxati.

Masalan, kgpooyamlall taxallusi buyruqqa teng kubectl get pods -o yaml --all-namespaces.

Variantlarning nisbiy tartibi muhim emas: buyruq kgpooyamlall buyruqqa teng kgpoalloyaml.

Siz barcha komponentlardan taxallus sifatida foydalana olmaysiz. Masalan k, kg, klo, ksys, kgpo ham foydalanish mumkin. Bundan tashqari, taxalluslar va oddiy buyruqlar yoki variantlar buyruq satrida birlashtirilishi mumkin:

Masalan:

  1. Buning o'rniga kubectl proxy yozishingiz mumkin k proxy.
  2. Buning o'rniga kubectl get roles yozishingiz mumkin kg roles (Hozirda Rollar resursi uchun taxallus mavjud emas).
  3. Muayyan pod uchun ma'lumotlarni olish uchun siz buyruqdan foydalanishingiz mumkin kgpo my-pod — kubectl get pod my-pod.

E'tibor bering, ba'zi taxalluslar buyruq satrida argument talab qiladi. Masalan, taxallus kgpol degani kubectl get pods -l. Variant -l argumentni talab qiladi - yorliq spetsifikatsiyasi. Agar siz taxallusdan foydalansangiz, u quyidagicha ko'rinadi: kgpol app=ui.

Ba'zi taxalluslar argumentlarni talab qilganligi sababli a, f va l taxalluslari oxirgi qo'llanilishi kerak.

Umuman olganda, ushbu sxemani o'zlashtirganingizdan so'ng, siz ko'p yozish vaqtini tejab, bajarmoqchi bo'lgan buyruqlardan intuitiv ravishda taxalluslarni olishingiz mumkin bo'ladi.

O'rnatish

kubectl-taxalluslarni o'rnatish uchun faylni yuklab olishingiz kerak .kubectl_aliases GitHub dan va uni faylga qo'shing ~/.bashrc yoki ~/.zshrc:

source ~/.kubectl_aliases

Avtomatik toʻldirish

Yuqorida aytib o'tganimizdek, siz ko'pincha buyruq satrida taxallusga qo'shimcha so'zlar qo'shasiz. Masalan:

$ kgpooyaml test-pod-d4b77b989

Agar siz kubectl buyrug'ini bajarishdan foydalansangiz, uni manba nomlari kabi narsalar uchun ishlatgan bo'lishingiz mumkin. Ammo taxalluslardan foydalanganda ham shunday qilish mumkinmi?

Bu juda muhim savol, chunki agar avtomatik toʻldirish ishlamasa, taxalluslarning baʼzi afzalliklarini yoʻqotasiz.

Javob qaysi qobiqdan foydalanayotganingizga bog'liq:

  1. Zsh uchun taxalluslar uchun avtomatik to'ldirish qutidan tashqarida ishlaydi.
  2. Afsuski, Bash avtoto'ldirishni ishga tushirish uchun biroz ishlashni talab qiladi.

Bashdagi taxalluslar uchun avtomatik toʻldirishni yoqish

Bash bilan bog'liq muammo shundaki, u taxallus ko'rsatadigan buyruqni emas (masalan, Zsh kabi) emas, balki taxallusni (Tab tugmasini bosganingizda) bajarishga harakat qiladi. Sizda 800 ta taxallus uchun yakuniy skriptlar yo‘qligi sababli, avtomatik to‘ldirish ishlamaydi.

Loyiha to'liq taxallus bu muammoning umumiy yechimini taqdim etadi. U taxallusni yakunlash mexanizmiga ulanadi, taxallusni buyruqqa ichki kengaytiradi va kengaytirilgan buyruq uchun tugatish opsiyalarini qaytaradi. Bu shuni anglatadiki, taxallusni to'ldirish to'liq buyruq bilan bir xil ishlaydi.

Keyin, avvalo, toʻliq taxallusni qanday oʻrnatishni, keyin esa barcha kubectl taxalluslari uchun yakunlashni yoqish uchun uni qanday sozlashni tushuntiraman.

To'liq taxallus o'rnatilmoqda

Avvalo, to'liq taxallus ga bog'liq bash-to'ldirish. Поэтому перед установкой complete-alias необходимо убедиться, что bash-completion установлен. Инструкции по установке были даны ранее для Linux и MacOS.

MacOS foydalanuvchilari uchun muhim eslatma: kubectl avtoto‘ldirish skripti singari, tam taxallus ham MacOS’da standart versiya bo‘lgan Bash 3.2 bilan ishlamaydi. Xususan, to'liq taxallus bash-to'ldirish v2 ga bog'liq (brew install bash-completion@2), bu kamida Bash 4.1 ni talab qiladi. Bu shuni anglatadiki, macOS-da to'liq taxallusdan foydalanish uchun siz Bashning yangiroq versiyasini o'rnatishingiz kerak.

Skriptni yuklab olishingiz kerak bash_completion.sh dan GitHub ombori va uni faylingizga kiriting ~/.bashrc:

source ~/bash_completion.sh

Qobiqni qayta ishga tushirgandan so'ng, to'liq taxallus to'liq o'rnatiladi.

kubectl taxalluslari uchun avtomatik toʻldirish yoqilmoqda

Texnik jihatdan, to'liq taxallus qobiq funktsiyasini ta'minlaydi _complete_aliasBu funktsiya taxallusni tekshiradi va taxallus buyrug'i uchun tugatish ko'rsatmalarini qaytaradi.

Funktsiyani ma'lum bir taxallus bilan bog'lash uchun siz o'rnatilgan Bash mexanizmidan foydalanishingiz kerak. to'lao'rnatish uchun _complete_alias taxallus to‘ldiruvchi vazifasi sifatida.

Misol tariqasida kubectl buyrug'ini bildiruvchi k taxallusni olaylik. O'rnatish uchun _complete_alias Ushbu taxallus uchun qo'shimcha funktsiya sifatida siz quyidagi buyruqni bajarishingiz kerak:

$ complete -F _complete_alias k

Buning natijasi shundaki, k taxallusni avtomatik to'ldirganingizda, funktsiya chaqiriladi _complete_alias, bu taxallusni tekshiradi va buyruq uchun yakuniy maslahatlarni qaytaradi kubectl.

Ikkinchi misol sifatida taxallusni olaylik kg, bu degani kubectl get:

$ complete -F _complete_alias kg

Oldingi misolda bo'lgani kabi, kg ni avtomatik to'ldirganingizda, siz bajarish uchun bir xil takliflarni olasiz. kubectl get.

Shuni yodda tutingki, siz tizimingizdagi har qanday taxallus uchun to'liq taxallusdan foydalanishingiz mumkin.

Shuning uchun, barcha kubectl taxalluslari uchun avtoto'ldirishni yoqish uchun har biri uchun yuqoridagi buyruqni bajarishingiz kerak. Kubectl-taxalluslarni o'rnatgan bo'lsangiz, quyidagi parcha aynan shunday qiladi ~/.kubectl-aliases:

for _a in $(sed '/^alias /!d;s/^alias //;s/=.*$//' ~/.kubectl_aliases); 
do
  complete -F _complete_alias "$_a"
done

Ushbu kod qismi sizning sahifangizga joylashtirilishi kerak ~/.bashrc, buyruq qobig'ini qayta ishga tushiring va avtoto'ldirish barcha 800 kubectl taxalluslari uchun mavjud bo'ladi.

6. Plaginlar bilan kubectlni kengaytirish

Chunki 1.12 versiyasi, kubectl qo'llab-quvvatlaydi plagin mexanizmi, bu sizga qo'shimcha buyruqlar bilan uning funksionalligini kengaytirish imkonini beradi.

Agar tanish bo'lsangiz Git plagin mexanizmlari, keyin kubectl plaginlari bir xil printsip asosida qurilgan.

Ushbu bobda biz plaginlarni qanday o'rnatish, ularni qaerdan topish va o'z plaginlaringizni qanday yaratishni ko'rib chiqamiz.

Plaginlarni o'rnatish

Kubectl plaginlari kabi nomga ega oddiy bajariladigan fayllar sifatida tarqatiladi kubectl-x. Prefiks kubectl- talab qilinadi, undan keyin plaginga qo'ng'iroq qilish imkonini beruvchi yangi kubectl kichik buyrug'i.

Masalan, salom plagini nomli fayl sifatida tarqatiladi kubectl-hello.

Plaginni o'rnatish uchun faylni nusxalashingiz kerak kubectl-x PATH o'zgaruvchingizdagi istalgan katalogga kiriting va uni bajariladigan qilib qo'ying, masalan chmod +x. Shundan so'ng siz plagin yordamida qo'ng'iroq qilishingiz mumkin kubectl x.

Tizimingizda hozirda o'rnatilgan barcha plaginlarni ro'yxatga olish uchun quyidagi buyruqdan foydalanishingiz mumkin:

$ kubectl plugin list

Agar sizda bir xil nomdagi bir nechta plaginlar bo'lsa yoki bajarilmaydigan plagin faylingiz bo'lsa, bu buyruq ogohlantirishlarni ham ko'rsatadi.

Krew yordamida plaginlarni topish va o'rnatish

Kubectl plaginlari xuddi dasturiy paketlar kabi almashish va qayta foydalanish oson. Ammo boshqalar baham ko'rgan plaginlarni qayerdan topishingiz mumkin?

Krew loyihasi kubectl plaginlarini almashish, topish, o'rnatish va boshqarish uchun yagona yechimni taqdim etishga qaratilgan. Loyiha o'zini "kubectl plaginlari uchun paket menejeri" deb ataydi (Krew Brew).

Krew - siz tanlashingiz va o'rnatishingiz mumkin bo'lgan kubectl plaginlari ro'yxati. Krew ham kubectl plaginidir.

Bu shuni anglatadiki, Krew o'rnatilishi boshqa kubectl plaginini o'rnatish kabi ishlaydi. Siz batafsil ko'rsatmalar bilan tanishishingiz mumkin GitHub sahifasi.

Krewning eng muhim jamoalari:

# Поиск в списке плагинов
$ kubectl krew search [<query>]
# Посмотреть информацию о плагине
$ kubectl krew info <plugin>
# Установить плагин
$ kubectl krew install <plugin>
# Обновить все плагины до последней версии
$ kubectl krew upgrade
# Посмотреть все плагины, установленные через Krew
$ kubectl krew list
# Деинсталлировать плагин
$ kubectl krew remove <plugin>

Iltimos, Krew yordamida plaginlarni o'rnatish yuqorida tavsiflangan standart usul yordamida plaginlarni o'rnatishga xalaqit bermasligini unutmang.

Iltimos, buyruqni unutmang kubectl krew list buyruq faqat Krew yordamida o'rnatilgan plaginlarni ko'rsatadi kubectl plugin list Krew yordamida o'rnatilgan va boshqa vositalar bilan o'rnatilgan barcha plaginlarni ro'yxatlaydi.

Boshqa joylarda plaginlarni qidiring

Krew - bu yosh loyiha, hozirda ro'yxati Hammasi bo'lib 30 ga yaqin plaginlar mavjud. Agar kerakli narsani topa olmasangiz, plaginlarni boshqa joyda, masalan, GitHub-da topishingiz mumkin.

Men GitHub bo'limini tekshirishni tavsiya qilaman. kubectl plaginlariU erda siz tekshirishga arziydigan o'nlab mavjud plaginlarni topasiz.

O'zingizning plaginlaringizni yozish

o'zingiz qila olasiz plaginlarni yaratish - qiyin emas. Sizga kerak bo'lgan narsani bajaradigan bajariladigan faylni yaratishingiz kerak, uni shunday nomlang kubectl-x va yuqorida aytib o'tilganidek o'rnating.

Fayl bash skripti, python skripti yoki kompilyatsiya qilingan go ilovasi bo'lishi mumkin - bu muhim emas. Yagona talab shundaki, u to'g'ridan-to'g'ri operatsion tizim tomonidan bajarilishi mumkin.

Keling, hozir misol plaginini yarataylik. Oldingi bo'limda siz kubectl buyrug'idan har bir pod uchun konteynerlarni ro'yxatga olish uchun foydalandingiz. Ushbu buyruqni osongina, masalan, qo'ng'iroq qilishingiz mumkin bo'lgan plaginga aylantirishingiz mumkin kubectl img.

Fayl yarating kubectl-img quyidagi tarkib:

#!/bin/bash
kubectl get pods -o custom-columns='NAME:metadata.name,IMAGES:spec.containers[*].image'

Endi foydalanib, faylni bajariladigan holga keltiring chmod +x kubectl-img va uni PATH-dagi istalgan katalogga ko'chiring. Shundan so'ng darhol plagindan foydalanishingiz mumkin. kubectl img.

Yuqorida aytib o'tilganidek, kubectl plaginlari istalgan dasturlash yoki skript tilida yozilishi mumkin. Agar siz qobiq skriptlaridan foydalansangiz, afzallik plagin ichidan kubectl ga osongina qo'ng'iroq qilish qobiliyatidir. Biroq, undan foydalanib, haqiqiy dasturlash tillarida murakkabroq plaginlarni yozishingiz mumkin Kubernetes mijozlar kutubxonasiAgar siz Go dan foydalansangiz, siz ham foydalanishingiz mumkin cli-ish vaqti kutubxonasi, bu kubectl plaginlarini yozish uchun maxsus mavjud.

Plaginlaringizni qanday ulashishingiz mumkin

Agar plaginlaringiz boshqalar uchun foydali bo‘lishi mumkin deb hisoblasangiz, ularni GitHub’da baham ko‘ring. Ularni mavzuga qo'shishni unutmang. kubectl plaginlari.

Shuningdek, plaginingizni qo'shishni so'rashingiz mumkin Krew ro'yxatiBuni qanday qilish bo'yicha ko'rsatmalar maqolada keltirilgan GitHub omborlari.

Buyruqning bajarilishi

Hozirda plaginlar avtomatik to‘ldirishni qo‘llab-quvvatlamaydi. Bu siz to'liq plagin nomini va to'liq argument nomlarini kiritishingiz kerakligini anglatadi.

GitHub omborida bu funksiya uchun kubectl ombori mavjud ochiq so'rov. Demak, bu xususiyat kelajakda qachonlardir amalga oshirilishi mumkin.

Omad!!!

Mavzu bo'yicha yana nimani o'qish kerak:

  1. Kubernetes-da avtomatik o'lchashning uchta darajasi va ulardan qanday samarali foydalanish.
  2. Kubernetes qaroqchilik ruhida amalga oshirish shabloniga ega.
  3. Telegramdagi Kubernetes atrofidagi kanalimiz.

Manba: www.habr.com

DDoS himoyasi, VPS VDS serverlari bo'lgan saytlar uchun ishonchli hosting sotib oling 🔥 DDoS himoyasi, VPS VDS serverlari bilan ishonchli veb-sayt xostingini sotib oling | ProHoster