Kumaha ngagunakeun kubectl langkung efektif: pituduh anu lengkep

Kumaha ngagunakeun kubectl langkung efektif: pituduh anu lengkep
Upami anjeun damel sareng Kubernetes, maka kubectl sigana mangrupikeun salah sahiji utilitas anu paling sering anjeun anggo. Sareng iraha waé anjeun nyéépkeun waktos damel sareng alat anu khusus, éta mayar pikeun diajar éta sareng diajar kumaha ngagunakeunana sacara efektif.

regu Kubernetes aaS ti Mail.ru narjamahkeun artikel ku Daniel Weibel dimana anjeun bakal mendakan tip sareng trik pikeun damel sacara efektif sareng kubectl. Éta ogé bakal ngabantosan anjeun ngartos langkung jero ngeunaan Kubernetes.

Numutkeun panulis, tujuan tina tulisan nyaéta ngajantenkeun padamelan sapopoé anjeun sareng Kubernetes henteu ngan ukur langkung éfisién, tapi ogé langkung pikaresepeun!

Bubuka: Naon kubectl

Sateuacan anjeun tiasa diajar ngagunakeun kubectl langkung efektif, anjeun kedah ngartos dasar naon éta sareng kumaha jalanna.

Tina sudut pandang pangguna, kubectl mangrupikeun panel kontrol anu ngamungkinkeun anjeun ngalaksanakeun operasi Kubernetes.

Sacara teknis, kubectl mangrupikeun klien API Kubernetes.

API Kubernetes nyaéta API REST HTTP. API ieu mangrupikeun antarbeungeut pangguna Kubernetes anu leres, anu dikontrol sacara lengkep. Ieu ngandung harti yén unggal operasi Kubernetes kakeunaan salaku titik tungtung API sareng tiasa dilakukeun ku pamundut HTTP ka titik éta.

Ku alatan éta, tugas utama kubectl nyaéta ngadamel pamundut HTTP ka API Kubernetes:

Kumaha ngagunakeun kubectl langkung efektif: pituduh anu lengkep
Kubernetes mangrupikeun sistem anu berorientasi sumber daya. Ieu ngandung harti yén éta ngajaga kaayaan internal sumberdaya sareng sadaya operasi Kubernetes mangrupikeun operasi CRUD.

Anjeun gaduh kadali pinuh ku Kubernetes ku ngatur sumber daya ieu, sareng Kubernetes terang naon anu kedah dilakukeun dumasar kana kaayaan sumber daya ayeuna. Ku sabab kitu, rujukan API Kubernetes diatur salaku daptar jenis sumberdaya sareng operasi anu aya hubunganana.

Hayu urang nempo hiji conto.

Anggap anjeun hoyong ngadamel sumberdaya ReplicaSet. Jang ngalampahkeun ieu, anjeun ngajelaskeun ReplicaSet dina file ku ngaran replicaset.yaml, teras ngajalankeun paréntah:

$ kubectl create -f replicaset.yaml

Ieu bakal nyieun sumberdaya ReplicaSet. Tapi naon anu lumangsung di balik layar?

Kubernetes gaduh operasi nyiptakeun ReplicaSet. Sapertos operasi anu sanés, éta kakeunaan salaku titik tungtung API. Titik API khusus pikeun operasi ieu sapertos kieu:

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

Titik tungtung API pikeun sadaya operasi Kubernetes tiasa dipendakan di rujukan API (kaasup titik tungtung luhur). Pikeun nyuhunkeun pamundut saleresna ka titik akhir, anjeun kedah nambihan URL pangladén API kana jalur titik tungtung anu didaptarkeun dina rujukan API.

Lantaran kitu, nalika anjeun ngaéksekusi paréntah di luhur, kubectl ngirimkeun pamundut HTTP POST ka titik akhir API di luhur. Harti ReplicaSet anjeun disadiakeun dina file replicaset.yaml, dikirim dina awak pamundut.

Ieu kumaha kubectl dianggo pikeun sadaya paréntah anu berinteraksi sareng klaster Kubernetes. Dina sakabéh kasus ieu, kubectl saukur nyieun requests HTTP ka titik tungtung API Kubernetes luyu.

Punten dicatet yén anjeun tiasa ngatur Kubernetes sapinuhna nganggo utilitas sapertos curlku cara ngirim pamundut HTTP sacara manual ka API Kubernetes. Kubectl saukur ngagampangkeun ngagunakeun API Kubernetes.

Ieu mangrupikeun dasar naon kubectl sareng kumaha jalanna. Tapi aya anu sanés ngeunaan API Kubernetes anu kedah terang unggal pangguna kubectl. Hayu urang tingali gancang kana dunya batin Kubernetes.

Dunya batin Kubernetes

Kubernetes diwangun ku sakumpulan komponén mandiri anu dijalankeun salaku prosés anu misah dina titik kluster. Sababaraha komponén dijalankeun dina titik master, batur dina titik worker, unggal komponén ngajalankeun tugas husus sorangan.

Ieu mangrupikeun komponén anu paling penting dina titik-titik utama:

  1. Repository - nyimpen definisi sumberdaya (biasana éta jsb).
  2. server API - nyadiakeun API tur ngatur gudang.
  3. Manajer Controller - Mastikeun yén status sumberdaya luyu jeung spésifikasi.
  4. Penjadwal - ngajadwalkeun pods dina titik worker.

Sareng ieu mangrupikeun salah sahiji komponén anu paling penting dina titik pagawé:

  1. kubelet - ngatur peluncuran wadah dina titik kerja.

Pikeun ngarti kumaha komponén ieu gawé bareng, hayu urang nempo hiji conto.

Hayu urang nganggap anjeun nembé réngsé kubectl create -f replicaset.yaml, nu satutasna kubectl dijieun pamundut HTTP POST ka Titik tungtung API ReplicaSet (ngaliwatan definisi sumberdaya ReplicaSet).

