
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 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:

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.yamlBu 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}/replicasetsBarcha Kubernetes operatsiyalari uchun API so'nggi nuqtalarini quyidagi manzilda topish mumkin (shu jumladan ). 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:
- Vault — resurs taʼriflarini saqlaydi ().
- API serveri — API taqdim etadi va saqlashni boshqaradi.
- Nazoratchi menejeri - resurs holatlarining texnik shartlarga muvofiqligini ta'minlaydi.
- Rejalashtiruvchi — ishchi tugunlarida podkastlarni rejalashtiradi.
Va bu erda ishchi tugunlarning eng muhim tarkibiy qismlaridan biri:
- 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 resurs ta'rifidan o'tish).
Klasterda nima bo'lyapti?
- Amalga oshirilgandan keyin
kubectl create -f replicaset.yamlAPI serveri sizning ReplicaSet resursingizning ta'rifini saqlashda saqlaydi:
- Keyinchalik, ReplicaSet boshqaruvchisi ReplicaSet resurslarini yaratish, o'zgartirish va o'chirish bilan shug'ullanadigan kontroller menejerida ishga tushiriladi:

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

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

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

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

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

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:
- ReplicaSet boshqaruvchisi API oxirgi nuqtasidan foydalanadi parametr bilan
watchReplicaSet resurslaridagi o'zgarishlarni kuzatish. - ReplicaSet boshqaruvchisi API oxirgi nuqtasidan foydalanadi (pod yaratish) podalar yaratish.
- Rejalashtiruvchi API so'nggi nuqtasidan foydalanadi (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:
- Saqlash shtatni, ya'ni Kubernetes resurslarini saqlaydi.
- API serveri Kubernetes API ko'rinishidagi xotiraga interfeysni taqdim etadi.
- 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:

Buyruqni bajarish Bash va Zsh qobiqlari uchun ishlaydi.
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 bashYoki:
$ kubectl completion zshNazariy 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-completionYoki:
$ yum install bash-completionPaket 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 "".
Davom etishdan oldin, Bash-ning so'nggi versiyasidan foydalanayotganingizga ishonch hosil qiling (chiqishni tekshiring bash --version).
Bash avtoto'ldirish skripti loyihaga xosdir , shuning uchun avval uni o'rnatishingiz kerak.
yordamida bash-to'ldirishni o'rnatishingiz mumkin :
$ 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_completionAgar 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/kubectlBu 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 , 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
compinit2. 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 .
Variantni qo'shish orqali butun daraxtni ko'rsatishingiz mumkin --recursive:
$ kubectl explain deployment.spec --recursiveAgar 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.spec3. 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 78dUshbu 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-8pdw4Chiqishda 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 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 - bu JSON hujjatlaridan ma'lumotlarni olish uchun til. Bitta maydonni olish JSONPath uchun eng oddiy foydalanish holatidir. Unda ko'p narsa bor , 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.
- 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 wordpressBu 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.
- 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-1bAgar 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 - Agar 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 Biroq, 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 jsonBu 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 .
kubeconfig fayllari
Keling, kubeconfig faylida nima borligini ko'rib chiqaylik:

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 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:

Endi kubectl Fox klasteriga ulanadi.
Xuddi shu klasterdagi boshqa nom maydoniga o'tish uchun joriy kontekst uchun nom maydoni elementining qiymatini o'zgartirishingiz kerak:

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:

Aslida, bu buyruqlar kubeconfig faylini yuqorida aytib o'tilganidek tahrir qiladi.
O'rnatish uchun kubectx, ustidagi ko'rsatmalarga amal qiling
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 .
Yana bir foydali xususiyat kubectx u U yordamchi dastur bilan birgalikda ishlaydi , 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:

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 bu 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:

Iltimos, plaginlar interaktiv, bepul qidiruv interfeysini ta'minlash uchun fzf dan foydalanishini unutmang (kubectx interaktiv rejimiga o'xshash). Bu sizga kerak degan ma'noni anglatadibu taxalluslardan foydalanish uchun.
Plaginlarni o'rnatish uchun siz nomli qobiq skriptlarini yuklab olishingiz kerak и 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 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:

Masalan:
- kgpooyaml - kubectl pods oyaml olish
- ksysgsvcw — kubectl -n kube-tizimi svc w olish
- ksysrmcm -kubectl -n kube-tizimi rm sm
- 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 U erda siz ham topishingiz mumkin.
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:
- Buning o'rniga
kubectl proxyyozishingiz mumkink proxy. - Buning o'rniga
kubectl get rolesyozishingiz mumkinkg roles(Hozirda Rollar resursi uchun taxallus mavjud emas). - 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 GitHub dan va uni faylga qo'shing ~/.bashrc yoki ~/.zshrc:
source ~/.kubectl_aliasesAvtomatik toʻldirish
Yuqorida aytib o'tganimizdek, siz ko'pincha buyruq satrida taxallusga qo'shimcha so'zlar qo'shasiz. Masalan:
$ kgpooyaml test-pod-d4b77b989Agar 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:
- Zsh uchun taxalluslar uchun avtomatik to'ldirish qutidan tashqarida ishlaydi.
- 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 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 . Поэтому перед установкой 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 dan va uni faylingizga kiriting ~/.bashrc:
source ~/bash_completion.shQobiqni 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. o'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 , kubectl qo'llab-quvvatlaydi , bu sizga qo'shimcha buyruqlar bilan uning funksionalligini kengaytirish imkonini beradi.
Agar tanish bo'lsangiz , 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 listAgar 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?
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 ).
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 .
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 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. U erda siz tekshirishga arziydigan o'nlab mavjud plaginlarni topasiz.
O'zingizning plaginlaringizni yozish
o'zingiz qila olasiz - 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 Agar siz Go dan foydalansangiz, siz ham foydalanishingiz mumkin , 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. .
Shuningdek, plaginingizni qo'shishni so'rashingiz mumkin Buni qanday qilish bo'yicha ko'rsatmalar maqolada keltirilgan .
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 . Demak, bu xususiyat kelajakda qachonlardir amalga oshirilishi mumkin.
Omad!!!
Mavzu bo'yicha yana nimani o'qish kerak:
- .
- .
- .
Manba: www.habr.com







