kubectl қалай тиімдірек пайдалануға болады: егжей-тегжейлі нұсқаулық

kubectl қалай тиімдірек пайдалануға болады: егжей-тегжейлі нұсқаулық
Егер сіз Kubernetes-пен жұмыс жасасаңыз, kubectl сіз жиі қолданатын утилиталардың бірі болуы мүмкін. Ал белгілі бір құралмен жұмыс істеуге көп уақыт жұмсаған сайын, оны жақсы оқып, тиімді пайдалануды үйрену пайдалы.

команда Mail.ru сайтынан Kubernetes aaS Дэниел Вайбельдің мақаласын аударған, онда сіз kubectl-мен тиімді жұмыс істеуге арналған кеңестер мен амалдарды таба аласыз. Бұл сонымен қатар Кубернетес туралы тереңірек түсінуге көмектеседі.

Автордың айтуынша, мақаланың мақсаты - Kubernetes-пен күнделікті жұмысыңызды тиімдірек ғана емес, сонымен бірге одан да қызықты ету!

Кіріспе: kubectl дегеніміз не

kubectl пайдалануды тиімдірек үйренбес бұрын, оның не екенін және оның қалай жұмыс істейтіні туралы негізгі түсінікке ие болу керек.

Пайдаланушы тұрғысынан kubectl - Kubernetes операцияларын орындауға мүмкіндік беретін басқару тақтасы.

Техникалық тұрғыдан алғанда, kubectl - Kubernetes API клиенті.

Kubernetes API — HTTP REST API. Бұл API шынайы Kubernetes пайдаланушы интерфейсі болып табылады, ол арқылы ол толығымен басқарылады. Бұл әрбір Kubernetes операциясы API соңғы нүктесі ретінде көрсетіледі және сол соңғы нүктеге HTTP сұрауымен жасалуы мүмкін дегенді білдіреді.

Сондықтан kubectl негізгі жұмысы Kubernetes API-ге HTTP сұрауларын жасау болып табылады:

kubectl қалай тиімдірек пайдалануға болады: егжей-тегжейлі нұсқаулық
Kubernetes - толығымен ресурсқа бағытталған жүйе. Бұл оның ресурстардың ішкі күйін қолдайтынын және барлық Kubernetes операциялары CRUD операциялары екенін білдіреді.

Осы ресурстарды басқару арқылы сіз Kubernetes-ті толық басқарасыз және Кубернетес ресурстардың ағымдағы күйіне негізделген не істеу керектігін анықтайды. Осы себепті Kubernetes API анықтамасы байланысты әрекеттері бар ресурс түрлерінің тізімі ретінде ұйымдастырылған.

Мысал қарастырайық.

Сіз ReplicaSet ресурсын жасағыңыз келеді делік. Ол үшін файлдағы ReplicaSet атауын сипаттайсыз replicaset.yaml, содан кейін пәрменді іске қосыңыз:

$ kubectl create -f replicaset.yaml

Бұл ReplicaSet ресурсын жасайды. Бірақ сахна артында не болып жатыр?

Kubernetes-те ReplicaSet жасау әрекеті бар. Кез келген басқа операция сияқты, ол API соңғы нүктесі ретінде көрсетіледі. Бұл әрекетке арналған арнайы API соңғы нүктесі келесідей көрінеді:

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

Барлық Kubernetes операцияларына арналған API соңғы нүктелерін мына жерден табуға болады API анықтамасы (соның ішінде жоғарыдағы соңғы нүкте). Соңғы нүктеге нақты сұрау жасау үшін алдымен API серверінің URL мекенжайын API сілтемесінде тізімделген соңғы нүкте жолдарына қосу керек.

Осылайша, жоғарыдағы пәрменді орындаған кезде kubectl жоғарыдағы API соңғы нүктесіне HTTP POST сұрауын жібереді. Файлда берген ReplicaSet анықтамасы replicaset.yaml, сұрау мәтінінде жіберіледі.

Kubernetes кластерімен әрекеттесетін барлық командалар үшін kubectl осылай жұмыс істейді. Осы жағдайлардың барлығында kubectl жай ғана сәйкес Kubernetes API соңғы нүктелеріне HTTP сұрауларын жасайды.

сияқты утилитаны пайдаланып Kubernetes-ті толығымен басқара алатыныңызды ескеріңіз curlHTTP сұрауларын Kubernetes API-ге қолмен жіберу арқылы. Kubectl жай ғана Kubernetes API пайдалануды жеңілдетеді.

Бұл kubectl деген не және оның қалай жұмыс істейтінінің негіздері. Бірақ Kubernetes API туралы әрбір kubectl пайдаланушысы білуі керек тағы бір нәрсе бар. Кубернетестің ішкі әлеміне жылдам көз жүгіртейік.

Кубернетестің ішкі әлемі