Naon anu lumangsung dina kluster?

  1. Sanggeus ngalakonan kubectl create -f replicaset.yaml Server API nyimpen definisi sumberdaya ReplicaSet anjeun dina panyimpenan:

    Kumaha ngagunakeun kubectl langkung efektif: pituduh anu lengkep

  2. Salajengna, controller ReplicaSet diluncurkeun dina manajer controller, anu ngadamel kreasi, modifikasi sareng ngahapus sumberdaya ReplicaSet:

    Kumaha ngagunakeun kubectl langkung efektif: pituduh anu lengkep

  3. Controller ReplicaSet nyiptakeun definisi pod pikeun unggal réplika ReplicaSet (nurutkeun template pod dina definisi ReplicaSet) sareng nyimpenna dina panyimpenan:

    Kumaha ngagunakeun kubectl langkung efektif: pituduh anu lengkep

  4. Penjadwal diluncurkeun, nyukcruk pods anu henteu acan ditugaskeun ka titik-titik padamel:

    Kumaha ngagunakeun kubectl langkung efektif: pituduh anu lengkep

  5. Penjadwal milih titik pagawe anu cocog pikeun unggal pod sareng nambihan inpormasi ieu kana definisi pod di toko:

    Kumaha ngagunakeun kubectl langkung efektif: pituduh anu lengkep

  6. Dina titik worker dimana pod ditugaskeun, Kubelet diluncurkeun, éta ngalacak pods anu ditugaskeun ka titik ieu:

    Kumaha ngagunakeun kubectl langkung efektif: pituduh anu lengkep

  7. Kubelet maca definisi pod tina panyimpenan sareng maréntahkeun runtime wadah, sapertos Docker, pikeun ngaluncurkeun wadah dina node:

    Kumaha ngagunakeun kubectl langkung efektif: pituduh anu lengkep

Di handap ieu versi téks déskripsi ieu.

Paménta API kana titik ahir nyiptakeun ReplicaSet diolah ku server API. Server API authenticates pamundut jeung nyimpen harti sumberdaya ReplicaSet di gudang.

Kajadian ieu ngamimitian controller ReplicaSet, anu mangrupikeun subprosés manajer pangontrol. Controller ReplicaSet ngawas nyiptakeun, ngamutahirkeun, sareng ngahapus sumberdaya ReplicaSet di toko sareng nampi béwara acara nalika ieu lumangsung.

Tugas Controller ReplicaSet nyaéta pikeun mastikeun yén jumlah pod ReplicaSet anu diperyogikeun aya. Dina conto urang, teu acan aya pods, jadi controller ReplicaSet nyiptakeun definisi pod ieu (nurutkeun template pod dina harti ReplicaSet) jeung nyimpen eta di gudang.

Nyiptakeun pods anyar dipicu ku scheduler anu ngalacak definisi pod anu henteu acan dijadwalkeun pikeun titik worker. Penjadwal milih titik pagawe anu cocog pikeun tiap pod sareng ngamutahirkeun definisi pod dina gudang.

Catet yén dugi ka titik ieu, teu aya kode beban kerja anu dijalankeun di mana waé dina kluster. Sadayana anu parantos dilakukeun dugi ka ayeuna - Ieu nyiptakeun sareng ngamutahirkeun sumber daya dina gudang dina master node.

Kajadian pamungkas micu Kubelets, nu ngawas pods dijadwalkeun pikeun titik worker maranéhanana. Kubelet tina titik worker dimana pod ReplicaSet anjeun dipasang kedah ngalatih runtime wadahna, sapertos Docker, pikeun ngaunduh gambar wadah anu diperyogikeun sareng ngajalankeunana.

Dina titik ieu, aplikasi ReplicaSet anjeun tungtungna jalan!

Peran API Kubernetes

Salaku nu katingali dina conto saméméhna, komponén Kubernetes (iwal server API jeung neundeun) lalajo pikeun parobahan sumberdaya di gudang sarta ngarobah informasi ngeunaan sumberdaya di gudang.

Tangtosna, komponén ieu henteu langsung berinteraksi sareng neundeun, tapi ngan ukur ngalangkungan API Kubernetes.

Perhatikeun conto di handap ieu:

  1. Controller ReplicaSet nganggo titik tungtung API daptar ReplicaSets kalawan parameter watch pikeun ngawas parobahan sumberdaya ReplicaSet.
  2. Controller ReplicaSet nganggo titik tungtung API nyieun Pod (nyieun pod) pikeun nyieun pods.
  3. Scheduler ngagunakeun titik tungtung API patch pod (édit pod) pikeun ngapdet pods kalayan informasi ngeunaan titik worker dipilih.

Sakumaha anjeun tiasa tingali, ieu mangrupikeun API anu sami anu diaksés kubectl. Nganggo API anu sami pikeun komponén internal sareng pangguna éksternal mangrupikeun konsép dasar dina desain Kubernetes.

Ayeuna urang tiasa nyimpulkeun kumaha jalanna Kubernetes:

  1. Panyimpenan nyatakeun, nyaéta sumber daya Kubernetes.
  2. Pangladén API nyayogikeun antarbeungeut kana panyimpenan dina bentuk API Kubernetes.
  3. Sadaya komponén sareng pangguna Kubernetes anu sanés maca, niténan, sareng ngamanipulasi kaayaan Kubernetes (sumberdaya) ngalangkungan API.

Nyaho konsép-konsép ieu bakal ngabantosan anjeun ngartos kubectl langkung saé sareng ngamaksimalkeunana.

Ayeuna hayu urang tingali sababaraha tip sareng trik khusus anu bakal ngabantosan ningkatkeun produktivitas anjeun sareng kubectl.

1. Nyepetkeun input nganggo paréntah parantosan

Salah sahiji téknik anu paling kapaké, tapi sering diabaikan, pikeun ningkatkeun kamampuan kubectl nyaéta paréntah parantosan.

Paréntah parantosan ngamungkinkeun anjeun pikeun otomatis ngalengkepan bagian paréntah kubectl nganggo konci Tab. Ieu lumaku pikeun subcommands, pilihan, sarta argumen, kaasup hal sakumaha kompléks salaku ngaran sumberdaya.

Tingali kumaha paréntah kubectl parantosan jalan:

Kumaha ngagunakeun kubectl langkung efektif: pituduh anu lengkep
Paréntah parantosan dianggo pikeun cangkang Bash sareng Zsh.

Pituduh resmi ngandung parentah lengkep pikeun nyetel autocompletion, tapi di handap ieu kami baris nyadiakeun excerpt pondok.

Kumaha paréntah parantosan jalan

