
Хэрэв та Kubernetes-тэй ажилладаг бол kubectl нь таны хамгийн их ашигладаг хэрэгслүүдийн нэг байх магадлалтай. Мөн та тодорхой хэрэгсэлтэй ажиллахад маш их цаг зарцуулах бүрт үүнийг сайтар судалж, хэрхэн үр дүнтэй ашиглах талаар суралцах нь зүйтэй.
баг Би kubectl-тэй үр дүнтэй ажиллах зөвлөмж, аргачлалыг санал болгодог Даниел Вейбелийн нийтлэлийг орчуулсан. Энэ нь танд Кубернетесийн талаар илүү гүнзгий ойлголттой болоход тусална.
Зохиогчийн хэлснээр энэ нийтлэлийн зорилго нь Кубернетестэй хийсэн өдөр тутмын ажлыг илүү үр дүнтэй төдийгүй илүү тааламжтай болгох явдал юм!
Танилцуулга: kubectl гэж юу вэ?
kubectl-ийг хэрхэн илүү үр дүнтэй ашиглах талаар сурахаасаа өмнө энэ нь юу болох, хэрхэн ажилладаг талаар үндсэн ойлголттой болох хэрэгтэй.
Хэрэглэгчийн үүднээс авч үзвэл kubectl бол Kubernetes-ийн үйлдлийг гүйцэтгэх боломжийг олгодог хяналтын самбар юм.
Техникийн хувьд kubectl бол Kubernetes API үйлчлүүлэгч юм.
Kubernetes API нь HTTP REST API юм. Энэхүү API нь Kubernetes-ийн жинхэнэ хэрэглэгчийн интерфэйс бөгөөд үүгээрээ дамжуулан бүрэн хянагддаг. Энэ нь Kubernetes-ийн үйлдэл бүрийг API төгсгөлийн цэг болгон төлөөлдөг бөгөөд энэ төгсгөлийн цэг рүү HTTP хүсэлтээр гүйцэтгэх боломжтой гэсэн үг юм.
Тиймээс kubectl-ийн гол ажил бол Kubernetes API-д HTTP хүсэлт гаргах явдал юм.

Kubernetes бол нөөцөд бүрэн чиглэсэн систем юм. Энэ нь дотоод нөөцийн төлөвийг хадгалж, бүх Kubernetes үйлдлүүд нь CRUD үйлдлүүд гэсэн үг юм.
Та эдгээр нөөцийг удирдан Кубернетесийг бүрэн хянах боломжтой бөгөөд Кубернетес нөөцийн одоогийн байдалд үндэслэн юу хийхээ тодорхойлдог. Ийм учраас Kubernetes API нь нөөцийн төрлүүд болон тэдгээртэй холбоотой үйлдлүүдийн жагсаалт хэлбэрээр зохион байгуулагдсан.
Нэг жишээ авч үзье.
Та ReplicaSet нөөц үүсгэхийг хүсч байна гэж бодъё. Үүнийг хийхийн тулд та ReplicaSet-ийг нэртэй файлд тайлбарлана уу replicaset.yaml, дараа нь тушаалыг ажиллуулна уу:
$ kubectl create -f replicaset.yamlЭнэ нь ReplicaSet нөөцийг үүсгэх болно. Гэхдээ хөшигний ард юу болж байна вэ?
Kubernetes нь ReplicaSet үүсгэх үйлдэлтэй. Бусад үйлдлүүдийн нэгэн адил энэ нь API төгсгөлийн цэг болж илэрдэг. Энэ үйлдлийн тусгай API төгсгөлийн цэг дараах байдалтай байна:
POST /apis/apps/v1/namespaces/{namespace}/replicasetsKubernetes-ийн бүх үйлдлийн API төгсгөлийн цэгүүдийг эндээс олж болно (үүнд ). Төгсгөлийн цэгт бодит хүсэлт гаргахын тулд эхлээд API серверийн URL-г API лавлагаанд жагсаасан төгсгөлийн цэгийн замд хавсаргах ёстой.
Тиймээс, таныг дээрх тушаалыг ажиллуулах үед kubectl нь дээрх API төгсгөлийн цэг рүү HTTP POST хүсэлт илгээдэг. Таны файлд заасан ReplicaSet тодорхойлолт replicaset.yaml, хүсэлтийн биед дамжуулагдана.
Kubernetes кластертай харьцдаг бүх командуудад kubectl ингэж ажилладаг. Эдгээр бүх тохиолдолд kubectl нь зүгээр л HTTP хүсэлтийг тохирох Kubernetes API төгсгөлийн цэгүүд рүү илгээдэг.
гэх мэт хэрэгслийг ашиглан Kubernetes-ийг бүрэн удирдах боломжтой гэдгийг анхаарна уу curl, HTTP хүсэлтийг гараар Kubernetes API руу илгээх. Kubectl нь Kubernetes API-ийн хэрэглээг хялбаршуулдаг.
Эдгээр нь kubectl гэж юу болох, хэрхэн ажилладаг тухай үндсэн ойлголтууд юм. Гэхдээ kubectl хэрэглэгч бүрийн мэдэх ёстой Kubernetes API-ийн талаар илүү их зүйл бий. Кубернетесийн дотоод үйл ажиллагаа руу хурдан шумбаж үзье.
Кубернетесийн дотоод ертөнц
Кубернетес нь кластерийн зангилаанууд дээр тусдаа процесс хэлбэрээр ажилладаг бие даасан бүрэлдэхүүн хэсгүүдээс бүрддэг. Зарим бүрэлдэхүүн хэсгүүд нь мастер зангилаанууд дээр, бусад нь ажилчдын зангилаанууд дээр ажилладаг бөгөөд тус бүр нь тодорхой үүрэг гүйцэтгэдэг.
Мастер зангилааны хамгийн чухал бүрэлдэхүүн хэсгүүд энд байна:
- репозитор - нөөцийн тодорхойлолтыг хадгалдаг ().
- API сервер — API хангаж, хадгалах санг удирддаг.
- Хяналтын менежер - нөөцийн төлөв байдал нь техникийн үзүүлэлттэй нийцэж байгаа эсэхийг баталгаажуулдаг.
- Хуваарьлагч — ажилчны зангилаанууд дээрх pods хуваарь.
Ажилчдын зангилааны хамгийн чухал бүрэлдэхүүн хэсгүүдийн нэг нь энд байна:
- Кубелет - ажилчны зангилаа дээр савыг хөөргөх ажлыг удирддаг.
Эдгээр бүрэлдэхүүн хэсгүүд хэрхэн хамтран ажилладагийг ойлгохын тулд жишээг харцгаая.
Та дөнгөж сая дуусгалаа гэж бодъё kubectl create -f replicaset.yaml, үүний дараа kubectl HTTP POST хүсэлт гаргасан (ReplicaSet нөөцийн тодорхойлолтыг дамжуулж байна).
Кластерт юу болж байна вэ?
- Хийсний дараа
kubectl create -f replicaset.yamlAPI сервер нь таны ReplicaSet нөөцийн тодорхойлолтыг хадгалах санд хадгалдаг:
- Дараа нь ReplicaSet хянагч нь ReplicaSet нөөцийг үүсгэх, өөрчлөх, устгах үйлдлийг зохицуулдаг удирдлагын менежерт нээгдэнэ.