Kubernetes кластер түйіндерінде бөлек процестер ретінде орындалатын тәуелсіз құрамдас бөліктерден тұрады. Кейбір құрамдас бөліктер негізгі түйіндерде, басқалары жұмысшы түйіндерінде жұмыс істейді, әрбір компонент өзінің нақты тапсырмасын орындайды.

Міне, негізгі түйіндердегі ең маңызды компоненттер:

  1. репозиторий - ресурс анықтамаларын сақтайды (әдетте бұл т.б).
  2. API сервері — API қамтамасыз етеді және жадты басқарады.
  3. Контроллер менеджері — Ресурс күйлерінің техникалық сипаттамаларға сәйкестігін қамтамасыз етеді.
  4. Жоспарлаушы — жұмысшы түйіндеріндегі подкасттарды жоспарлайды.

Міне, жұмысшы түйіндеріндегі ең маңызды құрамдас:

  1. Кубелет — жұмыс түйініндегі контейнерлерді іске қосуды басқарады.

Бұл құрамдастардың қалай бірге жұмыс істейтінін түсіну үшін мысалды қарастырайық.

Сіз жаңа ғана аяқтадыңыз делік kubectl create -f replicaset.yaml, содан кейін kubectl HTTP POST сұрауын жасады ReplicaSet API соңғы нүктесі (ReplicaSet ресурсының анықтамасынан өту).

Кластерде не болып жатыр?

  1. Жасағаннан кейін kubectl create -f replicaset.yaml API сервері ReplicaSet ресурсының анықтамасын жадта сақтайды:

    kubectl қалай тиімдірек пайдалануға болады: егжей-тегжейлі нұсқаулық

  2. Содан кейін ReplicaSet контроллері ReplicaSet ресурстарын жасауды, өзгертуді және жоюды басқаратын контроллер менеджерінде іске қосылады:

    kubectl қалай тиімдірек пайдалануға болады: егжей-тегжейлі нұсқаулық

  3. ReplicaSet контроллері әрбір ReplicaSet репликасы үшін (ReplicaSet анықтамасындағы подкладка үлгісіне сәйкес) подкаст анықтамасын жасайды және оларды сақтауда сақтайды:

    kubectl қалай тиімдірек пайдалануға болады: егжей-тегжейлі нұсқаулық

  4. Жоспарлағыш іске қосылды, ешқандай жұмысшы түйіндеріне әлі тағайындалмаған подкасттарды бақылайды:

    kubectl қалай тиімдірек пайдалануға болады: егжей-тегжейлі нұсқаулық

  5. Жоспарлаушы әрбір подвод үшін қолайлы жұмыс түйінін таңдайды және бұл ақпаратты дүкендегі подколь анықтамасына қосады:

    kubectl қалай тиімдірек пайдалануға болады: егжей-тегжейлі нұсқаулық

  6. Қосқыш тағайындалған жұмысшы түйінінде Kubelet іске қосылады, ол осы түйінге тағайындалған подкасттарды қадағалайды:

    kubectl қалай тиімдірек пайдалануға болады: егжей-тегжейлі нұсқаулық

  7. Kubelet қоймадағы анықтаманы оқиды және түйіндегі контейнерлерді іске қосу үшін Docker сияқты контейнердің орындалу уақытына нұсқау береді:

    kubectl қалай тиімдірек пайдалануға болады: егжей-тегжейлі нұсқаулық

Төменде осы сипаттаманың мәтіндік нұсқасы берілген.

ReplicaSet жасаудың соңғы нүктесіне API сұрауын API сервері өңдейді. API сервері сұраудың түпнұсқалығын растайды және ReplicaSet ресурсының анықтамасын жадта сақтайды.

Бұл оқиға контроллер менеджерінің ішкі процесі болып табылатын ReplicaSet контроллерін бастайды. ReplicaSet контроллері дүкендегі ReplicaSet ресурстарының жасалуын, жаңартылуын және жойылуын бақылайды және бұл орын алған кезде оқиға туралы хабарландыру алады.

ReplicaSet контроллерінің жұмысы ReplicaSet қосқыштарының қажетті санының болуын қамтамасыз ету болып табылады. Біздің мысалда әлі бірде-бір түйін жоқ, сондықтан ReplicaSet контроллері осы подколь анықтамаларын жасайды (ReplicaSet анықтамасындағы подкаст үлгісіне сәйкес) және оларды сақтауда сақтайды.

Жаңа подкасттарды жасау жұмысшы түйіндері үшін әлі жоспарланбаған подкаст анықтамаларын қадағалайтын жоспарлаушы арқылы іске қосылады. Жоспарлаушы әрбір подвод үшін қолайлы жұмыс түйінін таңдайды және репозиторийдегі подколь анықтамаларын жаңартады.

Осы уақытқа дейін кластердің ешбір жерінде жұмыс жүктемесінің коды іске қосылмағанын ескеріңіз. Осы уақытқа дейін жасалғанның бәрі - бұл негізгі түйіндегі репозиторийдегі ресурстарды жасау және жаңарту.