Paréntah parantosan mangrupikeun fitur cangkang anu dianggo nganggo skrip parantosan. Skrip ekstensi mangrupikeun skrip cangkang anu netepkeun paripolah ekstensi pikeun paréntah khusus.

Kubectl sacara otomatis ngahasilkeun sareng ngaluarkeun skrip ekstensi pikeun Bash sareng Zsh nganggo paréntah di handap ieu:

$ kubectl completion bash

Atanapi:

$ kubectl completion zsh

Sacara téori, cukup pikeun nyambungkeun kaluaran paréntah ieu kana cangkang paréntah anu pas supados kubectl tiasa ngalengkepan paréntah.

Dina prakna, métode sambungan béda pikeun Bash (kaasup béda antara Linux Ubuntu jeung MacOS) jeung Zsh. Di handap ieu kami bakal ningali sadaya pilihan ieu.

Bash dina Linux

Skrip parantosan Bash gumantung kana pakét bash-completion, janten anjeun kedah pasang heula:

$ sudo apt-get install bash-completion

Atanapi:

$ yum install bash-completion

Anjeun tiasa nguji yén pakét parantos suksés dipasang nganggo paréntah di handap ieu:

$ type _init_completion

Upami ieu ngaluarkeun kode fungsi cangkang, maka bash-completion dipasang leres. Upami paréntahna masihan kasalahan "Teu Kapanggih", anjeun kedah nambihan garis di handap ieu kana file anjeun ~ / .bashrc:

$ source /usr/share/bash-completion/bash_completion

Naha perlu pikeun nambahkeun garis ieu kana file ~ / .bashrc atanapi henteu gumantung kana manajer pakét anu anjeun biasa pasang bash-completion. Ieu dipikabutuh pikeun APT, tapi henteu pikeun YUM.

Saatos masang bash-completion, anjeun kedah ngonpigurasikeun sadayana supados skrip parantosan kubectl diaktipkeun dina sadaya sesi cangkang.

Salah sahiji cara pikeun ngalakukeun ieu nyaéta nambihan garis di handap ieu kana file ~ / .bashrc:

source <(kubectl completion bash)

Cara anu sanés nyaéta nambihan skrip ekstensi kubectl kana diréktori /etc/bash_completion.d (Jieun upami teu aya):

$ kubectl completion bash >/etc/bash_completion.d/kubectl

Sadaya skrip tambihan dina katalog /etc/bash_completion.d anu otomatis kaasup dina bash-parantosan.

Duanana pilihan anu sarua lumaku.

Saatos ngamimitian deui cangkang, paréntah kubectl parantosan bakal jalan.

Bash dina MacOS

Dina MacOS, setelanna rada rumit. Kanyataanna nyaéta sacara standar, MacOS nganggo Bash vérsi 3.2, sareng skrip autocompletion kubectl merlukeun versi Bash sahenteuna 4.1 sareng henteu tiasa dianggo dina Bash 3.2.

Aya masalah lisénsi anu aya hubunganana sareng nganggo versi Bash anu luntur dina MacOS. Bash Vérsi 4 dilisensikeun dina GPLv3, nu teu dirojong ku Apple.

Pikeun ngonpigurasikeun autocompletion kubectl dina MacOS, anjeun kedah masang versi Bash anu langkung énggal. Anjeun ogé tiasa nyetél Bash anu diropéa salaku cangkang standar anjeun, anu bakal nyalametkeun anjeun seueur masalah di hareup. Henteu hese, detil dijelaskeun dina tulisan "Ngamutahirkeun Bash on MacOS".

Sateuacan neraskeun, pastikeun anjeun nganggo versi Bash panganyarna (parios kaluaran bash --version).

Skrip parantosan Bash beda-beda dumasar kana proyék bash-parantosan, janten anjeun kedah masang heula.

Anjeun tiasa install bash-parantosan ngagunakeun Homebrew:

$ brew install bash-completion@2

Ieu téh @2 nangtung pikeun bash-parantosan Vérsi 2. kubectl autocompletion merlukeun bash-parantosan v2, sarta bash-parantosan v2 merlukeun minimum Bash Vérsi 4.1.

kaluaran paréntah brew-install ngandung bagian Caveats, nu nangtukeun naon nu kudu ditambahkeun kana file ~/.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"

Najan kitu, kuring nyarankeun nambahkeun garis ieu teu ~/.bash_profile, sareng di ~/.bashrc. Dina hal ieu, autocompletion bakal sadia henteu ngan dina utama, tapi ogé dina cangkang paréntah anak.

Saatos ngamimitian deui cangkang paréntah, anjeun tiasa pariksa pamasangan leres nganggo paréntah di handap ieu:

$ type _init_completion

Upami anjeun ningali fungsi cangkang dina kaluaran, maka sadayana dikonpigurasi leres.

Ayeuna urang kedah mastikeun yén autocompletion kubectl diaktipkeun dina sadaya sesi.

Hiji cara nyaéta pikeun nambahkeun garis handap ka Anjeun ~/.bashrc:

source <(kubectl completion bash)

Cara kadua nyaéta nambahkeun skrip autocomplete kana polder /usr/local/etc/bash_completion.d:

$ kubectl completion bash
>/usr/local/etc/bash_completion.d/kubectl

Metoda ieu ngan bakal tiasa dianggo upami anjeun masang bash-completion nganggo Homebrew. Dina hal ieu, bash-completion ngamuat sadaya skrip tina diréktori ieu.

Lamun dipasang kubectl ngagunakeun Homebrew, teras teu kedah ngalakukeun léngkah sateuacana, sabab naskah autocompletion bakal otomatis disimpen dina polder /usr/local/etc/bash_completion.d salila instalasi. Dina hal ieu, autocompletion kubectl bakal ngamimitian damel pas anjeun masang bash-completion.

Hasilna, sadaya pilihan ieu sarimbag.

zsh

Skrip Autocompletion pikeun Zsh henteu meryogikeun katergantungan. Sadaya anu anjeun kedah laksanakeun nyaéta ngaktifkeunana nalika anjeun ngamuat cangkang paréntah.

Anjeun tiasa ngalakukeun ieu ku nambahkeun hiji garis ka Anjeun ~/.zshrc file:

source <(kubectl completion zsh)