- ReplicaSet хянагч нь ReplicaSet доторх хуулбар бүрийн хувьд pod тодорхойлолтыг үүсгэж (ReplicaSet тодорхойлолт дахь подны загварын дагуу) дэлгүүрт хадгалдаг:

- Төлөвлөгч нь ажилчны зангилаанд хараахан хуваарилагдаагүй байгаа pods-уудыг хянаж эхэлнэ:

- Хуваарьлагч нь под тус бүрт тохирох ажилчны зангилаа сонгож, энэ мэдээллийг хадгалах сан дахь pod тодорхойлолтод нэмнэ:

- Pod-г хуваарилсан ажилчны зангилаа дээр Kubelet-г ажиллуулж, уг зангилаанд хуваарилагдсан подкуудыг хянадаг:

- Кубелет нь репозитороос pod тодорхойлолтыг уншиж, зангилаа дээрх контейнеруудыг ажиллуулахын тулд Docker зэрэг контейнерийн ажиллах цагт тушаалуудыг өгдөг:

Энэ тайлбарын текст хувилбарыг доор харуулав.
ReplicaSet үүсгэх эцсийн цэгийн API хүсэлтийг API сервер боловсруулдаг. API сервер нь хүсэлтийг баталгаажуулж, ReplicaSet нөөцийн тодорхойлолтыг хадгалах санд хадгалдаг.
Энэ үйл явдал нь ReplicaSet хянагчийг эхлүүлдэг бөгөөд энэ нь хянагч менежерийн дэд процесс юм. ReplicaSet хянагч нь хадгалах сан дахь ReplicaSet нөөцийг үүсгэх, шинэчлэх, устгахад хяналт тавьж, эдгээр тохиолдлуудад үйл явдлын мэдэгдлийг хүлээн авдаг.
ReplicaSet хянагчийн ажил нь шаардлагатай тооны ReplicaSet pods байгаа эсэхийг баталгаажуулах явдал юм. Бидний жишээн дээр хараахан подвол байхгүй тул ReplicaSet хянагч нь эдгээр подын тодорхойлолтыг (ReplicaSet тодорхойлолт дахь pod загварын дагуу) үүсгэж, хадгалах санд хадгалдаг.
Шинэ pods үүсгэх нь ажилчны зангилаанд хараахан төлөвлөөгүй байгаа pod тодорхойлолтуудыг хянадаг төлөвлөгчийг идэвхжүүлдэг. Төлөвлөгч нь под тус бүрт тохирох ажилчны зангилаа сонгож, репозитор дахь pod тодорхойлолтыг шинэчилдэг.
Энэ хүртэл кластерын аль ч хэсэгт ажлын ачааллын код хийгээгүй гэдгийг анхаарна уу. Өнөөг хүртэл хийсэн бүх зүйл, - Энэ нь мастер зангилаа дээрх хадгалах сан дахь нөөцийг бий болгох, шинэчлэх явдал юм.
Сүүлчийн үйл явдал нь тэдний ажилчдын зангилаанууддаа хуваарьтай хонхорцогуудыг хянадаг Kubelet-ийг идэвхжүүлдэг. Таны ReplicaSet pods суулгасан ажилчны зангилааны Kubelet нь Docker гэх мэт контейнерийн ажиллах цагийг шаардлагатай контейнерийн зургийг татаж аваад ажиллуулах зааварчилгаа өгөх ёстой.
Энэ үед таны ReplicaSet програм ажиллаж байна!
Kubernetes API-ийн үүрэг
Өмнөх жишээн дээр харсанчлан Kubernetes-ийн бүрэлдэхүүн хэсгүүд (API сервер болон хадгалах сангаас бусад) хадгалах сан дахь нөөцийн өөрчлөлтийг ажиглаж, хадгалалтын нөөцийн талаарх мэдээллийг өөрчилдөг.
Мэдээжийн хэрэг, эдгээр бүрэлдэхүүн хэсгүүд нь хадгалах сантай шууд харьцдаггүй, зөвхөн Kubernetes API-ээр дамжуулан ажилладаг.
Дараах жишээнүүдийг авч үзье:
- ReplicaSet хянагч нь API төгсгөлийн цэгийг ашигладаг параметртэй
watchReplicaSet нөөцийн өөрчлөлтийг хянах. - ReplicaSet хянагч нь API төгсгөлийн цэгийг ашигладаг (pod үүсгэх) pods үүсгэх.
- Төлөвлөгч нь API төгсгөлийн цэгийг ашигладаг (pod-ыг өөрчлөх) сонгосон ажилчны зангилааны талаарх мэдээллээр подкуудыг шинэчлэх.
Таны харж байгаагаар энэ нь kubectl-ийн ханддаг API юм. Дотоод бүрэлдэхүүн хэсгүүд болон гадаад хэрэглэгчдэд ижил API ашиглах нь Kubernetes-ийн дизайны үндсэн ойлголт юм.
Одоо бид Кубернетес хэрхэн ажилладагийг нэгтгэн дүгнэж болно.
- Хадгалалт нь муж, өөрөөр хэлбэл Кубернетес нөөцийг хадгалдаг.
- API сервер нь Kubernetes API хэлбэрээр хадгалах интерфейсийг хангадаг.
- Kubernetes-ийн бусад бүх бүрэлдэхүүн хэсэг болон хэрэглэгчид API-ээр дамжуулан Kubernetes төлөвийг (нөөцийг) уншиж, ажиглаж, удирддаг.
Эдгээр ойлголтуудыг мэдэх нь kubectl-г илүү сайн ойлгож, түүнээс хамгийн их ашиг хүртэхэд тусална.
Одоо kubectl-ийн бүтээмжийг сайжруулахад туслах тодорхой зөвлөмж, аргачлалуудыг харцгаая.
1. Командыг дуусгаснаар бичих ажлыг хурдасгана
kubectl бүтээмжийг сайжруулах хамгийн хэрэгтэй, гэхдээ ихэнхдээ үл тоомсорлодог аргуудын нэг бол командын гүйцэтгэл юм.
Тушаал дуусгах нь Tab товчлуурыг ашиглан kubectl командын бие даасан хэсгийг автоматаар дуусгах боломжийг танд олгоно. Энэ нь дэд командууд, сонголтууд болон аргументуудад, үүнд нөөцийн нэр гэх мэт нарийн төвөгтэй командуудад ажиллана.
kubectl командын гүйцэтгэл хэрхэн ажилладагийг харна уу:

Командыг дуусгах нь Bash болон Zsh бүрхүүлд зориулагдсан.
нь автоматаар гүйцээхийг тохируулах талаар дэлгэрэнгүй зааврыг агуулсан боловч доор бид товч ишлэлийг өгдөг.
Командын гүйцэтгэл хэрхэн ажилладаг
Command completion нь дуусгах скрипт ашиглан ажилладаг бүрхүүлийн функц юм. Гүйцэтгэх скрипт нь тодорхой командын гүйцэтгэлийн үйлдлийг тодорхойлдог бүрхүүлийн скрипт юм.
Kubectl нь дараах командуудыг ашиглан Bash болон Zsh-д зориулсан дуусгах скриптүүдийг автоматаар үүсгэж, гаргадаг.
$ kubectl completion bashЭсвэл:
$ kubectl completion zshОнолын хувьд эдгээр командын гаралтыг тохирох тушаалын бүрхүүлд оруулахад хангалттай бөгөөд ингэснээр kubectl тушаалуудыг гүйцээж чадна.
Практикт холболтын арга нь Bash (Linux болон MacOS хоорондын ялгааг оруулаад) болон Zsh хооронд ялгаатай байдаг. Бид эдгээр бүх сонголтыг доор авч үзэх болно.
Линукс дээр Bash
Bash дуусгах скрипт нь bash дуусгах багцаас хамаардаг тул та эхлээд үүнийг суулгах хэрэгтэй:
$ sudo apt-get install bash-completionЭсвэл:
$ yum install bash-completionТа дараах тушаалыг ашиглан багцыг амжилттай суулгасан эсэхийг шалгаж болно.
$ type _init_completion Хэрэв энэ нь бүрхүүлийн функцийн кодыг гаргавал bash-г гүйцээхийг зөв суулгасан болно. Хэрэв тушаал "Одоогүй" гэсэн алдааг буцаавал та дараах мөрийг файлдаа нэмэх хэрэгтэй. ~ / .bashrc:
$ source /usr/share/bash-completion/bash_completion Энэ мөрийг файлд нэмэх шаардлагатай юу ~ / .bashrc Энэ нь шаардлагатай эсэхээс үл хамааран bash-ийг суулгахдаа ашигласан багц менежерээс хамаарна. Энэ нь APT-д шаардлагатай боловч YUM-д биш юм.
Bash-ийг суулгасны дараа та kubectl дуусгах скриптийг бүх бүрхүүлийн сессүүдэд идэвхжүүлэхийн тулд бүх зүйлийг тохируулах хэрэгтэй.
Үүнийг хийх нэг арга бол файлд дараах мөрийг нэмэх явдал юм ~ / .bashrc:
source <(kubectl completion bash) Өөр нэг арга бол kubectl addon скриптийг директорт нэмэх явдал юм /etc/bash_completion.d (хэрэв байхгүй бол үүсгэнэ үү):
$ kubectl completion bash >/etc/bash_completion.d/kubectl Каталогт байгаа бүх нэмэлт скриптүүд /etc/bash_completion.d автоматаар bash дуусгахад багтдаг.
Хоёр сонголт хоёулаа адилхан хамааралтай.
Бүрхүүлийг дахин эхлүүлсний дараа kubectl командыг дуусгах нь ажиллах болно.
MacOS дээр Bash
MacOS дээр тохиргоо нь арай илүү төвөгтэй байдаг. Учир нь macOS нь анхдагчаар Bash 3.2-г ашигладаг бөгөөд kubectl автоматаар гүйцээх скрипт нь Bash 4.1 ба түүнээс дээш хувилбарыг шаарддаг бөгөөд Bash 3.2 дээр ажилладаггүй.
MacOS дээр Bash-ийн хуучирсан хувилбарыг ашиглах нь лицензийн асуудлаас үүдэлтэй. Bash хувилбар 4 нь GPLv3-ийн дагуу лицензтэй бөгөөд Apple үүнийг дэмждэггүй.
MacOS дээр kubectl автоматаар гүйцээхийг тохируулахын тулд та Bash-ийн сүүлийн үеийн хувилбарыг суулгах хэрэгтэй. Та мөн шинэчлэгдсэн Bash-г анхдагч бүрхүүл болгон тохируулж болох бөгөөд энэ нь таныг ирээдүйд маш их бэрхшээлээс аврах болно. Энэ нь амархан; дэлгэрэнгүй мэдээллийг нийтлэлд оруулсан болно "".
Үргэлжлүүлэхээсээ өмнө Bash-ийн сүүлийн хувилбарыг ашиглаж байгаа эсэхээ шалгана уу (гаралтыг шалгана уу bash --version).
Bash автоматаар гүйцээх скрипт нь төсөлд зориулагдсан , тиймээс та эхлээд суулгах хэрэгтэй.
Та bash-г ашиглан суулгаж болно :
$ brew install bash-completion@2 энд @2 bash-completion version 2-ын товчлол юм. kubectl-ийг дуусгахад bash-completion v2, bash-completion v2-д доод тал нь Bash хувилбар 4.1 шаардлагатай.
Тушаалын гаралт brew-install файлд юу нэмэх ёстойг зааж өгсөн Анхааруулга хэсгийг агуулдаг ~/.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" Гэсэн хэдий ч би эдгээр мөрүүдийг оруулахгүй байхыг зөвлөж байна ~/.bash_profile, дотор нь ~/.bashrcЭнэ тохиолдолд автоматаар гүйцээх нь зөвхөн үндсэн бүрхүүлд төдийгүй хүүхдийн командын бүрхүүлд боломжтой болно.
Командын бүрхүүлийг дахин эхлүүлсний дараа та дараах тушаалыг ашиглан суулгацын зөв эсэхийг шалгаж болно.
$ type _init_completionХэрэв та гаралт дээр бүрхүүлийн функцийг харвал бүх зүйл зөв тохируулагдсан байна.
Одоо бид kubectl автоматаар гүйцээх функцийг бүх сешнүүдэд идэвхжүүлсэн эсэхийг шалгах хэрэгтэй.
Нэг арга зам бол дараах мөрийг өөрийн мөрөнд нэмэх явдал юм ~/.bashrc:
source <(kubectl completion bash) Хоёрдахь арга бол хавтас руу автоматаар бөглөх скрипт нэмэх явдал юм /usr/local/etc/bash_completion.d:
$ kubectl completion bash
>/usr/local/etc/bash_completion.d/kubectlЭнэ арга нь зөвхөн Homebrew ашиглан bash-г бөглөх суулгасан тохиолдолд л ажиллах болно. Энэ тохиолдолд bash дуусгах нь энэ лавлахаас бүх скриптийг ачаална.
Хэрэв та суулгасан бол , дараа нь та өмнөх алхамыг хийх шаардлагагүй, учир нь автоматаар бөглөх скрипт нь хавтсанд автоматаар тавигдах болно. /usr/local/etc/bash_completion.d суурилуулах явцад. Энэ тохиолдолд kubectl автоматаар дуусгах нь bash-г суулгасны дараа шууд ажиллаж эхэлнэ.
Эцсийн эцэст эдгээр бүх сонголтууд тэнцүү байна.
Зш
Zsh-ийн автомат бөглөх скриптүүд нь хамаарал шаарддаггүй. Таны хийх ёстой зүйл бол бүрхүүлийг эхлүүлэх үед тэдгээрийг идэвхжүүлэх явдал юм.
Та үүнийг өөрийн мөрөнд мөр нэмж хийж болно ~/.zshrc файл:
source <(kubectl completion zsh) Хэрэв та алдаа хүлээн авбал not found: compdef Бүрхүүлээ дахин эхлүүлсний дараа та суулгасан функцийг идэвхжүүлэх хэрэгтэй compdef. Та үүнийг файлынхаа эхэнд нэмж идэвхжүүлж болно. ~/.zshrc дараах байдлаар:
autoload -Uz compinit
compinit2. Нөөцийн үзүүлэлтүүдийг хурдан харах
YAML нөөцийн тодорхойлолтыг үүсгэхдээ эдгээр нөөцийн талбарууд болон тэдгээрийн утгыг мэдэх хэрэгтэй. Энэ мэдээллийг олох нэг газар бол бүх нөөцийн бүрэн үзүүлэлтүүдийг агуулсан API лавлагаа юм.
Гэсэн хэдий ч ямар нэг зүйл хайх бүрт вэб хөтөч рүү шилжих нь тохиромжгүй байдаг. Тиймээс kubectl тушаалыг өгдөг kubectl explain, энэ нь таны терминал дээрх бүх нөөцийн үзүүлэлтүүдийг харуулдаг.
Командын формат дараах байдалтай байна.
$ kubectl explain resource[.field]...Энэ тушаал нь хүссэн нөөц эсвэл талбарын тодорхойлолтыг гаргана. Мэдээллийн гаралт нь API гарын авлагад байгаатай ижил байна.
анхдагчаар kubectl explain талбайн үүрлэлтийн зөвхөн эхний түвшинг харуулж байна.
Энэ нь ямар харагдаж байгааг хараарай .
Та сонголтыг нэмснээр модыг бүхэлд нь харуулах боломжтой --recursive:
$ kubectl explain deployment.spec --recursiveХэрэв та яг ямар нөөц хэрэгтэйг мэдэхгүй байгаа бол дараах тушаалаар бүгдийг нь харуулах боломжтой.
$ kubectl api-resources Энэ тушаал нь нөөцийн нэрийг олон тоогоор харуулдаг, жишээлбэл, deployments оронд нь deployment. Энэ нь мөн гэх мэт богино нэрийг харуулдаг deploy, байгаа нөөцийн хувьд. Эдгээр ялгааны талаар санаа зовох хэрэггүй. Эдгээр бүх нэрлэх сонголтууд нь kubectl-тэй дүйцэхүйц байна. Өөрөөр хэлбэл та тэдгээрийн аль нэгийг нь ашиглаж болно kubectl explain.
Дараах бүх тушаалууд тэнцүү байна:
$ kubectl explain deployments.spec
# или
$ kubectl explain deployment.spec
# или
$ kubectl explain deploy.spec3. Тусгай баганын гаралтын форматыг ашиглана уу
Анхдагч тушаалын гаралтын формат нь 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Энэ формат нь тохиромжтой боловч хязгаарлагдмал хэмжээний мэдээллийг агуулдаг. Бүрэн нөөцийн тодорхойлолтын форматтай харьцуулахад энэ нь хэдхэн талбарыг харуулдаг.
Энэ тохиолдолд та өөрчлөн баганын гаралтын форматыг ашиглаж болно. Энэ нь ямар өгөгдөл гаргахыг тодорхойлох боломжийг танд олгоно. Та ямар ч нөөцийн талбарыг тусдаа багана болгон гаргаж болно.
Захиалгат форматын хэрэглээг дараах сонголтуудаар тодорхойлно.
-o custom-columns=<header>:<jsonpath>[,<header>:<jsonpath>]... Та гаралтын багана бүрийг хос болгон тодорхойлж болно <header>:<jsonpath>хаана <header> - баганын нэр, ба <jsonpath> - нөөцийн талбарыг тодорхойлсон илэрхийлэл.
Энгийн жишээг харцгаая:
$ kubectl get pods -o custom-columns='NAME:metadata.name'
NAME
engine-544b6b6467-22qr6
engine-544b6b6467-lw5t8
engine-544b6b6467-tvgmg
web-ui-6db964458-8pdw4Гаралт нь хонгилын нэр бүхий нэг багана агуулна.
Сонголт дахь илэрхийлэл нь талбараас pod нэрийг сонгоно metadata.nameУчир нь pod нэр нь хүүхдийн талбарын нэрээр тодорхойлогддог metadata pod-ийн нөөцийн тайлбарт. Дэлгэрэнгүй мэдээллийг эндээс авах боломжтой эсвэл тушаал бичнэ үү kubectl explain pod.metadata.name.
Одоо та гаралтад нэмэлт багана нэмэхийг хүсч байна гэж бодъё, жишээлбэл, под бүр дээр ажиллаж байгаа зангилааг харуулах. Үүнийг хийхийн тулд та захиалгат баганын сонголтод тохирох баганын тодорхойлолтыг нэмж болно:
$ 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 Илэрхийлэл нь зангилааны нэрийг сонгоно spec.nodeName — зангилаанд pod нь оноогдсон үед түүний нэрийг талбарт бичнэ spec.nodeName pod нөөцийн тодорхойлолт. Илүү дэлгэрэнгүй мэдээллийг гаралтаас авах боломжтой kubectl explain pod.spec.nodeName.
Kubernetes нөөцийн талбарууд нь том жижиг жижиг жижиг үсгийг мэдэрдэг гэдгийг анхаарна уу.
Та ямар ч нөөцийн талбарыг багана хэлбэрээр харж болно. Зүгээр л нөөцийн тодорхойлолтыг хянаж үзээд дуртай талбараараа туршиж үзээрэй.
Гэхдээ эхлээд талбайн сонголтын илэрхийллүүдийг нарийвчлан авч үзье.
JSONPath илэрхийлэл
Нөөцийн талбаруудыг сонгох илэрхийлэл нь дээр үндэслэсэн болно .
JSONPath нь JSON баримтаас мэдээлэл авах хэл юм. Нэг талбарыг сэргээх нь JSONPath-ийн хамгийн энгийн хэрэглээ юм. Үүнд маш их зүйл бий , үүнд сонгогч, шүүлтүүр гэх мэт.
Kubectl тайлбарлах нь хязгаарлагдмал тооны JSONPath боломжийг дэмждэг. Эдгээр чадвар, хэрэглээний жишээг доор тайлбарлав.
# Выбрать все элементы списка
$ 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'[] оператор онцгой чухал. Kubernetes нөөцийн олон талбарууд нь жагсаалт бөгөөд энэ оператор эдгээр жагсаалтаас элементүүдийг сонгох боломжийг танд олгоно. Жагсаалтын бүх элементүүдийг сонгохдоо [*] гэх мэт орлуулагч тэмдэгтээр ихэвчлэн ашиглагддаг.
Програмын жишээ
Гаралтад дурын талбар эсвэл нөөцийн талбаруудын хослолыг харуулах боломжтой тул захиалгат баганын гаралтын форматыг ашиглах боломж хязгааргүй юм. Энд хэдэн жишээ програм байна, гэхдээ тэдгээрийг өөрөө судалж, хэрэгцээтэй програмуудыг хайж олох боломжтой.
- Контейнерийн зургийг харуулж байна.
$ 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Энэ тушаал нь под тус бүрийн контейнер зургийн нэрийг харуулна.
Под нь олон контейнер агуулж болно гэдгийг санаарай, энэ тохиолдолд зургийн нэрийг таслалаар тусгаарласан нэг мөрөнд харуулах болно.
- Зангилааны боломжтой бүсүүдийг харуулж байна:
$ 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Хэрэв таны кластер нь нийтийн үүлэнд байрладаг бол энэ тушаал хэрэгтэй. Энэ нь зангилаа бүрийн боломжтой бүсийг харуулдаг.
Availability Zone нь хуулбарлах хэсгийг газарзүйн бүсээр хязгаарладаг үүлний ойлголт юм.
Зангилаа бүрийн хүртээмжтэй бүсийг тусгай шошго ашиглан олж авдаг - Хэрэв кластер нь нийтийн үүлэн дээр ажиллаж байгаа бол энэ шошгыг автоматаар үүсгэж, зангилаа бүрийн боломжтой бүсийн нэрээр дүүргэнэ.
Шошго нь Kubernetes нөөцийн тодорхойлолтын нэг хэсэг биш тул та тэдгээрийн талаарх мэдээллийг эндээс олохгүй Гэсэн хэдий ч тэдгээрийг YAML эсвэл JSON форматаар зангилааны мэдээллийг хүсэх замаар (бусад шошготой адил) харж болно:
$ kubectl get nodes -o yaml # или $ kubectl get nodes -o jsonЭнэ нь нөөцийн тодорхойлолтыг судлахаас гадна нөөцийн талаар илүү ихийг мэдэх гайхалтай арга юм.
4. Кластер болон нэрийн зай хооронд хялбар сэлгэх
kubectl нь Kubernetes API-д хүсэлт гаргахдаа эхлээд kubeconfig файлыг уншиж холболтод шаардлагатай бүх параметрүүдийг авдаг.
Анхдагч байдлаар, kubeconfig файл нь байна ~/.kube/config. Энэ файлыг ихэвчлэн тусгай тушаалаар үүсгэж эсвэл шинэчилдэг.
Та олон кластертай ажиллах үед таны kubeconfig файл бүгдэд нь холболтын параметрүүдийг агуулна. Та аль кластертай ажиллаж байгаагаа kubectl тушаалд хэлэх арга хэрэгтэй.
Кластер дотор та физик кластер доторх виртуал кластерын төрөл болох олон нэрийн орон зай үүсгэж болно. Kubectl нь kubeconfig файл дээр үндэслэн ямар нэрийн орон зайг ашиглахыг тодорхойлдог. Тиймээс, танд kubectl-д аль нэрний зайг ашиглахаа хэлэх арга хэрэгтэй.
Энэ бүлэгт бид хэрхэн ажилладаг, үр дүнтэй ажилд хэрхэн хүрэх талаар тайлбарлах болно.
Та KUBECONFIG орчны хувьсагчид жагсаасан олон kubeconfig файлтай байж болохыг анхаарна уу. Энэ тохиолдолд эдгээр бүх файлыг ажиллах үед нэг хуваалцсан тохиргоонд нэгтгэх болно. Та мөн kubectl-г параметртэй ажиллуулснаар өгөгдмөл kubeconfig файлыг өөрчилж болно --kubeconfig. Хараач. .
kubeconfig файлууд
Kubeconfig файлд яг юу агуулагдаж байгааг харцгаая:

Таны харж байгаагаар kubeconfig файл нь контекстүүдийн багцыг агуулдаг. Контекст нь гурван элементээс бүрдэнэ:
- Кластер — Кластер серверийн API URL.
- Хэрэглэгч — кластерт зориулсан хэрэглэгчийн баталгаажуулалт.
- Нэрийн орон зай - Кластерт нэгдэх үед ашигладаг нэрийн орон зай.
Практикт kubeconfig файлдаа нэг кластерт нэг контекст ашиглах нь түгээмэл байдаг. Гэсэн хэдий ч, та кластер бүрт хэрэглэгч эсвэл нэрийн орон зайгаар ялгаатай олон контексттэй байж болно. Гэсэн хэдий ч олон контекст бүхий ийм тохиргоо нь ховор байдаг тул кластерууд болон контекстуудын хооронд ихэвчлэн нэг нэгээр нь зураглал хийдэг.
Ямар ч үед контекстүүдийн нэг нь одоогийн байна:

kubectl тохиргооны файлыг уншихдаа тухайн үеийн контекстээс мэдээлэл авдаг. Дээрх жишээнд kubectl нь Hare кластерт холбогдох болно.
Үүний дагуу өөр кластер руу шилжихийн тулд та kubeconfig файл дахь одоогийн контекстийг өөрчлөх хэрэгтэй.