Соңғы оқиға жұмысшы түйіндері үшін жоспарланған қосқыштарды бақылайтын Kubelets іске қосады. ReplicaSet қосқыштары орнатылған жұмысшы түйінінің Kubelet қажетті контейнер кескіндерін жүктеп алу және оларды іске қосу үшін Docker сияқты контейнердің орындалу уақытына нұсқау беруі керек.

Осы сәтте сіздің ReplicaSet қолданбаңыз жұмыс істейді!

Kubernetes API рөлі

Алдыңғы мысалда көргеніңіздей, Kubernetes құрамдастары (API сервері мен қоймасынан басқа) сақтаудағы ресурстардағы өзгерістерді бақылайды және сақтаудағы ресурстар туралы ақпаратты өзгертеді.

Әрине, бұл компоненттер жадпен тікелей емес, тек Kubernetes API арқылы әрекеттеседі.

Келесі мысалдарды қарастырыңыз:

  1. ReplicaSet контроллері API соңғы нүктесін пайдаланады ReplicaSets тізімі параметрімен watch ReplicaSet ресурстарындағы өзгерістерді бақылау үшін.
  2. ReplicaSet контроллері API соңғы нүктесін пайдаланады Pod жасау (подборд жасау) тармақтарды жасау үшін.
  3. Жоспарлағыш API соңғы нүктесін пайдаланады патч под таңдалған жұмысшы түйіні туралы ақпараты бар подкасттарды жаңарту үшін (өңдеу pod).

Көріп отырғаныңыздай, бұл kubectl кіретін API. Ішкі компоненттер мен сыртқы пайдаланушылар үшін бірдей API пайдалану Kubernetes дизайнындағы негізгі тұжырымдама болып табылады.

Енді біз Kubernetes қалай жұмыс істейтінін қорытындылай аламыз:

  1. Сақтау қоймалары күй, яғни Kubernetes ресурстары.
  2. API сервері Kubernetes API түрінде сақтау интерфейсін қамтамасыз етеді.
  3. Барлық басқа Kubernetes құрамдастары мен пайдаланушылары API арқылы Kubernetes күйін (ресурстарын) оқиды, бақылайды және басқарады.

Бұл ұғымдарды білу kubectl-ді жақсы түсінуге және одан барынша пайда алуға көмектеседі.

Енді kubectl көмегімен өнімділікті арттыруға көмектесетін кейбір нақты кеңестер мен амалдарды қарастырайық.

1. Пәрменді аяқтау арқылы енгізуді жылдамдату

Kubectl көмегімен өнімділікті жақсартудың ең пайдалы, бірақ жиі назардан тыс қалған әдістерінің бірі - пәрменді аяқтау.

Пәрменді аяқтау Tab пернесін пайдаланып kubectl пәрмендерінің бөліктерін автоматты түрде аяқтауға мүмкіндік береді. Бұл ішкі пәрмендер, опциялар және дәлелдер, соның ішінде ресурс атаулары сияқты күрделі нәрсе үшін жұмыс істейді.

kubectl пәрменін аяқтау қалай жұмыс істейтінін қараңыз:

kubectl қалай тиімдірек пайдалануға болады: егжей-тегжейлі нұсқаулық
Команданы аяқтау Bash және Zsh снарядтары үшін жұмыс істейді.

Ресми нұсқаулық автотолтыруды орнату бойынша егжей-тегжейлі нұсқауларды қамтиды, бірақ төменде біз қысқаша үзінді береміз.

Пәрменді аяқтау қалай жұмыс істейді

Пәрменді аяқтау - аяқтау сценарийін пайдаланып жұмыс істейтін қабық мүмкіндігі. Кеңейтім сценарийі - бұл белгілі бір пәрмен үшін кеңейтімнің әрекетін анықтайтын қабық сценарийі.

Kubectl келесі пәрмендерді пайдаланып Bash және Zsh үшін кеңейтім сценарийлерін автоматты түрде жасайды және шығарады:

$ kubectl completion bash

Немесе:

$ kubectl completion zsh

Теориялық тұрғыдан kubectl пәрмендерді толықтыра алатындай етіп осы пәрмендердің шығысын тиісті пәрмен қабығына қосу жеткілікті.

Іс жүзінде қосылу әдісі Bash (Linux және MacOS арасындағы айырмашылықтарды қоса) және Zsh үшін әртүрлі. Төменде біз осы опциялардың барлығын қарастырамыз.

Linux жүйесіндегі 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 кеңейтім сценарийін каталогқа қосу /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 автотолтыру сценарийі кемінде 4.1 Bash нұсқасын қажет етеді және Bash 3.2-де жұмыс істемейді.

MacOS жүйесінде Bash бағдарламасының ескірген нұсқасын пайдалануға байланысты лицензиялау мәселелері бар. Bash 4 нұсқасы GPLv3 бойынша лицензияланған, оған Apple қолдау көрсетпейді.