Upami anjeun nampi kasalahan not found: compdef saatos balikan deui cangkang anjeun, anjeun kedah ngaktipkeun pungsi builtin compdef. Anjeun tiasa ngaktipkeun ku cara nambahkeun kana awal file Anjeun ~/.zshrc ieu:

autoload -Uz compinit
compinit

2. Gancang nempo spésifikasi sumberdaya

Nalika anjeun nyiptakeun definisi sumberdaya YAML, anjeun kedah terang widang sareng hartosna pikeun sumber-sumber éta. Hiji tempat néangan informasi ieu dina rujukan API, nu ngandung spésifikasi lengkep pikeun sakabéh sumberdaya.

Nanging, ngalih ka browser wéb unggal waktos anjeun kedah milarian anu henteu pikaresepeun. Ku sabab kitu kubectl nyadiakeun paréntah kubectl explain, anu nunjukkeun spésifikasi sadaya sumber langsung di terminal anjeun.

Format paréntah nyaéta kieu:

$ kubectl explain resource[.field]...

Paréntah bakal kaluaran spésifikasi sumberdaya atanapi sawah anu dipénta. Inpormasi anu ditampilkeun sami sareng anu aya dina manual API.

sacara standar kubectl explain ngan nembongkeun tingkat mimiti nyarang sawah.

Tingali kumaha rupana tiasa didieu.

Anjeun tiasa ningalikeun sadayana tangkal upami anjeun nambihan pilihan --recursive:

$ kubectl explain deployment.spec --recursive

Upami anjeun henteu terang persis sumber daya anu diperyogikeun, anjeun tiasa ningalikeun sadayana nganggo paréntah di handap ieu:

$ kubectl api-resources

Paréntah ieu mintonkeun ngaran sumberdaya dina bentuk jamak, f.eks. deployments tibatan deployment. Éta ogé nunjukkeun nami pondok, contona deploy, pikeun maranéhanana sumberdaya nu gaduh eta. Tong hariwang ngeunaan bédana ieu. Sadaya pilihan nami ieu sami sareng kubectl. Hartina, anjeun tiasa nganggo salah sahiji aranjeunna pikeun kubectl explain.

Sadaya paréntah di handap ieu sami sareng:

$ kubectl explain deployments.spec
# или
$ kubectl explain deployment.spec
# или        
$ kubectl explain deploy.spec

3. Paké format kaluaran kolom custom

Format kaluaran paréntah standar 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

format ieu merenah, tapi ngandung jumlah kawates informasi. Dibandingkeun jeung format harti sumberdaya pinuh, ngan sababaraha widang dipintonkeun di dieu.

Dina hal ieu, anjeun tiasa nganggo format kaluaran kolom khusus. Eta ngidinan Anjeun pikeun nangtukeun naon data kaluaran. Anjeun tiasa nembongkeun sagala widang sumberdaya salaku kolom misah.

Pamakéan format khusus ditangtukeun nganggo pilihan:

-o custom-columns=<header>:<jsonpath>[,<header>:<jsonpath>]...

Anjeun tiasa nangtukeun unggal kolom kaluaran salaku pasangan <header>:<jsonpath>dimana <header> nyaeta ngaran kolom, jeung <jsonpath> - ekspresi nangtukeun widang sumberdaya.

Hayu urang nempo conto basajan:

$ kubectl get pods -o custom-columns='NAME:metadata.name'

NAME
engine-544b6b6467-22qr6
engine-544b6b6467-lw5t8
engine-544b6b6467-tvgmg
web-ui-6db964458-8pdw4

Kaluaran ngandung hiji kolom sareng nami pods.

Ekspresi pilihan milih nami pod tina lapangan metadata.name. Ieu kusabab nami pod didefinisikeun dina widang ngaran anak metadata dina pedaran sumberdaya pod. Langkung rinci tiasa dipendakan dina Pituduh API atawa ngetik paréntah kubectl explain pod.metadata.name.

Ayeuna anggap anjeun hoyong nambihan kolom tambahan kana kaluaran, contona nunjukkeun titik unggal pod dijalankeun. Jang ngalampahkeun ieu, anjeun ngan saukur tiasa nambihan spésifikasi kolom anu pas kana pilihan kolom khusus:

$ 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

Ekspresi milih ngaran titik tina spec.nodeName - nalika pod ditugaskeun ka node, ngaranna ditulis dina widang spec.nodeName spésifikasi sumberdaya pod. Inpo nu leuwih lengkep bisa kapanggih dina kaluaran kubectl explain pod.spec.nodeName.

Punten dicatet yén widang sumberdaya Kubernetes sensitip.

Anjeun tiasa ningali sagala widang sumberdaya salaku kolom. Ngan marios spésifikasi sumberdaya sareng cobian nganggo widang naon waé anu anjeun pikahoyong.

Tapi ke heula, hayu urang ningal langkung caket kana ekspresi pilihan lapangan.

Ekspresi JSONPath

Babasan pikeun milih widang sumberdaya dumasar kana JSONPath.

JSONPath mangrupikeun basa pikeun nyandak data tina dokumén JSON. Milih hiji widang nyaéta kasus pamakéan pangbasajanna pikeun JSONPath. Anjeunna gaduh seueur leuwih kamungkinan, kaasup pamilih, saringan jeung saterusna.

Kubectl explain ngadukung sajumlah kawates fitur JSONPath. Kamungkinan sareng conto panggunaanana dijelaskeun di handap ieu:

# Выбрать все элементы списка
$ 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'

Operator [] hususna penting. Seueur widang sumberdaya Kubernetes mangrupikeun daptar, sareng operator ieu ngamungkinkeun anjeun milih anggota daptar éta. Hal ieu sering dianggo sareng wildcard sapertos [*] pikeun milih sadaya unsur daptar.

Conto aplikasi