Одоо kubectl нь Fox кластерт холбогдох болно.
Нэг кластер дахь өөр нэрийн орон зай руу шилжихийн тулд та одоогийн контекст нэрийн орон зайны элементийн утгыг өөрчлөх шаардлагатай.

Дээрх жишээнд kubectl нь Fox кластерын Бүтээгдэхүүний нэрийн орон зайг ашиглах болно (Тестийн нэрийн талбарыг өмнө нь тохируулсан).
kubectl нь бас сонголтуудыг өгдөг гэдгийг анхаарна уу --cluster, --user, --namespace и --context, энэ нь kubeconfig файлд юу тохируулагдсанаас үл хамааран бие даасан элементүүд болон одоогийн контекстийг дарж бичих боломжийг олгодог. Харна уу kubectl options.
Онолын хувьд та kubeconfig файл дахь параметрүүдийг гараар өөрчлөх боломжтой. Гэсэн хэдий ч энэ нь тохиромжгүй юм. Эдгээр үйлдлүүдийг хялбарчлахын тулд параметрүүдийг автоматаар өөрчлөх боломжийг олгодог янз бүрийн хэрэгслүүд байдаг.
kubectx ашиглах
Кластер болон нэрийн орон зай хооронд шилжих маш алдартай хэрэгсэл.
Хэрэгсэл нь тушаалуудыг өгдөг kubectx и kubens одоогийн контекст болон нэрийн орон зайг тус тус өөрчлөх.
Өмнө дурьдсанчлан, одоогийн контекстийг өөрчлөх нь кластер бүрт зөвхөн нэг контекст байвал кластерыг өөрчилнө гэсэн үг юм.
Эдгээр тушаалуудыг гүйцэтгэх жишээ энд байна:

Үндсэндээ эдгээр тушаалууд нь дээр дурдсанчлан kubeconfig файлыг засдаг.
Суулгахын тулд kubectx, дээрх зааврыг дагана уу
Хоёр тушаал хоёулаа контекст болон нэрийн зайн нэрийг автоматаар бөглөхийг дэмжиж, тэдгээрийг бүрэн бичих шаардлагагүй болно. Автомат бөглөх тохиргоог хийх заавар .
Өөр нэг ашигтай шинж чанар kubectx Энэ нь Энэ нь хэрэгсэлтэй хамт ажилладаг , үүнийг тусад нь суулгах ёстой. fzf-г автоматаар суулгаснаар интерактив горимыг ашиглах боломжтой болгодог kubectxИнтерактив горимд та fzf-ийн өгсөн интерактив үнэгүй хайлтын интерфейсээр дамжуулан контекст болон нэрийн орон зайг сонгох боломжтой.
Бүрхүүлийн нэр ашиглах
kubectl мөн үүнд зориулсан командуудыг өгдөг тул одоогийн контекст болон нэрийн орон зайг өөрчлөхийн тулд танд тусдаа хэрэгсэл хэрэггүй. Жишээлбэл, тушаал kubectl config Kubeconfig файлуудыг засварлах дэд командуудыг өгдөг.
Эдгээрийн зарим нь:
kubectl config get-contexts: бүх контекстийг гаргах;kubectl config current-context: одоогийн нөхцөл байдлыг олж авах;kubectl config use-context: одоогийн нөхцөл байдлыг өөрчлөх;kubectl config set-context: контекст элементийг өөрчлөх.
Гэсэн хэдий ч эдгээр тушаалуудыг шууд ашиглах нь тийм ч тохиромжтой биш бөгөөд учир нь тэдгээр нь урт байдаг. Та тэдгээрийг гүйцэтгэхэд хялбар бүрхүүлийн нэр үүсгэж болно.
Би kubectx-тэй төстэй функцээр хангадаг эдгээр командууд дээр тулгуурлан олон тооны нэр үүсгэсэн. Та тэдгээрийг хэрхэн ажиллаж байгааг эндээс харж болно:

Гадна нэр нь fzf-г интерактив, чөлөөтэй хайх интерфэйсийг (kubectx-ийн интерактив горимтой төстэй) хангахын тулд ашигладаг болохыг анхаарна уу. Энэ нь танд хэрэгтэй гэсэн үг юм Эдгээр нэрсийг ашиглах.
Энд нэрсийн тодорхойлолтууд байна:
# Получить текущий контекст
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/^..//")"' Эдгээр нэрсийг тохируулахын тулд дээрх тодорхойлолтуудыг файлдаа нэмэх шаардлагатай. ~/.bashrc буюу ~/.zshrc мөн бүрхүүлээ дахин ачаална уу.
Plugins ашиглах
Kubectl нь үндсэн командуудын нэгэн адил хэрэгждэг залгаасуудыг ачаалах боломжийг олгодог. Жишээлбэл, та kubectl-foo залгаасыг суулгаж, тушаалыг ажиллуулж ажиллуулж болно kubectl foo.
Ийм байдлаар контекст болон нэрийн орон зайг өөрчлөх нь тохиромжтой байх болно, жишээлбэл, ажиллуулах kubectl ctx нөхцөлийг өөрчлөх ба kubectl ns нэрийн орон зайг өөрчлөх.
Би үүнийг хийдэг хоёр залгаас бичсэн:
Plugins нь өмнөх хэсгийн нэр дээр тулгуурлан ажилладаг.
Тэд хэрхэн ажилладагийг энд харуулав.

Plugins нь fzf-г ашиглан интерактив, чөлөөтэй хайлт хийх интерфэйсийг (kubectx-ийн интерактив горимтой төстэй) хангадаг болохыг анхаарна уу. Энэ нь танд хэрэгтэй гэсэн үг юмЭдгээр нэрсийг ашиглах.
Плагинуудыг суулгахын тулд та нэртэй бүрхүүлийн скриптүүдийг татаж авах хэрэгтэй и PATH хувьсагчийнхаа дурын лавлах руу шилжүүлж, гүйцэтгэх боломжтой болгох, жишээ нь chmod +x. Үүний дараа та шууд ашиглах боломжтой болно. kubectl ctx и kubectl ns.
5. Оролтыг автомат нэрээр богиносгох
Бүрхүүлийн нэр нь бичихийг хурдасгах гайхалтай арга юм. Төсөл Үндсэн kubectl командын 800 орчим товчлол агуулсан.
Та 800 нэрийн нэрийг хэрхэн санах талаар гайхаж байж магадгүй юм. Гэхдээ та тэдгээрийг бүгдийг нь санах шаардлагагүй, учир нь тэд доор үзүүлсэн шиг энгийн томъёог дагаж мөрддөг.