MacOS жүйесінде kubectl автотолтыруын конфигурациялау үшін Bash бағдарламасының соңғы нұсқасын орнату қажет. Сондай-ақ жаңартылған Bash файлын әдепкі қабық ретінде орнатуға болады, бұл болашақта көптеген мәселелерден құтқарады. Бұл қиын емес, мәліметтер мақалада берілген «MacOS жүйесінде Bash жаңартылуда«.

Жалғастырмас бұрын, Bash бағдарламасының соңғы нұсқасын пайдаланып жатқаныңызға көз жеткізіңіз (шығысты тексеріңіз bash --version).

Bash аяқтау сценарийі жобаға байланысты өзгереді bash-аяқтау, сондықтан алдымен оны орнату керек.

пайдаланып bash-аяқтауын орнатуға болады Homebrew:

$ brew install bash-completion@2

Бұл @2 bash аяқтау 2 нұсқасын білдіреді. kubectl автотолтыру үшін bash аяқтау v2, ал bash аяқтау 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 аяқтау осы каталогтан барлық сценарийлерді жүктейді.

Егер сіз орнатқан болсаңыз kubectl Homebrew көмегімен, содан кейін алдыңғы қадамды орындаудың қажеті жоқ, себебі автотолтыру сценарийі автоматты түрде қалтаға орналастырылады. /usr/local/etc/bash_completion.d орнату кезінде. Бұл жағдайда kubectl автотолтыруы bash-толтыруды орнатқаннан кейін бірден жұмыс істей бастайды.

Нәтижесінде бұл опциялардың барлығы бірдей.

Zsh

Zsh үшін автотолтыру сценарийлері ешқандай тәуелділікті қажет етпейді. Сізге тек пәрмен қабығын жүктегенде оларды қосу керек.

Мұны жолды қосу арқылы жасауға болады ~/.zshrc файл:

source <(kubectl completion zsh)

Қате алсаңыз not found: compdef қабықты қайта іске қосқаннан кейін кірістірілген функцияны қосу керек compdef. Оны файлыңыздың басына қосу арқылы қосуға болады ~/.zshrc Мынадай:

autoload -Uz compinit
compinit

2. Ресурс сипаттамаларын жылдам қараңыз

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.spec

3. Теңшелетін баған шығыс пішімін пайдаланыңыз

Әдепкі пәрменнің шығыс пішімі 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

Шығару бөлімдердің атаулары бар бір бағанды ​​қамтиды.

Опция өрнегі өрістен бөлім атауларын таңдайды metadata.name. Себебі подкаст атауы еншілес атау өрісінде анықталған metadata қосқыштың ресурс сипаттамасында. Толығырақ ақпаратты мына жерден табуға болады API нұсқаулығы немесе пәрменді теріңіз 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 — түйінге түйін тағайындалғанда, өрісте оның аты жазылады spec.nodeName pod ресурсының сипаттамасы. Толығырақ ақпаратты шығыстан табуға болады kubectl explain pod.spec.nodeName.

Kubernetes ресурс өрістері регистрді ескеретінін ескеріңіз.

Кез келген ресурс өрісін баған ретінде көруге болады. Тек ресурс сипаттамасын қарап шығыңыз және оны өзіңізге ұнайтын кез келген өрістермен қолданып көріңіз.

Бірақ алдымен өрісті таңдау өрнектерін толығырақ қарастырайық.

JSONPath өрнектері

Ресурс өрістерін таңдауға арналған өрнектер негізделген 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 ресурс өрістері тізімдер болып табылады және бұл оператор сол тізімдердің мүшелерін таңдауға мүмкіндік береді. Ол жиі тізімнің барлық элементтерін таңдау үшін [*] сияқты қойылмалы таңбамен пайдаланылады.

Қолдану мысалдары

Теңшелетін баған шығару пішімін пайдалану мүмкіндіктері шексіз, өйткені шығыста кез келген өрісті немесе ресурс өрістерінің тіркесімін көрсетуге болады. Мұнда кейбір қолданбалардың үлгілері берілген, бірақ оларды өзіңіз зерттеп, өзіңізге қолайлы қолданбаларды табыңыз.

  1. Бөлшектерге арналған контейнер кескіндерін көрсету:
    $ 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

    Бұл пәрмен әрбір подвод үшін контейнер кескінінің атауларын көрсетеді.

    Постта бірнеше контейнер болуы мүмкін екенін есте сақтаңыз, содан кейін кескін атаулары үтірмен бөлінген бір жолда көрсетіледі.

  2. Түйіннің қолжетімділік аймақтарын көрсету:
    $ 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

    Бұл пәрмен кластер жалпы бұлтта орналастырылған жағдайда пайдалы. Ол әрбір түйін үшін қолжетімділік аймағын көрсетеді.

    Қолжетімділік аймағы - репликация аймағын географиялық аймақпен шектейтін бұлт тұжырымдамасы.

    Әрбір түйін үшін қолжетімділік аймақтары арнайы белгі арқылы алынады - failure-domain.beta.kubernetes.io/zone. Егер кластер жалпы бұлтта жұмыс істеп тұрса, бұл белгі автоматты түрде жасалады және әрбір түйін үшін қолжетімділік аймақтарының атауларымен толтырылады.

    Белгілер Kubernetes ресурсының сипаттамасының бөлігі емес, сондықтан олар туралы ақпаратты мына жерден таба алмайсыз API нұсқаулығы. Дегенмен, 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 файлында нақты не бар екенін көрейік:

kubectl қалай тиімдірек пайдалануға болады: егжей-тегжейлі нұсқаулық
Көріп отырғаныңыздай, kubeconfig файлында мәтінмәндер жиынтығы бар. Мәтінмән үш элементтен тұрады:

  • Кластер — кластер серверінің API URL мекенжайы.
  • Пайдаланушы - кластердегі пайдаланушының аутентификация тіркелгі деректері.
  • Атау кеңістігі – кластерге қосылу кезінде қолданылатын аттар кеңістігі.

Іс жүзінде олар kubeconfig ішінде кластерге бір контекстті жиі пайдаланады. Дегенмен, әр кластерге пайдаланушы немесе аттар кеңістігі бойынша сараланған бірнеше мәтінмәндер болуы мүмкін. Дегенмен, бұл көп мәтінмәнді конфигурация сирек кездеседі, сондықтан әдетте кластерлер мен мәтінмәндер арасында бір-бірден салыстыру болады.

Кез келген уақытта контексттердің бірі ағымдағы болып табылады:

kubectl қалай тиімдірек пайдалануға болады: егжей-тегжейлі нұсқаулық
kubectl конфигурация файлын оқығанда, ол әрқашан ағымдағы контекстен ақпаратты алады. Жоғарыдағы мысалда kubectl Hare кластеріне қосылады.

Сәйкесінше, басқа кластерге ауысу үшін kubeconfig файлындағы ағымдағы контекстті өзгерту керек:

kubectl қалай тиімдірек пайдалануға болады: егжей-тегжейлі нұсқаулық
Енді kubectl Fox кластеріне қосылады.

Бір кластердегі басқа аттар кеңістігіне ауысу үшін ағымдағы контекст үшін аттар кеңістігі элементінің мәнін өзгерту керек:

kubectl қалай тиімдірек пайдалануға болады: егжей-тегжейлі нұсқаулық
Жоғарыда келтірілген мысалда kubectl Fox кластерінің Prod аттар кеңістігін пайдаланады (бұрын Сынақ аттар кеңістігі орнатылған болатын).

kubectl де опцияларды қамтамасыз ететінін ескеріңіз --cluster, --user, --namespace и --context, ол kubeconfig ішінде не орнатылғанына қарамастан, жеке элементтерді және ағымдағы контексттің өзін қайта жазуға мүмкіндік береді. Қараңыз kubectl options.

Теориялық тұрғыдан kubeconfig ішіндегі параметрлерді қолмен өзгертуге болады. Бірақ ыңғайсыз. Бұл операцияларды жеңілдету үшін параметрлерді автоматты түрде өзгертуге мүмкіндік беретін әртүрлі утилиталар бар.

kubectx пайдаланыңыз

Кластерлер мен аттар кеңістігі арасында ауысуға арналған өте танымал утилита.

Утилита пәрмендерді береді kubectx и kubens тиісінше ағымдағы контекст пен аттар кеңістігін өзгерту үшін.

Жоғарыда айтылғандай, ағымдағы мәтінмәнді өзгерту кластерге бір ғана контекст болса, кластерді өзгертуді білдіреді.

Міне, осы пәрмендерді орындаудың мысалы:

kubectl қалай тиімдірек пайдалануға болады: егжей-тегжейлі нұсқаулық
Негізінде, бұл пәрмендер kubeconfig файлын жоғарыда сипатталғандай өңдейді.

орнату kubectx, бөліміндегі нұсқауларды орындаңыз Github.

Екі пәрмен де контекст пен аттар кеңістігі атауларының автотолтыруын қолдайды, бұл оларды толығымен теру қажеттілігін болдырмайды. Автотолтыруды орнату бойынша нұсқаулар осында.

Тағы бір пайдалы мүмкіндік kubectx Бұл интерактивті режим. Ол қызметтік бағдарламамен бірге жұмыс істейді fzf, ол бөлек орнатылуы керек. fzf автоматты түрде орнату интерактивті режимді қол жетімді етеді kubectx. Интерактивті түрде сіз fzf ұсынған интерактивті тегін іздеу интерфейсі арқылы контекст пен аттар кеңістігін таңдай аласыз.

Қабық бүркеншік аттарын пайдалану

Ағымдағы контекст пен аттар кеңістігін өзгерту үшін сізге бөлек құралдар қажет емес, өйткені kubectl бұл үшін пәрмендерді де қамтамасыз етеді. Иә, команда kubectl config kubeconfig файлдарын өңдеуге арналған ішкі командаларды қамтамасыз етеді.