Kamungkinan pikeun ngagunakeun format kaluaran kolom adat henteu aya watesna, sabab anjeun tiasa nampilkeun widang naon waé atanapi kombinasi widang sumberdaya dina kaluaran. Di dieu aya sababaraha aplikasi sampel, tapi ngarasa Luncat ngajajah aranjeunna sorangan sarta manggihan aplikasi nu dianggo pikeun anjeun.

  1. Mintonkeun gambar wadah pikeun 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

    Paréntah ieu nunjukkeun nami gambar wadahna pikeun unggal pod.

    Émut yén pod tiasa ngandung sababaraha wadah, teras nami gambar bakal ditingalikeun dina hiji garis, dipisahkeun ku koma.

  2. Mintonkeun zona kasadiaan titik:
    $ 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

    Paréntah ieu kapaké upami kluster anjeun di-host dina méga umum. Ieu mintonkeun zona kasadiaan pikeun tiap titik.

    Zona kasadiaan mangrupikeun konsép awan anu ngabatesan zona réplikasi ka daérah géografis.

    Zona kasadiaan pikeun tiap titik dicandak ngaliwatan labél husus - failure-domain.beta.kubernetes.io/zone. Lamun klaster ngajalankeun dina awan umum, labél ieu dijieun otomatis tur ngeusi ngaran zona kasadiaan pikeun tiap titik.

    Labél sanés bagian tina spésifikasi sumberdaya Kubernetes, janten anjeun moal mendakan inpormasi ngeunaan éta Pituduh API. Nanging, aranjeunna tiasa katingali (sapertos labél anu sanés) upami anjeun nyuhunkeun inpormasi ngeunaan titik dina format YAML atanapi JSON:

    $ kubectl get nodes -o yaml
    # или
    $ kubectl get nodes -o json

    Ieu mangrupikeun cara anu saé pikeun diajar langkung seueur ngeunaan sumber daya, salian pikeun diajar spésifikasi sumberdaya.

4. Gampang pindah antara klaster jeung namespaces

Nalika kubectl ngadamel pamundut ka API Kubernetes, éta mimitina maca file kubeconfig pikeun kéngingkeun sadaya parameter anu dipikabutuh pikeun sambungan éta.

Sacara standar file kubeconfig nyaeta ~/.kube/config. Ilaharna file ieu dijieun atawa diropéa ku paréntah husus.

Nalika anjeun damel sareng sababaraha klaster, file kubeconfig anjeun ngandung setélan pikeun nyambungkeun ka sadaya klaster éta. Anjeun peryogi cara pikeun nyarioskeun paréntah kubectl klaster anu anjeun damel.

Dina klaster, Anjeun bisa nyieun sababaraha ngaranspasi - tipe klaster virtual dina klaster fisik. Kubectl ogé nangtukeun ngaranspasi mana nu dipaké dumasar kana file kubeconfig. Ieu hartosna anjeun ogé peryogi cara pikeun nyarioskeun paréntah kubectl naon ngaranspasi pikeun dianggo.

Dina bab ieu kami bakal ngajelaskeun kumaha éta tiasa dianggo sareng kumaha cara ngajantenkeunana sacara efektif.

Catet yén anjeun tiasa gaduh sababaraha file kubeconfig didaptarkeun dina variabel lingkungan KUBECONFIG. Dina hal ieu, sadaya file ieu bakal digabungkeun kana hiji konfigurasi umum nalika runtime. Anjeun ogé tiasa ngarobih file kubeconfig standar ku ngajalankeun kubectl sareng parameter --kubeconfig. Neuteup dokuméntasi resmi.

file kubeconfig

Hayu urang tingali naon anu aya dina file kubeconfig:

Kumaha ngagunakeun kubectl langkung efektif: pituduh anu lengkep
Sakumaha anjeun tiasa tingali, file kubeconfig ngandung sakumpulan kontéks. Kontéks diwangun ku tilu unsur:

  • Kluster - URL API tina server klaster.
  • Pamaké - Kapercayaan auténtikasi pamaké dina kluster.
  • Namespace - spasi ngaran dipaké nalika ngagabung kana klaster.

Dina prakték, aranjeunna mindeng ngagunakeun hiji konteks per klaster dina kubeconfig maranéhna. Nanging, anjeun tiasa gaduh sababaraha kontéks per klaster, dibédakeun ku pangguna atanapi rohangan ngaran. Tapi, konfigurasi multi-konteks ieu jarang, jadi biasana aya hiji-ka-hiji pemetaan antara klaster jeung konteks.

Iraha waé, salah sahiji kontéksna nyaéta ayeuna:

Kumaha ngagunakeun kubectl langkung efektif: pituduh anu lengkep
Nalika kubectl maca file konfigurasi, éta salawasna nyandak inpormasi tina kontéks ayeuna. Dina conto di luhur, kubectl bakal nyambung ka kluster Hare.

Sasuai, pikeun ngalih ka klaster anu sanés, anjeun kedah ngarobih kontéks ayeuna dina file kubeconfig:

Kumaha ngagunakeun kubectl langkung efektif: pituduh anu lengkep
Ayeuna kubectl bakal nyambung ka klaster Fox.

Pikeun pindah ka ngaranspasi béda dina klaster sarua, Anjeun kudu ngarobah nilai unsur ngaranspasi keur konteks ayeuna:

Kumaha ngagunakeun kubectl langkung efektif: pituduh anu lengkep
Dina conto di luhur, kubectl bakal ngagunakeun Fox cluster's Prod namespace (saméméhna Test namespace diatur).

Catet yén kubectl ogé nyayogikeun pilihan --cluster, --user, --namespace и --context, nu ngidinan Anjeun pikeun nimpa elemen individu jeung konteks ayeuna sorangan, paduli naon diatur dina kubeconfig. Neuteup kubectl options.

Dina tiori, anjeun tiasa sacara manual ngarobih setélan kubeconfig. Tapi teu merenah. Pikeun nyederhanakeun operasi ieu, aya sababaraha utilitas anu ngamungkinkeun anjeun ngarobih parameter sacara otomatis.

Paké kubectx

Utilitas anu kasohor pisan pikeun ngagentos antara klaster sareng ruang ngaran.

Utiliti nyadiakeun paréntah kubectx и kubens pikeun ngarobah kontéks ayeuna sareng rohangan ngaran masing-masing.

Sakumaha anu disebatkeun, ngarobih kontéks ayeuna hartosna ngarobih klaster upami anjeun ngan ukur gaduh hiji kontéks per klaster.

Ieu conto ngajalankeun paréntah ieu:

Kumaha ngagunakeun kubectl langkung efektif: pituduh anu lengkep
Intina, paréntah ieu ngan saukur ngédit file kubeconfig sakumaha anu dijelaskeun di luhur.

pikeun masang kubectx, turutan parentah dina Github.