Жишээ нь:
- kgpooyaml - kubectl pods oyaml авах
- ksysgsvcw — kubectl -n kube-систем нь svc w авах
- ksysrmcm -kubectl -n kube-систем rm см
- kgdepallls - kubectl deployment all sl
Таны харж байгаагаар бусад нэр нь kubectl командын тодорхой элементийг төлөөлдөг бүрэлдэхүүн хэсгүүдээс бүрддэг. Гадна нэр бүр нь үндсэн тушаал, үйлдэл, нөөцийн нэг бүрэлдэхүүн хэсэг, параметрийн олон бүрэлдэхүүн хэсэгтэй байж болно. Та дээрх схемийн дагуу эдгээр бүрэлдэхүүн хэсгүүдийг зүүнээс баруун тийш "бөглөх" хэрэгтэй.
Одоогийн нарийвчилсан диаграмм дээр байрладаг Тэнд та бас олж болно.
Жишээ нь, kgpooyamlall гэдэг нь командтай тэнцэнэ kubectl get pods -o yaml --all-namespaces.
Сонголтуудын харьцангуй дараалал нь чухал биш юм: тушаал kgpooyamlall тушаалтай тэнцэнэ kgpoalloyaml.
Та бүх бүрэлдэхүүн хэсгүүдийг өөр нэр болгон ашиглаж болохгүй. Жишээ нь k, kg, klo, ksys, kgpo бас ашиглаж болно. Түүнчлэн, командын мөрөнд бусад нэр болон ердийн тушаалууд эсвэл сонголтуудыг нэгтгэж болно:
Жишээ нь:
- Оронд нь
kubectl proxyта бичиж болноk proxy. - Оронд нь
kubectl get rolesта бичиж болноkg roles(Одоогоор үүрэг ролийн нөөцийн нэр байхгүй). - Тодорхой pod-д өгөгдөл авахын тулд та тушаалыг ашиглаж болно
kgpo my-pod — kubectl get pod my-pod.
Зарим нэрс нь командын мөрөнд аргумент шаарддаг гэдгийг анхаарна уу. Жишээлбэл, бусад нэр kgpol гэсэн үг kubectl get pods -l. Сонголт -l аргумент шаарддаг - шошгоны тодорхойлолт. Хэрэв та өөр нэр ашиглавал дараах байдлаар харагдах болно. kgpol app=ui.
Зарим нэрс нь аргумент шаарддаг тул a, f, l нэрсийг хамгийн сүүлд ашиглах ёстой.
Ерөнхийдөө энэ схемийг эзэмшсэний дараа та гүйцэтгэхийг хүссэн командуудаасаа хуурамч нэр гаргаж авах боломжтой болж, бичих цагийг ихээхэн хэмнэнэ.
Суурилуулалт
kubectl-алиасуудыг суулгахын тулд та файлыг татаж авах хэрэгтэй GitHub-аас файлд оруулаарай ~/.bashrc буюу ~/.zshrc:
source ~/.kubectl_aliasesАвтоматаар дуусгах
Өмнө дурьдсанчлан, та командын мөрөнд өөр нэрэнд нэмэлт үгс нэмж оруулдаг. Жишээ нь:
$ kgpooyaml test-pod-d4b77b989Хэрэв та kubectl командыг дуусгахыг ашигладаг бол та үүнийг нөөцийн нэр гэх мэт зүйлд ашигласан байх. Гэхдээ бусад нэр ашиглах үед үүнийг хийх боломжтой юу?
Энэ бол маш чухал асуулт, учир нь автоматаар бөглөх нь ажиллахгүй бол та бусад нэрийн зарим давуу талыг алдах болно.
Хариулт нь таны ямар бүрхүүл ашиглаж байгаагаас хамаарна.
- Zsh-ийн хувьд хуурамч нэрийг автоматаар гүйцээх нь хайрцагнаас гадуур ажилладаг.
- Харамсалтай нь, Bash-д автоматаар дуусгахын тулд зарим ажил шаардлагатай.
Bash дахь бусад нэрийг автоматаар бөглөхийг идэвхжүүлж байна
Bash-тай холбоотой асуудал бол энэ нь бусад нэрийг (жишээ нь Zsh гэх мэт) заадаг командыг биш харин (Та Tab товчлуурыг дарах болгонд) гүйцээхийг оролддогт оршино. Танд бүх 800 нэрийн гүйцээх скрипт байхгүй тул автоматаар гүйцээх нь ажиллахгүй.
Төсөл Энэ асуудлын ерөнхий шийдлийг өгдөг. Энэ нь бусад нэр дуусгах механизмд холбогдож, дотоод нэрийг команд болгон өргөжүүлж, өргөтгөсөн командын дуусгах сонголтыг буцаана. Энэ нь alias-ыг бөглөх нь бүрэн командтай яг адилхан ажиллана гэсэн үг юм.
Дараа нь би эхлээд бүрэн-алиа-г хэрхэн суулгах, дараа нь бүх kubectl-д гүйцээхийг идэвхжүүлэхийн тулд хэрхэн тохируулах талаар тайлбарлах болно.
Бүрэн нэр суулгаж байна
Юуны өмнө, бүрэн-алиас хамаарна Тиймээс, та бүрэн нэр суулгахаасаа өмнө bash-г бүрэн гүйцэд суулгасан эсэхийг шалгах хэрэгтэй. Суулгах зааврыг өмнө нь Linux болон macOS-д өгсөн.
MacOS хэрэглэгчдэд зориулсан чухал тэмдэглэл: kubectl автоматаар гүйцээх скриптийн нэгэн адил бүрэн нэр нь MacOS дээрх үндсэн хувилбар болох Bash 3.2-тэй ажиллахгүй. Ялангуяа, бүрэн нэр нь bash дуусгах v2 (brew install bash-completion@2), хамгийн багадаа Bash 4.1 шаарддаг. Энэ нь macOS дээр бүрэн нэр ашиглахын тулд Bash-ийн шинэ хувилбарыг суулгах шаардлагатай гэсэн үг юм.
Та скриптийг татаж авах хэрэгтэй нь мөн файлдаа оруулна уу ~/.bashrc:
source ~/bash_completion.shБүрхүүлийг дахин ачаалсны дараа бүрэн нэр бүрэн суурилагдсан болно.
kubectl нэрийн автомат гүйцээлтийг идэвхжүүлж байна
Техникийн хувьд, бүрэн нэр нь бүрхүүлийн функцийг хангадаг _complete_aliasЭнэ функц нь alias-ыг шалгаж, алиас командын дуусгах зөвлөмжийг буцаана.
Тодорхой нэр бүхий функцийг холбохын тулд та Bash-ийн суурилуулсан механизмыг ашиглах хэрэгтэй. суулгах _complete_alias нэрийн нэмэлтийн функцээр.
Жишээ болгон kubectl командыг илэрхийлдэг k alias-ийг авч үзье. Суулгахын тулд _complete_alias Энэ нэрийн нэмэлт функцийн хувьд та дараах тушаалыг ажиллуулах хэрэгтэй.
$ complete -F _complete_alias k Үүний үр дүнд k-г автоматаар бөглөх болгонд уг функц дуудагдана _complete_alias, энэ нь бусад нэрийг шалгаж, командын гүйцэтгэлийн зөвлөмжийг буцаана kubectl.
Хоёрдахь жишээ болгон өөр нэр авъя kg, гэсэн үг kubectl get:
$ complete -F _complete_alias kg Өмнөх жишээн дээрх шиг, та кг-ыг автоматаар бөглөхөд таны авах боломжтой ижил төстэй дуусгах зөвлөмжийг авах болно. kubectl get.
Та өөрийн систем дээрх аливаа өөр нэрийн хувьд бүрэн-алиа ашиглаж болно гэдгийг анхаарна уу.
Тиймээс, бүх kubectl нэрийн автомат гүйцээлтийг идэвхжүүлэхийн тулд дээрх тушаалыг тус бүр дээр ажиллуулах хэрэгтэй. Та kubectl-алиасуудыг тохируулсан гэж үзвэл дараах хэсэг үүнийг л хийнэ ~/.kubectl-aliases:
for _a in $(sed '/^alias /!d;s/^alias //;s/=.*$//' ~/.kubectl_aliases);
do
complete -F _complete_alias "$_a"
done Энэ кодын хэсэг нь таны дотор байх ёстой ~/.bashrc, тушаалын бүрхүүлийг дахин эхлүүлснээр автоматаар гүйцээх нь бүх 800 kubectl нэрийн хувьд боломжтой болно.
6. Plugin-ийн тусламжтайгаар kubectl-г өргөтгөх
-С эхлэн , kubectl дэмждэг , энэ нь функцийг нэмэлт командуудаар өргөжүүлэх боломжийг танд олгоно.
Хэрэв танил бол , дараа нь kubectl залгаасууд ижил зарчмаар бүтээгдсэн.
Энэ бүлэгт бид залгаасуудыг хэрхэн суулгах, тэдгээрийг хаанаас олох, өөрийн залгаасуудыг хэрхэн үүсгэх талаар авч үзэх болно.
Plugins суулгаж байна
Kubectl залгаасууд нь ийм нэртэй энгийн гүйцэтгэх файл хэлбэрээр тархсан kubectl-x. Угтвар kubectl- шаардлагатай бөгөөд дараа нь залгаасыг дуудах боломжийг олгодог kubectl дэд командыг оруулна.
Жишээлбэл, hello залгаасыг нэртэй файл хэлбэрээр түгээх болно kubectl-hello.
Залгаасыг суулгахын тулд та файлыг хуулах хэрэгтэй kubectl-x PATH хувьсагчийн дурын лавлах руу шилжүүлж, гүйцэтгэх боломжтой болгох, жишээ нь chmod +x. Үүний дараа та залгаасыг ашиглан залгаж болно kubectl x.
Та өөрийн систем дээр суулгасан бүх залгаасуудыг жагсаахын тулд дараах тушаалыг ашиглаж болно.
$ kubectl plugin listЭнэ тушаал нь танд ижил нэртэй хэд хэдэн залгаас байгаа эсвэл гүйцэтгэх боломжгүй залгаас файл байгаа бол анхааруулгыг харуулдаг.
Krew ашиглан залгаасуудыг хайж олох, суулгах
Kubectl залгаасууд нь програм хангамжийн багцтай адил хуваалцах, дахин ашиглахад хялбар байдаг. Гэхдээ бусад хүмүүсийн хуваалцсан залгаасуудыг хаанаас олох вэ?
kubectl залгаасуудыг хуваалцах, олох, суулгах, удирдах нэгдсэн шийдлээр хангах зорилготой. Төсөл нь өөрийгөө "Kubectl залгаасуудын багц менежер" гэж нэрлэдэг (Krew-тэй төстэй ).
Krew бол таны сонгож суулгаж болох kubectl залгаасуудын жагсаалт юм. Krew бол kubectl залгаас юм.
Энэ нь Krew-г суулгах нь үндсэндээ бусад kubectl залгаасуудыг суулгахтай адил ажилладаг гэсэн үг юм. Та нарийвчилсан зааврыг эндээс авах боломжтой .
Krew-ийн хамгийн чухал багууд:
# Поиск в списке плагинов
$ kubectl krew search [<query>]
# Посмотреть информацию о плагине
$ kubectl krew info <plugin>
# Установить плагин
$ kubectl krew install <plugin>
# Обновить все плагины до последней версии
$ kubectl krew upgrade
# Посмотреть все плагины, установленные через Krew
$ kubectl krew list
# Деинсталлировать плагин
$ kubectl krew remove <plugin>Krew ашиглан залгаасуудыг суулгах нь дээр дурдсан стандарт аргыг ашиглан залгаасуудыг суулгахад саад болохгүй гэдгийг анхаарна уу.
тушаал гэдгийг анхаарна уу kubectl krew list команд нь зөвхөн Krew ашиглан суулгасан залгаасуудыг харуулдаг kubectl plugin list Krew ашиглан суулгасан болон бусад аргаар суулгасан бүх залгаасуудыг жагсаав.
Бусад газраас залгаас хайх
Крю бол одоо хэрэгжиж байгаа залуу төсөл юм Нийтдээ 30 орчим залгаас байдаг. Хэрэв та хэрэгтэй зүйлээ олж чадахгүй бол GitHub гэх мэт өөр газраас нэмэлт өргөтгөлүүдийг олох боломжтой.
Би GitHub хэсгийг шалгахыг зөвлөж байна. Тэнд та шалгаж үзэх боломжтой олон арван залгаасуудыг олох болно.
Өөрийнхөө залгаасуудыг бичих
чи өөрөө чадна - хэцүү биш. Та хэрэгтэй зүйлээ гүйцэтгэх боломжтой файл үүсгэх хэрэгтэй, үүнийг нэрлээрэй kubectl-x дээр дурдсанчлан суулгана уу.
Файл нь bash скрипт, python скрипт эсвэл эмхэтгэсэн go програм байж болно-энэ нь хамаагүй. Цорын ганц шаардлага бол үйлдлийн системээр шууд гүйцэтгэх боломжтой.
Яг одоо жишээ залгаасыг үүсгэцгээе. Өмнөх хэсэгт та kubectl командыг ашиглан под тус бүрийн савыг жагсаасан. Та энэ тушаалыг хялбархан залгаж болох, жишээ нь залгах боломжтой kubectl img.
Файл үүсгэх kubectl-img дараах агуулга:
#!/bin/bash
kubectl get pods -o custom-columns='NAME:metadata.name,IMAGES:spec.containers[*].image' Одоо файлыг ашиглан ажиллах боломжтой болго chmod +x kubectl-img PATH доторх дурын лавлах руу зөөнө үү. Үүний дараа та залгаасыг шууд ашиглаж болно. kubectl img.
Дээр дурдсанчлан kubectl залгаасуудыг ямар ч програмчлалын эсвэл скрипт хэл дээр бичиж болно. Хэрэв та бүрхүүлийн скрипт ашиглаж байгаа бол давуу тал нь залгаас дотроос kubectl-г хялбархан дуудах чадвар юм. Гэсэн хэдий ч та илүү төвөгтэй залгаасуудыг ашиглан бодит програмчлалын хэл дээр бичиж болно Хэрэв та Go ашигладаг бол бас ашиглаж болно , энэ нь kubectl залгаасуудыг бичихэд зориулагдсан.
Өөрийн залгаасуудыг хэрхэн хуваалцах вэ
Хэрэв та өөрийн залгаасуудыг бусдад хэрэгтэй гэж бодож байвал GitHub дээр чөлөөтэй хуваалцаарай. Тэдгээрийг сэдэвт нэмэхээ мартуузай. .
Та мөн залгаасаа нэмэх хүсэлт гаргаж болно Үүнийг хэрхэн хийх зааврыг дотор нь оруулсан болно .
Тушаал дуусгах
Одоогоор залгаасууд автоматаар гүйцээхийг дэмждэггүй. Энэ нь та залгаасын бүтэн нэр болон аргументын бүрэн нэрийг оруулах ёстой гэсэн үг юм.
GitHub репозиторт энэ функцэд зориулсан kubectl агуулах байдаг . Тиймээс энэ функцийг ирээдүйд хэзээ нэгэн цагт хэрэгжүүлэх боломжтой юм.
Амжилт хүсье!!!
Энэ сэдвээр өөр юу унших вэ:
- .
- .
- .
Эх сурвалж: www.habr.com