Вот некоторые из них:

  • kubectl config get-contexts: барлық контексттерді көрсету;
  • kubectl config current-context: ағымдағы контекстті алу;
  • kubectl config use-context: ағымдағы контекстті өзгерту;
  • kubectl config set-context: Мәтінмәндік элементті өзгерту.

Дегенмен, бұл командаларды тікелей пайдалану өте ыңғайлы емес, өйткені олар ұзақ. Сіз олар үшін оңай орындалатын қабық бүркеншік атын жасай аласыз.

Мен kubectx сияқты функционалдылықты қамтамасыз ететін осы пәрмендерге негізделген бүркеншік аттар жинағын жасадым. Мұнда сіз олардың әрекетін көре аласыз:

kubectl қалай тиімдірек пайдалануға болады: егжей-тегжейлі нұсқаулық
Бүркеншік аттар интерактивті тегін іздеу интерфейсін қамтамасыз ету үшін fzf қолданатынын ескеріңіз (мысалы, kubectx интерактивті режимі). Бұл сізге қажет дегенді білдіреді fzf орнатыңызосы бүркеншік аттарды пайдалану үшін.

Мұнда бүркеншік аттардың анықтамалары берілген:

# Получить текущий контекст
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 және қабықты қайта жүктеңіз.

Плагиндерді пайдалану

Kubectl негізгі пәрмендер сияқты орындалатын плагиндерді жүктеуге мүмкіндік береді. Сіз, мысалы, kubectl-foo плагинін орнатып, пәрменді орындау арқылы оны іске қоса аласыз kubectl foo.

Мәтінмән мен аттар кеңістігін осылайша өзгерту ыңғайлы болар еді, мысалы, іске қосу арқылы kubectl ctx контекстті өзгерту және kubectl ns аттар кеңістігін өзгерту үшін.

Мен мұны істейтін екі плагин жаздым:

Плагиндердің жұмысы алдыңғы бөлімдегі бүркеншік аттарға негізделген.

Міне, олар қалай жұмыс істейді:

kubectl қалай тиімдірек пайдалануға болады: егжей-тегжейлі нұсқаулық
Плагиндер интерактивті тегін іздеу интерфейсін қамтамасыз ету үшін fzf қолданатынын ескеріңіз (мысалы, kubectx интерактивті режимі). Бұл сізге қажет дегенді білдіреді fzf орнатыңызосы бүркеншік аттарды пайдалану үшін.

Плагиндерді орнату үшін сіз аталған қабық сценарийлерін жүктеп алуыңыз керек kubectl-ctx и kubectl-ns PATH айнымалысының кез келген каталогына енгізіңіз және оларды орындалатын етіп жасаңыз, мысалы: chmod +x. Осыдан кейін сіз бірден пайдалана аласыз kubectl ctx и kubectl ns.

5. Аутоалиаздармен енгізуді азайтыңыз

Қабық бүркеншік аттары теруді жылдамдатудың жақсы тәсілі болып табылады. Жоба kubectl-бүркеншік аттар негізгі kubectl пәрмендері үшін шамамен 800 пернелер тіркесімін қамтиды.

Сізді қызықтыруы мүмкін - 800 бүркеншік есімді қалай есте сақтайсыз? Бірақ олардың барлығын есте сақтаудың қажеті жоқ, өйткені олар төменде келтірілген қарапайым схемаға сәйкес салынған:

kubectl қалай тиімдірек пайдалануға болады: егжей-тегжейлі нұсқаулық
Мысалы:

  1. kgpooyaml - kubectl алу pods oyaml
  2. ksysgsvcw — kubectl -n kube-жүйесін алу svc w
  3. ksysrmcm -kubectl -n kube-жүйесі rm см
  4. kgdepallls - kubectl барлық sl орналастыруды алады

Көріп отырғаныңыздай, бүркеншік аттар компоненттерден тұрады, олардың әрқайсысы kubectl пәрменінің белгілі бір элементін білдіреді. Әрбір бүркеншік аттың негізгі пәрмені, әрекеті және ресурсы үшін бір құрамдас бөлігі және параметрлер үшін бірнеше құрамдас болуы мүмкін. Сіз бұл құрамдастарды жоғарыдағы диаграммаға сәйкес солдан оңға қарай жай ғана «толтырасыз».

Ағымдағы егжей-тегжейлі диаграмма мына жерде GitHub. Онда сіз де таба аласыз бүркеншік аттардың толық тізімі.

Мысалы, kgpooyamlall бүркеншік аты пәрменге тең kubectl get pods -o yaml --all-namespaces.

Опциялардың салыстырмалы реті маңызды емес: пәрмен kgpooyamlall пәрменіне тең kgpoalloyaml.

Барлық құрамдастарды бүркеншік ат ретінде пайдаланудың қажеті жоқ. Мысалы k, kg, klo, ksys, kgpo да қолдануға болады. Сонымен қатар, пәрмен жолында бүркеншік аттарды және әдеттегі пәрмендерді немесе опцияларды біріктіруге болады:

Мысалы:

  1. Орнына kubectl proxy жаза аласыз k proxy.
  2. Орнына kubectl get roles жаза аласыз kg roles (қазіргі уақытта рөлдер ресурсы үшін бүркеншік ат жоқ).
  3. Арнайы подкастқа арналған деректерді алу үшін пәрменді пайдалануға болады kgpo my-pod — kubectl get pod my-pod.

Кейбір бүркеншік аттар пәрмен жолы аргументін қажет ететінін ескеріңіз. Мысалы, бүркеншік ат kgpol құралдары kubectl get pods -l. Опция -l аргумент талап етеді - белгі спецификациясы. Егер сіз бүркеншік атты қолдансаңыз, ол келесідей болады kgpol app=ui.

Кейбір бүркеншік аттар аргументтерді қажет ететіндіктен, a, f және l бүркеншік аттары соңғы рет қолданылуы керек.

Жалпы алғанда, осы схеманы меңгергеннен кейін, орындағыңыз келетін пәрмендерден интуитивті түрде бүркеншік аттарды алуға және теру уақытын үнемдеуге болады.

Орнату

kubectl-бүркеншік аттарды орнату үшін файлды жүктеп алу керек .kubectl_aliases GitHub сайтынан және оны файлға қосыңыз ~/.bashrc немесе ~/.zshrc:

source ~/.kubectl_aliases

Автотолтыру

Бұрын айтқанымыздай, пәрмен жолындағы бүркеншік атқа қосымша сөздерді жиі қосасыз. Мысалы:

$ kgpooyaml test-pod-d4b77b989

Егер сіз kubectl пәрменін аяқтауды пайдалансаңыз, ресурс атаулары сияқты нәрселер үшін автотолтыруды пайдаланған боларсыз. Бірақ бұл бүркеншік аттар пайдаланылған кезде жасалуы мүмкін бе?

Бұл өте маңызды сұрақ, себебі автотолтыру жұмыс істемесе, бүркеншік аттардың кейбір артықшылықтарын жоғалтасыз.

Жауап қай қабықшаны пайдаланып жатқаныңызға байланысты:

  1. Zsh үшін бүркеншік аттың аяқталуы қораптан тыс жұмыс істейді.
  2. Bash үшін, өкінішке орай, жұмыс істеу үшін автотолтыруды алу үшін біраз жұмыс қажет.

Bash ішіндегі бүркеншік аттар үшін автотолтыруды қосу

Bash-тегі мәселе, ол бүркеншік ат сілтеме жасайтын пәрменді емес (мысалы, Zsh сияқты) бүркеншік атты аяқтауға тырысады (Tab пернесін басқан сайын). Барлық 800 бүркеншік аттар үшін аяқтау сценарийлері болмағандықтан, автотолтыру жұмыс істемейді.

Жоба толық бүркеншік ат бұл мәселенің жалпы шешімін ұсынады. Ол бүркеншік аттар үшін аяқтау механизміне қосылады, бүркеншік атты пәрменге іштей кеңейтеді және аяқталған пәрмен үшін аяқтау опцияларын қайтарады. Бұл бүркеншік атқа арналған толтыру толық пәрменмен бірдей әрекет ететінін білдіреді.

Төменде мен алдымен толық бүркеншік атын қалай орнату керектігін, содан кейін барлық kubectl бүркеншік аттары үшін аяқтауды қосу үшін оны қалай конфигурациялау керектігін түсіндіремін.

Толық бүркеншік ат орнатылуда

Ең алдымен, толық бүркеншік ат тәуелді bash-аяқтау. Сондықтан, толық бүркеншік атын орнатпас бұрын, bash-толтыру орнатылғанына көз жеткізу керек. Орнату нұсқаулары бұрын Linux және MacOS үшін берілген.

MacOS пайдаланушылары үшін маңызды ескерту: kubectl автотолтыру сценарийі сияқты, толық бүркеншік ат MacOS жүйесінде әдепкі болып табылатын Bash 3.2 нұсқасымен жұмыс істемейді. Атап айтқанда, толық бүркеншік аты bash аяқтау v2 (brew install bash-completion@2), ол кем дегенде Bash 4.1 талап етеді. Бұл MacOS жүйесінде толық бүркеншік атын пайдалану үшін Bash бағдарламасының жаңарақ нұсқасын орнату керек дегенді білдіреді.

Сценарийді жүктеп алу керек bash_completion.sh -дан GitHub репозиторийі және оны файлыңызға қосыңыз ~/.bashrc:

source ~/bash_completion.sh

Қабықшаны қайта жүктегеннен кейін толық бүркеншік ат толығымен орнатылады.

kubectl бүркеншік аттары үшін автотолтыруды қосу

Техникалық толық бүркеншік ат орауыш функциясын қамтамасыз етеді _complete_alias. Бұл функция бүркеншік атты тексереді және бүркеншік ат пәрмені үшін аяқтау туралы кеңестерді қайтарады.