Kadua paréntah ngadukung autocompletion tina kontéks sareng ngaran rohangan ngaran, anu ngaleungitkeun kabutuhan pikeun ngetik sacara lengkep. Parentah pikeun nyetel autocompletion di dieu.

fitur séjén mangpaat kubectx éta modeu interaktif. Gawéna babarengan jeung utiliti fzf, nu kudu dipasang misah. Masang fzf otomatis ngajadikeun mode interaktif sadia di kubectx. Sacara interaktif, anjeun tiasa milih kontéks sareng ruang ngaran ngalangkungan antarbeungeut milarian gratis interaktif anu disayogikeun ku fzf.

Ngagunakeun landian cangkang

Anjeun henteu peryogi alat anu misah pikeun ngarobih kontéks sareng ruang ngaran ayeuna sabab kubectl ogé nyayogikeun paréntah pikeun ieu. Sumuhun, tim kubectl config nyadiakeun subcommands pikeun ngédit file kubeconfig.

Di dieu aya sababaraha di antarana:

  • kubectl config get-contexts: mintonkeun sadaya konteks;
  • kubectl config current-context: meunang konteks ayeuna;
  • kubectl config use-context: ngarobah konteks ayeuna;
  • kubectl config set-context: Ngarobah unsur konteks.

Sanajan kitu, ngagunakeun paréntah ieu langsung teu pisan merenah sabab panjang. Anjeun tiasa ngadamel landian cangkang pikeun aranjeunna anu gampang dieksekusi.

Kuring nyiptakeun sakumpulan aliases dumasar kana paréntah ieu anu nyayogikeun fungsionalitas anu sami sareng kubectx. Di dieu anjeun tiasa ningali aranjeunna dina aksi:

Kumaha ngagunakeun kubectl langkung efektif: pituduh anu lengkep
Catet yén landian nganggo fzf pikeun nyayogikeun antarbeungeut gratis interaktif (sapertos mode interaktif kubectx). Ieu ngandung harti yén anjeun peryogi masang fzfngagunakeun aliases ieu.

Ieu mangrupikeun definisi aliases sorangan:

# Получить текущий контекст
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/^..//")"'

Pikeun nyetél landian ieu anjeun kedah nambihan definisi di luhur kana file anjeun ~/.bashrc atawa ~/.zshrc sareng reboot cangkang anjeun.

Ngagunakeun plugins

Kubectl ngamungkinkeun anjeun pikeun ngamuat plugins anu dieksekusi dina cara anu sami sareng paréntah dasar. Anjeun tiasa, contona, masang kubectl-foo plugin tur ngajalankeun eta ku executing paréntah kubectl foo.

Eta bakal merenah pikeun ngarobah konteks na namespace ku cara kieu, contona ku ngajalankeun kubectl ctx pikeun ngarobah konteks na kubectl ns pikeun ngaganti ngaranspasi.

Kuring parantos nyerat dua plugins anu ngalakukeun ieu:

Karya plugins dumasar kana aliases ti bagian saméméhna.

Ieu kumaha aranjeunna jalanna:

Kumaha ngagunakeun kubectl langkung efektif: pituduh anu lengkep
Catet yén plugins nganggo fzf pikeun nyayogikeun antarbeungeut milarian gratis anu interaktif (sapertos mode interaktif kubectx). Ieu ngandung harti yén anjeun peryogi masang fzfngagunakeun aliases ieu.

Pikeun masang plugins, anjeun kedah ngaunduh skrip cangkang anu namina kubectl-ctx и kubectl-ns ka diréktori mana wae dina variabel PATH anjeun sarta nyieun eta laksana kalawan e.g. chmod +x. Langsung saatos ieu anjeun bakal tiasa nganggo kubectl ctx и kubectl ns.

5. Ngurangan input kalawan autoaliases

Shell landian mangrupikeun cara anu saé pikeun nyepetkeun input. Proyék kubectl-alias ngandung ngeunaan 800 potong kompas pikeun paréntah kubectl dasar.

Anjeun panginten panginten - kumaha anjeun émut 800 landian? Tapi anjeun henteu kedah émut sadayana, sabab diwangun dumasar kana skéma saderhana, anu dijelaskeun di handap ieu:

Kumaha ngagunakeun kubectl langkung efektif: pituduh anu lengkep
Contona:

  1. kgpooyaml - kubectl meunang pods oyaml
  2. ksysgsvcw - kubectl -n kube-system meunang svc w
  3. ksysrmcm -kubectl -n kube-sistem rm cm
  4. kgdepallsl - kubectl meunang deployment sadayana sl

Sakumaha anjeun tiasa tingali, aliases diwangun ku komponén, nu masing-masing ngagambarkeun unsur husus tina paréntah kubectl. Unggal landian tiasa gaduh hiji komponén pikeun paréntah dasar, operasi, sareng sumber daya, sareng sababaraha komponén pikeun parameter. Anjeun saukur "populate" komponén ieu ti kénca ka katuhu nurutkeun diagram di luhur.

Diagram lengkep ayeuna nyaéta di GitHub. Aya anjeun ogé tiasa mendakan daptar lengkep aliases.

Contona, alias kgpooyamlall sarua jeung paréntah kubectl get pods -o yaml --all-namespaces.

Urutan relatif pilihan henteu penting: paréntah kgpooyamlall sarua jeung paréntah kgpoalloyaml.

Anjeun teu kedah nganggo sadaya komponén salaku aliases. Salaku conto k, kg, klo, ksys, kgpo ogé bisa dipaké. Sumawona, anjeun tiasa ngagabungkeun alias sareng paréntah biasa atanapi pilihan dina garis paréntah:

Contona:

  1. Malahan kubectl proxy anjeun tiasa nyerat k proxy.
  2. Malahan kubectl get roles anjeun tiasa nyerat kg roles (Ayeuna teu aya landian pikeun sumber Peran).
  3. Pikeun meunangkeun data pikeun pod husus, anjeun tiasa nganggo paréntah kgpo my-pod — kubectl get pod my-pod.

Perhatikeun yén sababaraha landian merlukeun argumen baris paréntah. Contona, alias kgpol hartosna kubectl get pods -l. Pilihan -l merlukeun argumen - spésifikasi labél. Lamun make alias bakal kasampak kawas kgpol app=ui.

Kusabab sababaraha landian merlukeun argumen, aliases a, f, sarta l kudu dipaké panungtungan.

