Агар шумо бо Kubernetes кор кунед, пас kubectl эҳтимол яке аз хидматҳои бештар истифодашаванда аст. Ва ҳар вақте, ки шумо вақти зиёдро бо ягон асбоби муайян кор мекунед, барои хуб омӯхтани он ва истифодаи самараноки он фоида меорад.
гурӯҳ
Ба гуфтаи муаллиф, ҳадафи мақола ин аст, ки кори ҳаррӯзаи шумо бо Kubernetes на танҳо самараноктар, балки ҷолибтар бошад!
Муқаддима: kubectl чист
Пеш аз он ки шумо истифодаи kubectl-ро самараноктар омӯзед, шумо бояд фаҳмиши асосӣ дар бораи он ки он чист ва чӣ гуна кор мекунад, ба даст оред.
Аз нуқтаи назари корбар, kubectl як панели идоракунӣ мебошад, ки ба шумо имкон медиҳад амалиёти Kubernetes иҷро кунед.
Аз ҷиҳати техникӣ, kubectl муштарии Kubernetes API мебошад.
Kubernetes API як HTTP REST API мебошад. Ин API интерфейси воқеии корбари Kubernetes мебошад, ки тавассути он комилан идора карда мешавад. Ин маънои онро дорад, ки ҳар як амалиёти Kubernetes ҳамчун нуқтаи ниҳоии API фош карда мешавад ва метавонад бо дархости HTTP ба ин нуқтаи ниҳоӣ анҷом дода шавад.
Аз ин рӯ, кори асосии kubectl ин аст, ки дархостҳои HTTP ба API Kubernetes:
Kubernetes як системаи комилан ба захираҳо нигаронидашуда мебошад. Ин маънои онро дорад, ки он ҳолати дохилии захираҳоро нигоҳ медорад ва ҳама амалиёти Kubernetes амалиёти CRUD мебошанд.
Шумо тавассути идоракунии ин захираҳо Кубернетесро пурра назорат мекунед ва Кубернетес дар асоси ҳолати кунунии захираҳо чӣ кор кардан лозим аст. Аз ин сабаб, истинод ба API Kubernetes ҳамчун рӯйхати намудҳои захираҳо бо амалиёти алоқаманди онҳо ташкил карда шудааст.
Биёед як мисолро дида бароем.
Фарз мекунем, ки шумо мехоҳед захираи ReplicaSet эҷод кунед. Барои ин, шумо ReplicaSet-ро дар файл бо ном тавсиф мекунед replicaset.yaml
, пас фармонро иҷро кунед:
$ kubectl create -f replicaset.yaml
Ин як манбаи ReplicaSet эҷод мекунад. Аммо паси парда чӣ мешавад?
Kubernetes дорои амалиёти эҷоди ReplicaSet мебошад. Мисли ҳама гуна амалиёти дигар, он ҳамчун нуқтаи ниҳоии API фош карда мешавад. Нуқтаи ниҳоии махсуси API барои ин амалиёт чунин менамояд:
POST /apis/apps/v1/namespaces/{namespace}/replicasets
Нуқтаҳои ниҳоии API-ро барои ҳама амалиёти Kubernetes дар ин ҷо пайдо кардан мумкин аст
Аз ин рӯ, вақте ки шумо фармони дар боло зикршударо иҷро мекунед, kubectl дархости HTTP POST-ро ба нуқтаи ниҳоии API-и боло мефиристад. Таърифи ReplicaSet, ки шумо дар файл пешниҳод кардаед replicaset.yaml
, дар матни дархост фиристода мешавад.
Ин аст, ки kubectl барои ҳама фармонҳое кор мекунад, ки бо кластери Kubernetes мутақобила мекунанд. Дар ҳамаи ин ҳолатҳо, kubectl танҳо дархостҳои HTTP-ро ба нуқтаи ниҳоии мувофиқи Kubernetes API медиҳад.
Лутфан қайд кунед, ки шумо метавонед Kubernetes-ро бо истифода аз утилита ба монанди curl
тавассути фиристодани дастӣ дархостҳои HTTP ба API Kubernetes. Kubectl истифодаи API-и Kubernetes-ро осонтар мекунад.
Ин асосҳои kubectl чист ва он чӣ гуна кор мекунад. Аммо дар бораи API Kubernetes чизи дигаре ҳаст, ки ҳар як корбари kubectl бояд донад. Биёед ба ҷаҳони ботинии Кубернетес зуд назар андозем.
Ҷаҳони ботинии Кубернетес
Kubernetes аз маҷмӯи ҷузъҳои мустақил иборат аст, ки ҳамчун равандҳои алоҳида дар гиреҳҳои кластер кор мекунанд. Баъзе ҷузъҳо дар гиреҳҳои асосӣ кор мекунанд, дигарон дар гиреҳҳои корӣ, ҳар як ҷузъ вазифаи мушаххаси худро иҷро мекунад.
Инҳоянд ҷузъҳои муҳимтарин дар гиреҳҳои асосӣ:
- Сарой - таърифҳои захираҳоро нигоҳ медорад (
одатан он ва ғайра ). - сервери API — API таъмин мекунад ва захираро идора мекунад.
- Менеҷери назораткунанда - кафолат медиҳад, ки ҳолати захираҳо ба мушаххасот мувофиқат мекунанд.
- Барномасоз — ҷадвалбандии pods дар гиреҳҳои коргар.
Ва ин ҷо як ҷузъи муҳимтарин дар гиреҳҳои коргарӣ аст:
- Кубелет — ба кор андохтани контейнерхоро дар узели корй идора мекунад.
Барои фаҳмидани он ки ин ҷузъҳо бо ҳам кор мекунанд, биёед як мисолро дида бароем.
Фарз мекунем, ки шумо ҳоло анҷом додаед kubectl create -f replicaset.yaml
, пас аз он kubectl дархости HTTP POST кард
Дар кластер чӣ рӯй медиҳад?
- Баъд аз он
kubectl create -f replicaset.yaml
Сервери API таърифи манбаи ReplicaSet-и шуморо дар анбор нигоҳ медорад: - Баъдан, контролери ReplicaSet дар менеҷери контроллер оғоз мешавад, ки эҷод, тағир додан ва нест кардани захираҳои ReplicaSet -ро идора мекунад:
- Назоратчии ReplicaSet барои ҳар як репликаи ReplicaSet таърифи pod эҷод мекунад (мувофиқи қолаби под дар таърифи ReplicaSet) ва онҳоро дар анбор нигоҳ медорад:
- Банақшагир оғоз карда мешавад, ки подкҳоро пайгирӣ мекунад, ки то ҳол ба ягон гиреҳи коргар таъин нашудаанд:
- Банақшагир як гиреҳи мувофиқро барои ҳар як подк интихоб мекунад ва ин маълумотро ба таърифи подкаст дар мағоза илова мекунад:
- Дар гиреҳи коргарие, ки ба он поддон таъин шудааст, Kubelet ба кор андохта мешавад, он қуттиҳои ба ин гиреҳ таъиншударо пайгирӣ мекунад:
- Kubelet таърифи подкастро аз анбор мехонад ва ба вақти кори контейнер, ба монанди Docker, дастур медиҳад, ки контейнерҳоро дар гиреҳ оғоз кунад:
Дар зер версияи матнии ин тавсиф аст.
Дархости API ба нуқтаи ниҳоии эҷоди ReplicaSet аз ҷониби сервери API коркард мешавад. Сервери API дархостро тасдиқ мекунад ва таърифи манбаи ReplicaSet-ро дар анбор нигоҳ медорад.
Ин ҳодиса контролери ReplicaSet-ро оғоз мекунад, ки зерраванди мудири контроллер мебошад. Назоратчии ReplicaSet эҷод, навсозӣ ва нест кардани захираҳои ReplicaSetро дар мағоза назорат мекунад ва ҳангоми рух додани ин ҳодиса огоҳинома мегирад.
Вазифаи контролери ReplicaSet аз он иборат аст, ки шумораи зарурии подкҳои ReplicaSet мавҷуд аст. Дар мисоли мо, то ҳол ягон подкаст вуҷуд надорад, бинобар ин контролери ReplicaSet ин таърифҳоро месозад (тибқи қолаби подк дар таърифи ReplicaSet) ва онҳоро дар анбор нигоҳ медорад.
Эҷоди қуттиҳои нав аз ҷониби як нақшакаш оғоз мешавад, ки таърифҳои подкӯҳҳоро пайгирӣ мекунад, ки ҳанӯз барои гиреҳҳои корӣ ба нақша гирифта нашудаанд. Банақшагир як гиреҳи мувофиқро барои ҳар як подк интихоб мекунад ва таърифҳои подкастро дар анбор нав мекунад.
Аҳамият диҳед, ки то ин лаҳза ягон рамзи сарбории корӣ дар кластер кор намекард. Хамаи он чи ки то хол ба чо оварда шудааст - ин эҷод ва навсозии захираҳо дар анбори гиреҳи асосӣ мебошад.
Ҳодисаи охирин Кубелецро ба вуҷуд меорад, ки подкҳоро, ки барои гиреҳҳои коргари худ пешбинӣ шудааст, назорат мекунад. Кубелети гиреҳи коргарие, ки дар он подкладҳои ReplicaSet насб шудаанд, бояд ба вақти кори контейнер, ба монанди Docker, дастур диҳад, ки тасвирҳои контейнерии лозимиро зеркашӣ кунад ва онҳоро иҷро кунад.
Дар ин лаҳза, барномаи ReplicaSet-и шумо ниҳоят кор мекунад!
Нақши API Kubernetes
Тавре ки шумо дар мисоли қаблӣ дидед, ҷузъҳои Kubernetes (ба истиснои сервери API ва анбор) тағиротро ба захираҳо дар нигаҳдорӣ ва тағир додани маълумот дар бораи захираҳои нигаҳдорӣ назорат мекунанд.
Албатта, ин ҷузъҳо бо анбор мустақиман ҳамкорӣ намекунанд, балки танҳо тавассути API Kubernetes.
Мисолҳои зеринро дида мебароем:
- Назоратчии ReplicaSet нуқтаи ниҳоии API-ро истифода мебарад
рӯйхати ReplicaSets бо параметрwatch
барои назорат кардани тағирот дар захираҳои ReplicaSet. - Назоратчии ReplicaSet нуқтаи ниҳоии API-ро истифода мебарад
Pod эҷод кунед (под эҷод кардан) барои эҷод кардани порчаҳо. - Барномасоз нуқтаи ниҳоии API-ро истифода мебарад
пачка (под таҳрир) барои навсозӣ кардани подкастҳо бо маълумот дар бораи гиреҳи коргари интихобшуда.
Тавре ки шумо мебинед, ин ҳамон APIест, ки kubectl дастрас аст. Истифодаи ҳамон API барои ҷузъҳои дохилӣ ва корбарони беруна як консепсияи асосӣ дар тарроҳии Kubernetes мебошад.
Акнун мо метавонем ҷамъбаст кунем, ки чӣ тавр Kubernetes кор мекунад:
- Мағозаҳои нигаҳдории давлатӣ, яъне захираҳои Kubernetes.
- Сервери API интерфейсро барои нигаҳдорӣ дар шакли API Kubernetes таъмин мекунад.
- Ҳама ҷузъҳои дигар ва корбарони Kubernetes ҳолати (манбаъҳоро) тавассути API мехонанд, мушоҳида мекунанд ва идора мекунанд.
Донистани ин мафҳумҳо ба шумо кӯмак мекунад, ки kubectl-ро беҳтар фаҳмед ва аз он бештар истифода баред.
Акнун биёед якчанд маслиҳатҳо ва ҳилаҳои мушаххасро бубинем, ки ҳосилнокии шуморо бо kubectl беҳтар мекунанд.
1. Бо истифода аз анҷоми фармон суръати вурудро афзоиш диҳед
Яке аз усулҳои муфидтарин, вале аксар вақт нодида гирифташуда барои беҳтар кардани кор бо kubectl ин анҷом додани фармон мебошад.
Анҷоми фармон ба шумо имкон медиҳад, ки қисмҳои фармонҳои kubectl-ро бо истифода аз тугмаи Tab ба таври худкор пурра кунед. Ин барои зерфармонҳо, вариантҳо ва аргументҳо, аз ҷумла чизи мураккаб ба мисли номҳои манбаъҳо кор мекунад.
Бингар, ки чӣ тавр анҷом додани фармони kubectl кор мекунад:
Иҷрои фармон барои снарядҳои Bash ва Zsh кор мекунад.
Чӣ тавр анҷом додани фармон кор мекунад
Анҷом додани фармон як хусусияти ниҳонӣ аст, ки бо истифода аз скрипти анҷомдиҳӣ кор мекунад. Скрипти васеъшавӣ скрипти ҷилди, ки рафтори васеъшавиро барои фармони мушаххас муайян мекунад.
Kubectl бо истифода аз фармонҳои зерин скриптҳои васеъшавиро барои Bash ва Zsh ба таври худкор тавлид ва мебарорад:
$ kubectl completion bash
Ё:
$ kubectl completion zsh
Дар назария, пайваст кардани натиҷаи ин фармонҳо ба қабати мувофиқи фармон кофӣ аст, то kubectl фармонҳоро пурра кунад.
Дар амал, усули пайвастшавӣ барои Bash (аз ҷумла фарқияти байни Linux ва MacOS) ва Zsh гуногун аст. Дар зер мо ҳамаи ин вариантҳоро дида мебароем.
Bash дар Linux
Скрипти анҷоми Bash аз бастаи анҷомдиҳии bash вобаста аст, бинобар ин шумо бояд аввал онро насб кунед:
$ sudo apt-get install bash-completion
Ё:
$ yum install bash-completion
Шумо метавонед бо истифода аз фармони зерин санҷед, ки баста бомуваффақият насб шудааст:
$ type _init_completion
Агар ин рамзи функсияи ҷилдиро барорад, он гоҳ bash-completion дуруст насб шудааст. Агар фармон хатогии "Наёфтанд" диҳад, шумо бояд сатри зеринро ба файли худ илова кунед ~ / .bashrc
:
$ source /usr/share/bash-completion/bash_completion
Оё ин сатрро ба файл илова кардан лозим аст ~ / .bashrc
ё не, аз мудири бастае, ки шумо барои насб кардани bash-completion истифода мебурдед, вобаста аст. Ин барои APT лозим аст, аммо барои YUM не.
Пас аз насб кардани bash-completion, шумо бояд ҳама чизро танзим кунед, то скрипти анҷомдиҳии kubectl дар ҳама сессияҳои shell фаъол бошад.
Яке аз роҳҳои ин кор ин илова кардани сатри зерин ба файл аст ~ / .bashrc
:
source <(kubectl completion bash)
Роҳи дигар ин илова кардани скрипти васеъшавии kubectl ба директория мебошад /etc/bash_completion.d
(агар он вуҷуд надошта бошад, эҷод кунед):
$ kubectl completion bash >/etc/bash_completion.d/kubectl
Ҳама скриптҳои изофӣ дар каталог /etc/bash_completion.d
ба таври худкор ба bash-тамоми дохил карда мешаванд.
Ҳарду вариантҳо баробар татбиқ мешаванд.
Пас аз бозоғоз кардани қабат, анҷом додани фармони kubectl кор хоҳад кард.
Bash дар MacOS
Дар MacOS танзим каме мураккабтар аст. Далели он аст, ки ба таври нобаёнӣ, MacOS версияи Bash 3.2-ро истифода мебарад ва скрипти худкорпуркунии kubectl версияи Bash-и ҳадди аққал 4.1-ро талаб мекунад ва дар Bash 3.2 кор намекунад.
Масъалаҳои иҷозатномадиҳӣ бо истифодаи версияи кӯҳнаи Bash дар MacOS вуҷуд доранд. Версияи Bash 4 дар доираи GPLv3 иҷозатнома дорад, ки аз ҷониби Apple дастгирӣ намешавад.
Барои танзими худкор анҷом додани kubectl дар MacOS, шумо бояд версияи охирини Bash-ро насб кунед. Шумо инчунин метавонед Bash-и навшударо ҳамчун қабати пешфарзии худ таъин кунед, ки дар оянда мушкилоти зиёдеро наҷот медиҳад. Ин мушкил нест, тафсилот дар мақола оварда шудааст "
Пеш аз идома додан, боварӣ ҳосил кунед, ки шумо версияи охирини Bash-ро истифода мебаред (баромадро санҷед bash --version
).
Скрипти анҷоми Bash вобаста ба лоиҳа фарқ мекунад
Шумо метавонед бо истифода аз bash-completion насб кунед
$ brew install bash-completion@2
Ин аст, @2
Ба итмомрасии версияи bash 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-completion ҳама скриптҳоро аз ин директория бор мекунад.
Агар шумо насб карда бошед /usr/local/etc/bash_completion.d
ҳангоми насб. Дар ин ҳолат, вақте ки шумо ба итмом расонидани bash-ро насб мекунед, автоматии kubectl ба кор шурӯъ мекунад.
Дар натиҷа, ҳамаи ин вариантҳо баробаранд.
Зш
Скриптҳои пуркунии худкор барои 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
дар тавсифи захираҳои 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
— хангоми ба гирех таъин кардани поддон, дар майдон номи он навишта мешавад 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 рӯйхатҳо мебошанд ва ин оператор ба шумо имкон медиҳад, ки аъзои ин рӯйхатҳоро интихоб кунед. Он одатан бо аломати ваҳшӣ ба монанди [*] барои интихоби ҳамаи унсурҳои рӯйхат истифода мешавад.
Намунаҳои татбиқ
Имкониятҳои истифодаи формати баромади сутуни фармоишӣ беохиранд, зеро шумо метавонед ҳама гуна майдон ё маҷмӯи майдонҳои захираҳоро дар баромад намоиш диҳед. Инҳоянд баъзе барномаҳои намунавӣ, аммо озодона онҳоро худатон омӯзед ва замимаҳоеро, ки барои шумо кор мекунанд, пайдо кунед.
- Намоиши тасвирҳои контейнер барои pods:
$ 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
Ин фармон номҳои тасвири контейнерро барои ҳар як pod нишон медиҳад.
Дар хотир доред, ки поддон метавонад якчанд контейнер дошта бошад, пас номҳои тасвирҳо дар як сатр бо вергул ҷудо карда мешаванд.
- Намоиши минтақаҳои дастрасии гиреҳ:
$ 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 номбар шудаанд. Дар ин ҳолат, ҳамаи ин файлҳо дар як конфигуратсияи умумӣ дар вақти корӣ муттаҳид карда мешаванд. Шумо инчунин метавонед файли пешфарзи kubeconfig -ро тавассути иҷро кардани kubectl бо параметр тағир диҳед --kubeconfig
. Бинед
файлҳои kubeconfig
Биёед бубинем, ки файли kubeconfig маҳз чиро дар бар мегирад:
Тавре ки шумо мебинед, файли kubeconfig дорои маҷмӯи контекстҳо мебошад. Контекст аз се унсур иборат аст:
- Кластер — URL-и API-и сервери кластер.
- Корбар - маълумотҳои тасдиқи корбар дар кластер.
- Фазои номҳо - фазои номҳое, ки ҳангоми пайвастшавӣ ба кластер истифода мешаванд.
Дар амал, онҳо аксар вақт дар kubeconfig худ як контекстро барои як кластер истифода мебаранд. Аммо, шумо метавонед дар як кластер якчанд контекст дошта бошед, ки аз рӯи корбар ё фазои ном фарқ мекунанд. Аммо, ин конфигуратсияи бисёрконтекст камназир аст, аз ин рӯ одатан харитасозии як ба як байни кластерҳо ва контекстҳо вуҷуд дорад.
Дар ҳар вақти муайян, яке аз контекстҳо ҷорӣ аст:
Вақте ки kubectl файли конфигуратсияро мехонад, он ҳамеша маълумотро аз контексти ҷорӣ мегирад. Дар мисоли боло, kubectl ба кластери Hare пайваст мешавад.
Мувофиқи он, барои гузаштан ба кластери дигар, шумо бояд контексти кунуниро дар файли kubeconfig тағир диҳед:
Акнун kubectl ба кластери Фокс пайваст мешавад.
Барои гузаштан ба фазои номҳои дигар дар як кластер, шумо бояд арзиши унсури фазои номро барои контексти ҷорӣ тағир диҳед:
Дар мисоли боло, kubectl фазои номи Prod-и кластери Фоксро истифода мебарад (қаблан фазои номи санҷиш муқаррар карда шуда буд).
Дар хотир доред, ки kubectl инчунин вариантҳоро пешниҳод мекунад --cluster
, --user
, --namespace
и --context
, ки ба шумо имкон медиҳад, ки унсурҳои инфиродӣ ва худи контексти ҷорӣ, новобаста аз он ки дар kubeconfig муқаррар карда шудааст, дубора нависед. Нигоҳ кунед kubectl options
.
Дар назария, шумо метавонед танзимотро дар kubeconfig дастӣ тағир диҳед. Аммо ин номувофиқ аст. Барои содда кардани ин амалиётҳо, утилитаҳои гуногун мавҷуданд, ки ба шумо имкон медиҳанд, ки параметрҳоро ба таври худкор тағир диҳед.
kubectx-ро истифода баред
Як воситаи хеле маъмул барои гузариш байни кластерҳо ва фазои номҳо.
Утилита фармонҳоро таъмин мекунад kubectx
и kubens
барои тағир додани контексти ҷорӣ ва фазои ном мутаносибан.
Тавре зикр гардид, тағир додани контексти ҷорӣ маънои тағир додани кластерро дорад, агар шумо дар як кластер танҳо як контекст дошта бошед.
Ин аст мисоли иҷро кардани ин фармонҳо:
Аслан, ин фармонҳо файли kubeconfig-ро тавре ки дар боло тавсиф шудаанд, таҳрир мекунанд.
насб кардан kubectx
, дастурҳои дар боло бударо иҷро кунед
Ҳарду фармонҳо худкор пуркунии номҳои контекст ва фазои номҳоро дастгирӣ мекунанд, ки зарурати чопи онҳоро пурра аз байн мебарад. Дастурҳо оид ба танзими автоматӣ
Боз як хусусияти муфид kubectx
Ин аст, 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
ва қабати худро бозоғоз намоед.
Истифодаи плагинҳо
Kubectl ба шумо имкон медиҳад, ки плагинҳоро бор кунед, ки ҳамон тавре ки фармонҳои асосӣ иҷро мешаванд. Шумо метавонед, масалан, плагини kubectl-foo-ро насб кунед ва онро тавассути иҷрои фармон иҷро кунед kubectl foo
.
Бо ин роҳ тағир додани контекст ва фазои ном қулай мебуд, масалан, тавассути иҷро kubectl ctx
тағйир додани контекст ва kubectl ns
барои тағир додани фазои ном.
Ман ду плагинро навиштаам, ки ин корро мекунанд:
Кори плагинҳо ба тахаллуси қисмати қаблӣ асос ёфтааст.
Ин аст, ки онҳо чӣ гуна кор мекунанд:
Дар хотир доред, ки плагинҳо fzf-ро барои фароҳам овардани интерфейси интерактивии ҷустуҷӯ истифода мебаранд (ба монанди режими интерактивии kubectx). Ин маънои онро дорад, ки ба шумо лозим аст
Барои насб кардани плагинҳо, ба шумо лозим аст, ки скриптҳои ҷилдиро бо номи худ зеркашӣ кунед chmod +x
. Дарҳол пас аз ин шумо метавонед истифода баред kubectl ctx
и kubectl ns
.
5. Кам кардани вуруд бо autoaliases
Номҳои тахаллуси Shell роҳи хуби суръатбахшии вуруд мебошанд. Лоиҳа
Шояд шумо дар ҳайрат бошед - шумо 800 тахаллусро чӣ гуна дар хотир доред? Аммо ба шумо лозим нест, ки ҳамаи онҳоро дар хотир доред, зеро онҳо аз рӯи нақшаи оддӣ сохта шудаанд, ки дар зер оварда шудаанд:
Масалан:
- кгпооямл - кубектл ба даст подс оямл
- ksysgsvcw — kubectl -n kube-система гирифтани svc w
- ksysrmcm -kubectl -n кубе-система рм см
- kgdepallls - kubectl ҷойгиркунии ҳама 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
(дар айни замон ягон тахаллус барои манбаи Нақшҳо вуҷуд надорад). - Барои гирифтани маълумот барои як подтаи мушаххас, шумо метавонед фармонро истифода баред
kgpo my-pod — kubectl get pod my-pod
.
Лутфан таваҷҷӯҳ намоед, ки баъзе тахаллусҳо далели сатри фармонро талаб мекунанд. Масалан, тахаллус kgpol
маънои онро дорад kubectl get pods -l
. Варианти -l
далелро талаб мекунад - мушаххасоти нишона. Агар шумо тахаллусро истифода баред, он ба назар мерасад kgpol app=ui
.
Азбаски баъзе тахаллусҳо далелҳоро талаб мекунанд, тахаллуси a, f ва l бояд дар охир истифода шаванд.
Умуман, вақте ки шумо ин схемаро ба даст меоред, шумо метавонед ба таври интуитивӣ аз фармонҳое, ки мехоҳед иҷро кунед, тахаллусҳо гиред ва вақти зиёди чопкуниро сарфа кунед.
Насбкунӣ
Барои насб кардани kubectl-тақаллубҳо, шумо бояд файлро зеркашӣ кунед ~/.bashrc
ё ~/.zshrc
:
source ~/.kubectl_aliases
Автопуркунӣ
Тавре ки мо қаблан гуфта будем, шумо аксар вақт ба тахаллус дар сатри фармон калимаҳои иловагӣ илова мекунед. Барои намуна:
$ kgpooyaml test-pod-d4b77b989
Агар шумо анҷом додани фармони kubectl -ро истифода баред, шумо эҳтимолан худкоркуниро барои чизҳое ба монанди номҳои манбаъ истифода кардаед. Аммо оё ин корро ҳангоми истифодаи тахаллусҳо метавон анҷом дод?
Ин саволи хеле муҳим аст, зеро агар пуркунии худкор кор накунад, шумо баъзе аз бартариҳои тахаллусҳоро аз даст медиҳед.
Ҷавоб аз он вобаста аст, ки шумо кадом қабатро истифода мебаред:
- Барои Zsh, пуркунии тахаллус аз қуттӣ кор мекунад.
- Барои Bash, мутаассифона, баъзе корҳо лозиманд, то ба пуррагии худкор ба кор оянд.
Даргиронидани худкорпуркунӣ барои тахаллусҳо дар Bash
Мушкилот бо Bash дар он аст, ки он кӯшиш мекунад, ки тахаллусро анҷом диҳад (ҳар дафъае, ки шумо Tab-ро пахш мекунед), на фармоне, ки тахаллус ба он ишора мекунад (масалан, Zsh мекунад). Азбаски шумо барои ҳамаи 800 тахаллусҳо скриптҳои анҷомдиҳӣ надоред, худпуркунӣ кор намекунад.
Лоиҳа
Дар зер, ман аввал мефаҳмонам, ки чӣ гуна насб кардани тахаллуси пурра ва сипас чӣ гуна онро танзим кардан мумкин аст, то анҷом додани ҳама тахаллусҳои kubectl.
Насб кардани тахаллуси пурра
Пеш аз ҳама, тахаллуси пурра вобаста аст
Қайдҳои муҳим барои корбарони MacOS: Мисли скрипти худкорпуркунии kubectl, тахаллуси пурра бо Bash 3.2, ки пешфарз дар MacOS аст, кор намекунад. Махсусан, тахаллуси пурра аз bash-completion v2 вобаста аст (brew install bash-completion@2
), ки ҳадди аққал Bash 4.1-ро талаб мекунад. Ин маънои онро дорад, ки барои истифодаи пурраи тахаллус дар MacOS шумо бояд версияи нави Bash-ро насб кунед.
Шумо бояд скриптро зеркашӣ кунед ~/.bashrc
:
source ~/bash_completion.sh
Пас аз бозоғозӣ кардани ҷабҳа, тахаллуси комил пурра насб карда мешавад.
Фаъолсозии худкор барои тахаллусҳои kubectl
Аз ҷиҳати техникӣ мукаммали тахаллус вазифаи печандаро таъмин мекунад _complete_alias
. Ин функсия тахаллусро месанҷад ва маслиҳатҳои анҷомро барои фармони тахаллус бармегардонад.
Барои пайваст кардани функсия бо тахаллуси мушаххас, шумо бояд механизми дарунсохташудаи Bash -ро истифода баред _complete_alias
ҳамчун вазифаи анҷомдиҳии тахаллус.
Ба сифати мисол, биёед тахаллуси k-ро гирем, ки он фармони kubectl мебошад. насб кардан _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 бо плагинҳо
Оғоз бо
Агар шинос бошед
Дар ин боб мо мефаҳмем, ки чӣ тавр насб кардани плагинҳо, аз куҷо пайдо кардани онҳо ва чӣ гуна сохтани плагинҳои шахсии худ.
Насб кардани плагинҳо
Васлкунакҳои Kubectl ҳамчун файлҳои оддии иҷрошаванда бо номи монанди тақсим карда мешаванд kubectl-x
. Префикс kubectl-
талаб карда мешавад, пас аз он зерфармони нави kubectl, ки ба шумо имкон медиҳад, ки плагинро занг занед.
Масалан, плагини hello ҳамчун файле, ки номида мешавад, тақсим карда мешавад kubectl-hello
.
Барои насб кардани плагин, шумо бояд файлро нусхабардорӣ кунед kubectl-x
ба ягон директорияи PATH худ ворид кунед ва онро иҷрошаванда созед, масалан бо chmod +x
. Дарҳол пас аз ин шумо метавонед плагинро бо занг занед kubectl x
.
Шумо метавонед фармони зеринро барои рӯйхати ҳамаи плагинҳое, ки дар айни замон дар системаи шумо насб шудаанд, истифода баред:
$ kubectl plugin list
Ин фармон инчунин огоҳиҳоро нишон медиҳад, агар шумо плагинҳои сершумор бо як ном дошта бошед ё файли плагинҳо мавҷуд бошад, ки иҷрошаванда нест.
Ҷустуҷӯ ва насби плагинҳо бо истифода аз Krew
Васлкунакҳои Kubectl метавонанд ба монанди бастаҳои нармафзор мубодила ё дубора истифода шаванд. Аммо аз куҷо шумо метавонед плагинҳоро пайдо кунед, ки дигарон мубодила кардаанд?
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 насб шудаанд ва онҳое, ки бо усулҳои дигар насб шудаанд.
Ҷустуҷӯи плагинҳо дар ҷои дигар
Крю як лоиҳаи ҷавон аст, ки ҳоло дар он аст
Ман тавсия медиҳам, ки ба бахши 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 метавонанд бо ҳама гуна забони барномасозӣ ё скрипт навишта шаванд. Агар шумо скриптҳои shell-ро истифода баред, бартарии он аст, ки ба осонӣ ба kubectl аз дохили плагин занг занед. Бо вуҷуди ин, шумо метавонед плагинҳои мураккабтарро бо забонҳои воқеии барномасозӣ нависед
Чӣ тавр мубодилаи плагинҳои худро
Агар шумо фикр кунед, ки плагинҳои шумо метавонанд барои дигарон муфид бошанд, озодона онро дар GitHub мубодила кунед. Ҳатман онҳоро ба мавзӯъ илова кунед
Шумо инчунин метавонед дархост кунед, ки плагини шумо ба он илова карда шавад
Анҷоми фармон
Васлкунакҳо дар айни замон пуркунии худкорро дастгирӣ намекунанд. Яъне, шумо бояд номи пурраи плагин ва номи пурраи далелҳоро ворид кунед.
Анбори kubectl GitHub барои ин функсия дорад
Шукрона !!!
Дар ин мавзӯъ боз чӣ хондан лозим аст:
Се сатҳи автоматизатсия дар Кубернетес ва тарзи истифодаи самараноки онҳо .Кубернетес дар рӯҳияи роҳзанӣ бо қолаби амалӣ .Канали мо дар атрофи Kubernetes дар Telegram .
Манбаъ: will.com