Функцияны белгілі бір бүркеншік атпен байланыстыру үшін кірістірілген Bash механизмін пайдалану қажет аяқталған, орнату үшін _complete_alias бүркеншік атын аяқтау функциясы ретінде.

Мысал ретінде kubectl пәрменін білдіретін k бүркеншік атын алайық. орнату үшін _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. kubectl плагиндерімен кеңейту

Бастап 1.12 нұсқасы, kubectl қолдайды плагин механизмі, бұл оның функцияларын қосымша командалармен кеңейтуге мүмкіндік береді.

Егер сіз таныс болсаңыз Git плагин механизмдері, содан кейін kubectl плагиндері бірдей принцип бойынша құрастырылады.

Бұл тарауда біз плагиндерді қалай орнату керектігін, оларды қайдан табуға болатынын және өз плагиндеріңізді қалай жасау керектігін қарастырамыз.

Плагиндерді орнату

Kubectl плагиндері сияқты аты бар қарапайым орындалатын файлдар ретінде таратылады kubectl-x. Префикс kubectl- қажет, одан кейін плагинді шақыруға мүмкіндік беретін жаңа kubectl ішкі пәрмені.

Мысалы, hello плагині деп аталатын файл ретінде таратылады kubectl-hello.

Плагинді орнату үшін файлды көшіру керек kubectl-x PATH ішіндегі кез келген каталогқа жіберіңіз және оны орындалатын етіп жасаңыз, мысалы chmod +x. Осыдан кейін бірден плагинге қоңырау шалуға болады kubectl x.

Жүйеде қазіргі уақытта орнатылған барлық плагиндерді тізімдеу үшін келесі пәрменді пайдалануға болады:

$ kubectl plugin list

Бұл пәрмен сізде бірдей атпен бірнеше плагиндер болса немесе орындалмайтын плагиндер файлы болса, ескертулерді де көрсетеді.

Krew көмегімен плагиндерді табу және орнату

Kubectl плагиндерін бағдарламалық пакеттер сияқты ортақ пайдалануға немесе қайта пайдалануға болады. Бірақ басқалар бөліскен плагиндерді қайдан табуға болады?

Krew жобасы kubectl плагиндерін ортақ пайдалану, іздеу, орнату және басқару үшін бірыңғай шешімді ұсынуға бағытталған. Жоба өзін «kuectl плагиндері үшін пакет менеджері» деп атайды (Krew Сыра).

Krew - таңдап, орнатуға болатын kubectl плагиндерінің тізімі. Сонымен қатар, Krew - бұл kubectl плагині.

Бұл Krew орнату кез келген басқа kubectl плагинін орнату сияқты жұмыс істейтінін білдіреді. Толық нұсқауларды мына жерден таба аласыз GitHub беті.

Ең маңызды 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 плагиндері. Онда сіз тексеруге тұрарлық ондаған қолжетімді плагиндерді таба аласыз.

Өзіңіздің плагиндеріңізді жазу

өзіңіз аласыз плагиндер жасау - Бұл қиын емес. Сізге қажет нәрсені жасайтын орындалатын файлды жасау керек, оны осылай атаңыз 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-ге оңай қоңырау шалу мүмкіндігінің артықшылығы. Дегенмен, сіз нақты бағдарламалау тілдерінде күрделі плагиндерді пайдалана аласыз Kubernetes клиенттерінің кітапханасы. Go қолданбасын пайдалансаңыз, сіз де пайдалана аласыз cli жұмыс уақыты кітапханасы, ол kubectl плагиндерін жазу үшін арнайы бар.

Плагиндерді қалай бөлісуге болады

Плагиндеріңіз басқаларға пайдалы болуы мүмкін деп ойласаңыз, оны GitHub сайтында бөлісіңіз. Оларды тақырыпқа қосуды ұмытпаңыз kubectl плагиндері.

Сондай-ақ плагинді қосуды сұрауға болады Крю тізімі. Мұны қалай жасау керектігі туралы нұсқаулар бөлімде GitHub репозиторийлері.

Пәрменді аяқтау

Плагиндер қазір автотолтыруды қолдамайды. Яғни, плагиннің толық атауын және аргументтердің толық атауларын енгізу керек.

Бұл функцияға арналған GitHub kubectl репозиторийінде бар ашық сұрау. Сондықтан бұл мүмкіндік болашақта бір уақытта жүзеге асырылуы мүмкін.

Сәттілік тілеймін !!!

Тақырып бойынша тағы не оқу керек:

  1. Kubernetes-тегі автомасштабтаудың үш деңгейі және оларды қалай тиімді пайдалану керек.
  2. Жүзеге асыруға арналған шаблонмен пираттық рухтағы Кубернетес.
  3. Telegram-дағы Kubernetes айналасындағы арнамыз.

Ақпарат көзі: www.habr.com

пікір қалдыру