Sacara umum, sakali anjeun nampi skéma ieu, anjeun sacara intuitif tiasa nurunkeun aliases tina paréntah anu anjeun hoyong laksanakeun sareng ngahémat waktos ngetik.

Pamasangan

Pikeun masang kubectl-alias, anjeun kedah ngaunduh filena .kubectl_aliases ti GitHub sareng lebetkeun kana file ~/.bashrc atawa ~/.zshrc:

source ~/.kubectl_aliases

Autocompletion

Sakumaha anu kami nyarios sateuacanna, anjeun sering nambihan kecap tambahan kana alias dina garis paréntah. Salaku conto:

$ kgpooyaml test-pod-d4b77b989

Upami anjeun nganggo paréntah kubectl parantosan, anjeun panginten parantos nganggo autocompletion pikeun hal sapertos nami sumberdaya. Tapi naha ieu tiasa dilakukeun nalika alias dianggo?

Ieu mangrupikeun patarosan anu penting pisan sabab upami autocompletion henteu jalan, anjeun bakal kaleungitan sababaraha kauntungan tina alias.

Jawabanna gumantung kana cangkang anu anjeun anggo:

  1. Pikeun Zsh, alias parantosan jalan out of the box.
  2. Pikeun Bash, hanjakalna, sababaraha padamelan diperyogikeun pikeun ngalengkepan otomatis.

Aktipkeun autocompletion pikeun landian dina Bash

Masalah sareng Bash nyaéta yén éta nyobian ngalengkepan (unggal anjeun pencét Tab) landian, sanés paréntah anu dirujuk ku alias (sakumaha Zsh, contona). Kusabab anjeun teu gaduh skrip parantosan pikeun sadaya 800 landian, autocompletion henteu jalan.

proyek lengkep-alias nyadiakeun solusi umum pikeun masalah ieu. Ieu nyambung ka mékanisme parantosan pikeun aliases, internal expands alias ka paréntah, sarta mulih pilihan parantosan pikeun paréntah réngsé. Ieu ngandung harti yén padding pikeun landian behaves persis sarua jeung pikeun paréntah pinuh.

Di handap ieu, kuring mimiti bakal ngajelaskeun kumaha carana install lengkep-alias lajeng kumaha ngonpigurasikeun eta pikeun ngaktipkeun parantosan pikeun sakabéh aliases kubectl.

Masang lengkep-alias

Anu mimiti, lengkep-alias gumantung kana bash-parantosan. Ku alatan éta, saméméh masang lengkep-alias, Anjeun kudu mastikeun yén bash-parantosan dipasang. Parentah pamasangan parantos disayogikeun sateuacana pikeun Linux sareng MacOS.

Catetan Penting pikeun Pamaké MacOS: Sapertos skrip autocompletion kubectl, complete-alias henteu tiasa dianggo sareng Bash 3.2, anu mangrupikeun standar dina MacOS. Khususna, alias lengkep gumantung kana bash-completion v2 (brew install bash-completion@2), anu merlukeun sahenteuna Bash 4.1. Ieu ngandung harti yén pikeun nganggo alias lengkep dina MacOS anjeun kedah masang versi Bash anu langkung énggal.

Anjeun kudu ngundeur naskah bash_completion.sh ti Repository GitHub sareng kalebet kana file anjeun ~/.bashrc:

source ~/bash_completion.sh

Saatos rebooting cangkang, lengkep-alias bakal dipasang pinuh.

Aktipkeun autocompletion pikeun aliases kubectl

Téhnisna lengkep-alias nyadiakeun fungsi wrapper _complete_alias. Pungsi ieu mariksa landian sareng mulangkeun petunjuk parantosan pikeun paréntah landian.

Pikeun ngahubungkeun fungsi sareng landian khusus, anjeun kedah nganggo mékanisme Bash anu diwangun kumplit, pikeun masang _complete_alias salaku fungsi landian parantosan.

Salaku conto, hayu urang nyandak alias k, anu nangtung pikeun paréntah kubectl. pikeun masang _complete_alias Salaku fungsi pelengkap pikeun landian ieu, anjeun kedah ngajalankeun paréntah di handap ieu:

$ complete -F _complete_alias k

Hasilna nyaéta iraha waé anjeun ngalengkepan otomatis alias k, fungsina disebut _complete_alias, anu mariksa landian sareng mulangkeun petunjuk parantosan pikeun paréntah kubectl.

Salaku conto kadua, hayu urang nyandak alias kg, nu ngalambangkeun kubectl get:

$ complete -F _complete_alias kg

Sapertos dina conto sateuacana, nalika anjeun ngalengkepan otomatis kg, anjeun nampi petunjuk parantosan anu sami anu anjeun pikahoyong pikeun kubectl get.

Catet yén anjeun tiasa nganggo alias lengkep pikeun landian naon waé dina sistem anjeun.

Ku alatan éta, pikeun ngaktipkeun autocompletion pikeun sakabéh aliases kubectl, Anjeun kudu ngajalankeun paréntah di luhur pikeun tiap sahijina. Potongan di handap ieu leres-leres, upami anjeun parantos nyetél kubectl-alias ~/.kubectl-aliases:

for _a in $(sed '/^alias /!d;s/^alias //;s/=.*$//' ~/.kubectl_aliases); 
do
  complete -F _complete_alias "$_a"
done

Ieu sapotong kode perlu ditempatkeun di Anjeun ~/.bashrc, balikan deui cangkang paréntah jeung autocompletion bakal sadia pikeun sakabéh 800 aliases kubectl.

6. Ngalegaan kubectl kalawan plugins

Dimimitian ku vérsi 1.12, kubectl ngarojong mékanisme plugin, nu ngidinan Anjeun pikeun dilegakeun pungsi na kalawan paréntah tambahan.

Mun anjeun wawuh jeung mékanisme plugin Git, teras plugins kubectl diwangun dina prinsip anu sami.

Dina bab ieu, urang bakal nutupan kumaha carana install plugins, dimana manggihan eta, sarta kumaha carana nyieun plugins anjeun sorangan.

Masang plugins

Kubectl plugins disebarkeun salaku file laksana basajan kalawan ngaran kawas kubectl-x. awalan kubectl- diperlukeun, dituturkeun ku subcommand kubectl anyar nu ngidinan Anjeun pikeun nelepon plugin nu.

