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

сияқты утилитаны пайдаланып Kubernetes-ті толығымен басқара алатыныңызды ескеріңіз curl, HTTP сұрауларын 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 анықтамасындағы подкладка үлгісіне сәйкес) және оларды жадта сақтайды.

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

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

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

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

Kubernetes API рөлі

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

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

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

  1. ReplicaSet контроллері API соңғы нүктесін пайдаланады ReplicaSets тізімі параметрімен watch ReplicaSet ресурстарындағы өзгерістерді бақылау үшін.
  2. ReplicaSet контроллері API соңғы нүктесін пайдаланады Pod жасау (подборд жасау) тармақтарды жасау үшін.
  3. Жоспарлаушы API соңғы нүктесін пайдаланады Patch 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 аяқтау бумасына байланысты, сондықтан алдымен оны орнату керек:

$ 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 нұсқасы Apple қолдамайтын GPLv3 бағдарламасы бойынша лицензияланған.

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

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

5. Автоматалы аттармен енгізуді қысқартыңыз

Shell бүркеншік аттары теруді жылдамдатудың тамаша тәсілі болып табылады. Жоба 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-аяқтауСондықтан, complete-alias орнатпас бұрын, bash-completion орнатылғанына көз жеткізуіңіз керек. Орнату нұсқаулары бұрын берілген болатын. 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 беті.

Ең маңызды Крю командалары:

# Поиск в списке плагинов
$ 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

DDoS қорғауы бар сайттар үшін сенімді хостинг, VPS VDS серверлерін сатып алыңыз 🔥 DDoS қорғанысы, VPS VDS серверлері бар сенімді веб-сайт хостингін сатып алыңыз | ProHoster