Salaku conto, plugin halo bakal disebarkeun salaku file anu disebut kubectl-hello.

Pikeun masang plugin, anjeun kedah nyalin file kubectl-x kana sagala diréktori di PATH anjeun sarta nyieun laksana, contona jeung chmod +x. Langsung saatos ieu anjeun tiasa nelepon plugin kalawan kubectl x.

Anjeun tiasa nganggo paréntah di handap ieu pikeun daptar sadaya plugins anu ayeuna dipasang dina sistem anjeun:

$ kubectl plugin list

Paréntah ieu ogé bakal ningalikeun peringatan upami anjeun gaduh sababaraha plugins sareng nami anu sami, atanapi upami aya file plugins anu henteu tiasa dieksekusi.

Milarian sareng masang plugins nganggo Krew

Plugin Kubectl tiasa dibagikeun atanapi dianggo deui sapertos bungkusan parangkat lunak. Tapi dimana anjeun tiasa mendakan plugins anu dibagikeun ku batur?

Proyék Krew Tujuanana pikeun nyayogikeun solusi anu ngahijikeun pikeun ngabagi, milarian, masang sareng ngatur plugins kubectl. Proyék éta nyauran dirina salaku "manajer pakét pikeun plugins kubectl" (Krew sami sareng nyieun bir).

Krew mangrupikeun daptar plugins kubectl anu tiasa anjeun pilih sareng pasang. Dina waktos anu sami, Krew ogé plugin pikeun kubectl.

Ieu ngandung harti yén masang Krew tiasa dianggo sapertos masang plugin kubectl anu sanés. Anjeun tiasa mendakan petunjuk lengkep di Kaca GitHub.

Paréntah Krew anu paling penting nyaéta:

# Поиск в списке плагинов
$ kubectl krew search [<query>]
# Посмотреть информацию о плагине
$ kubectl krew info <plugin>
# Установить плагин
$ kubectl krew install <plugin>
# Обновить все плагины до последней версии
$ kubectl krew upgrade
# Посмотреть все плагины, установленные через Krew
$ kubectl krew list
# Деинсталлировать плагин
$ kubectl krew remove <plugin>

Punten dicatet yén masang plugins nganggo Krew henteu ngaganggu masang plugins nganggo metode standar anu dijelaskeun di luhur.

Perhatikeun yén paréntah kubectl krew list ngan ukur ningalikeun plugins anu dipasang nganggo Krew, sedengkeun paréntahna kubectl plugin list Daptar sadaya plugins, nyaéta, anu dipasang nganggo Krew sareng anu dipasang ku cara anu sanés.

Milarian plugins di tempat sanés

Krew mangrupakeun proyék ngora, ayeuna di na daptar ngan ngeunaan 30 plugins. Upami anjeun henteu mendakan anu anjeun peryogikeun, anjeun tiasa mendakan plugins di tempat sanés, sapertos GitHub.

Abdi nyarankeun ningali bagian GitHub kubectl-plugins. Aya anjeun bakal manggihan puluhan plugins sadia nu patut dipariksa kaluar.

Nulis plugins anjeun sorangan

anjeun tiasa sorangan nyieun plugins - Teu teuas. Anjeun kedah nyiptakeun eksekusi anu ngalakukeun naon anu anjeun peryogikeun, namikeunana kubectl-x tur masang sakumaha ditétélakeun di luhur.

Filena tiasa janten skrip bash, skrip python, atanapi aplikasi GO anu disusun - henteu masalah. Hiji-hijina kaayaan nyaéta yén éta tiasa langsung dieksekusi dina sistem operasi.

Hayu urang ngadamel conto plugin ayeuna. Dina bagian saméméhna, anjeun nganggo paréntah kubectl pikeun daptar wadah pikeun unggal pod. Ieu gampang ngahurungkeun paréntah ieu kana plugin nu bisa nelepon jeung e.g. kubectl img.

Jieun file kubectl-img eusi handap:

#!/bin/bash
kubectl get pods -o custom-columns='NAME:metadata.name,IMAGES:spec.containers[*].image'

Ayeuna damel file executable kalawan chmod +x kubectl-img sareng pindahkeun kana diréktori mana waé dina PATH anjeun. Langsung saatos ieu anjeun tiasa nganggo plugin kubectl img.

Sakumaha anu disebatkeun, plugins kubectl tiasa ditulis dina basa program atanapi skrip. Upami anjeun nganggo skrip cangkang, kauntungan tiasa kalayan gampang nyauran kubectl tina jero plugin. Nanging, anjeun tiasa nyerat plugins anu langkung kompleks dina basa pamrograman nyata nganggo perpustakaan klien Kubernetes. Upami anjeun nganggo Go, anjeun ogé tiasa nganggo perpustakaan cli-runtime, nu aya husus pikeun nulis kubectl plugins.

Kumaha ngabagikeun plugins anjeun

Upami anjeun pikir plugins anjeun tiasa mangpaat pikeun batur, punten bagikeunana dina GitHub. Pastikeun pikeun nambahkeun aranjeunna kana topik kubectl-plugins.

Anjeun oge bisa menta nu plugin Anjeun ditambahkeun kana Daptar krew. Parentah ngeunaan cara ngalakukeun ieu aya dina Repositories GitHub.

Paréntah réngsé

Plugin ayeuna henteu ngadukung autocompletion. Nyaéta, anjeun kedah ngalebetkeun nami lengkep plugin sareng nami lengkep argumen.

Repository kubectl GitHub pikeun fungsi ieu gaduh pamundut kabuka. Janten kamungkinan yén fitur ieu bakal dilaksanakeun dina waktos ka hareup.

Sing salamet!!!

Naon deui maca dina topik:

  1. Tilu tingkat autoscaling di Kubernetes sareng cara ngagunakeunana sacara efektif.
  2. Kubernetes dina sumanget piracy kalawan template pikeun palaksanaan.
  3. Saluran kami Kira-kira Kubernetes di Telegram.

sumber: www.habr.com

Mésér hosting anu dipercaya pikeun situs anu gaduh panyalindungan DDoS, server VPS VDS 🔥 Meser hosting situs wéb anu tiasa dipercaya nganggo panyalindungan DDoS, server VPS VDS | ProHoster