Cara nggunakake kubectl luwih efektif: pandhuan rinci

Cara nggunakake kubectl luwih efektif: pandhuan rinci
Yen sampeyan nggarap Kubernetes, mesthine kubectl minangka salah sawijining utilitas sing paling sampeyan gunakake. Lan yen sampeyan nglampahi akeh wektu kanggo nggarap alat tartamtu, sampeyan kudu sinau kanthi apik lan sinau cara nggunakake kanthi efektif.

tim Kubernetes aaS saka Mail.ru nerjemahake artikel dening Daniel Weibel ing ngendi sampeyan bakal nemokake tips lan trik kanggo nggarap kubectl kanthi efektif. Iki uga bakal mbantu sampeyan ngerteni luwih jero babagan Kubernetes.

Miturut penulis, tujuan artikel kasebut yaiku supaya karya saben dina karo Kubernetes ora mung luwih efisien, nanging uga luwih nyenengake!

Pambuka: Apa iku kubectl

Sadurunge sampeyan bisa sinau nggunakake kubectl kanthi luwih efektif, sampeyan kudu entuk pangerten dhasar babagan apa iku lan cara kerjane.

Saka sudut pandang pangguna, kubectl minangka panel kontrol sing ngidini sampeyan nindakake operasi Kubernetes.

Secara teknis, kubectl minangka klien API Kubernetes.

Kubernetes API minangka HTTP REST API. API iki minangka antarmuka panganggo Kubernetes sing bener, sing dikontrol kanthi lengkap. Iki tegese saben operasi Kubernetes kapapar minangka endpoint API lan bisa digawe kanthi panjalukan HTTP kanggo endpoint kasebut.

Mula, tugas utama kubectl yaiku nggawe panjalukan HTTP menyang API Kubernetes:

Cara nggunakake kubectl luwih efektif: pandhuan rinci
Kubernetes minangka sistem sing berorientasi sumber daya. Iki tegese njaga sumber daya internal lan kabeh operasi Kubernetes minangka operasi CRUD.

Sampeyan bisa ngontrol lengkap Kubernetes kanthi ngatur sumber daya kasebut, lan Kubernetes nemtokake apa sing kudu ditindakake adhedhasar kahanan sumber daya saiki. Mulane, referensi API Kubernetes diatur minangka dhaptar jinis sumber daya karo operasi sing gegandhengan.

Ayo katon ing conto.

Contone, sampeyan pengin nggawe sumber ReplicaSet. Kanggo nindakake iki, sampeyan njlèntrèhaké ReplicaSet ing file kanthi jeneng replicaset.yaml, banjur jalanake perintah kasebut:

$ kubectl create -f replicaset.yaml

Iki bakal nggawe sumber ReplicaSet. Nanging apa sing kedadeyan ing mburi layar?

Kubernetes duwe operasi nggawe ReplicaSet. Kaya operasi liyane, iki kapapar minangka endpoint API. Titik pungkasan API khusus kanggo operasi iki katon kaya iki:

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

Titik pungkasan API kanggo kabeh operasi Kubernetes bisa ditemokake ing referensi API (kalebu titik pungkasan ing ndhuwur). Kanggo nggawe panjaluk nyata menyang titik pungkasan, sampeyan kudu nambah URL server API dhisik menyang jalur titik pungkasan sing kadhaptar ing referensi API.

Mula, nalika sampeyan nindakake printah ing ndhuwur, kubectl ngirim panjalukan HTTP POST menyang titik pungkasan API ing ndhuwur. Definisi ReplicaSet sing diwenehake ing file kasebut replicaset.yaml, dikirim ing awak panyuwunan.

Iki cara kubectl dianggo kanggo kabeh printah sing sesambungan karo cluster Kubernetes. Ing kabeh kasus kasebut, kubectl mung nggawe panjalukan HTTP menyang titik pungkasan API Kubernetes sing cocog.

Elinga yen sampeyan bisa ngatur Kubernetes kanthi nggunakake sarana kayata curlkanthi ngirim panjalukan HTTP kanthi manual menyang API Kubernetes. Kubectl mung nggampangake nggunakake API Kubernetes.

Iki minangka dhasar apa kubectl lan cara kerjane. Nanging ana liyane babagan API Kubernetes sing kudu dingerteni saben pangguna kubectl. Ayo goleki kanthi cepet menyang jagad batin Kubernetes.

Donya batin Kubernetes

Kubernetes kasusun saka sakumpulan komponen independen sing mlaku minangka proses kapisah ing kelenjar kluster. Sawetara komponen mlaku ing kelenjar master, liyane ing kelenjar buruh, saben komponen nindakake tugas tartamtu dhewe.

Ing ngisor iki minangka komponen paling penting ing simpul utama:

  1. Kolong - nyimpen definisi sumber daya (biasane lsp).
  2. server API - nyedhiyakake API lan ngatur panyimpenan.
  3. Manajer Kontrol - Mesthekake yen status sumber daya tundhuk karo spesifikasi.
  4. Penjadwal - jadwal pods ing kelenjar buruh.

Lan iki minangka salah sawijining komponen paling penting ing simpul pekerja:

  1. kubelet - ngatur peluncuran kontaner ing simpul kerja.

Kanggo mangerteni carane komponen kasebut bisa bebarengan, ayo goleki conto.

Ayo nganggep sampeyan wis rampung kubectl create -f replicaset.yaml, sawise iku kubectl nggawe request HTTP POST kanggo Titik pungkasan API ReplicaSet (ngliwati definisi sumber ReplicaSet).

Apa sing kedadeyan ing kluster?

  1. Sawise nindakake kubectl create -f replicaset.yaml Server API nyimpen definisi sumber ReplicaSet ing panyimpenan:

    Cara nggunakake kubectl luwih efektif: pandhuan rinci

  2. Sabanjure, pengontrol ReplicaSet diluncurake ing manajer pengontrol, sing nangani nggawe, modifikasi lan mbusak sumber ReplicaSet:

    Cara nggunakake kubectl luwih efektif: pandhuan rinci

  3. Pengontrol ReplicaSet nggawe definisi pod kanggo saben replika ReplicaSet (miturut cithakan pod ing definisi ReplicaSet) lan nyimpen ing panyimpenan:

    Cara nggunakake kubectl luwih efektif: pandhuan rinci

  4. Penjadwal diluncurake, nelusuri pod sing durung ditugasake menyang node pekerja:

    Cara nggunakake kubectl luwih efektif: pandhuan rinci

  5. Penjadwal milih simpul pekerja sing cocok kanggo saben pod lan nambah informasi iki menyang definisi pod ing toko:

    Cara nggunakake kubectl luwih efektif: pandhuan rinci

  6. Ing simpul buruh sing ditugasake pod, Kubelet diluncurake, nglacak pod sing ditugasake ing simpul iki:

    Cara nggunakake kubectl luwih efektif: pandhuan rinci

  7. Kubelet maca definisi pod saka panyimpenan lan nuntun runtime wadhah, kayata Docker, kanggo miwiti wadhah ing simpul:

    Cara nggunakake kubectl luwih efektif: pandhuan rinci

Ing ngisor iki versi teks deskripsi iki.

Panjaluk API menyang titik pungkasan nggawe ReplicaSet diproses dening server API. Server API authenticates request lan nyimpen definisi sumber ReplicaSet ing panyimpenan.

Acara iki miwiti pengontrol ReplicaSet, yaiku subproses saka manajer pengontrol. Pengontrol ReplicaSet ngawasi nggawe, nganyari, lan mbusak sumber ReplicaSet ing toko lan nampa kabar acara nalika kedadeyan kasebut.

Tugas pengontrol ReplicaSet yaiku kanggo mesthekake yen jumlah pod ReplicaSet sing dibutuhake ana. Ing conto kita, durung ana pods, mula pengontrol ReplicaSet nggawe definisi pod kasebut (miturut cithakan pod ing definisi ReplicaSet) lan nyimpen ing panyimpenan.

Nggawe pod anyar dipicu dening panjadwal sing nglacak definisi pod sing durung dijadwalake kanggo node pekerja. Penjadwal milih simpul pekerja sing cocok kanggo saben pod lan nganyari definisi pod ing gudang.

Elinga yen nganti saiki, ora ana kode beban kerja sing mlaku ing ngendi wae ing kluster. Kabeh sing wis ditindakake nganti saiki - iki nggawe lan nganyari sumber daya ing repositori ing simpul master.

Acara pungkasan nyebabake Kubelets, sing ngawasi polong sing dijadwalake kanggo simpul pekerja. Kubelet saka simpul pekerja sing diinstal pod ReplicaSet sampeyan kudu nglatih runtime wadah, kayata Docker, kanggo ndownload gambar wadhah sing dibutuhake lan mbukak.

Ing wektu iki, aplikasi ReplicaSet sampeyan pungkasane mlaku!

Peran saka Kubernetes API

Kaya sing sampeyan deleng ing conto sadurunge, komponen Kubernetes (kajaba server lan panyimpenan API) nonton owah-owahan sumber daya ing panyimpenan lan ngganti informasi babagan sumber daya ing panyimpenan.

Mesthi, komponen kasebut ora langsung sesambungan karo panyimpenan, nanging mung liwat API Kubernetes.

Gatèkna conto ing ngisor iki:

  1. Pengontrol ReplicaSet nggunakake titik pungkasan API dhaftar ReplicaSets karo parameter watch kanggo ngawasi owah-owahan kanggo sumber ReplicaSet.
  2. Pengontrol ReplicaSet nggunakake titik pungkasan API nggawe Pod (nggawe polong) kanggo nggawe polong.
  3. Penjadwal nggunakake titik pungkasan API patch pod (sunting pod) kanggo nganyari pods karo informasi bab simpul buruh sing dipilih.

Kaya sing sampeyan ngerteni, iki API sing padha sing diakses kubectl. Nggunakake API sing padha kanggo komponen internal lan pangguna eksternal minangka konsep dhasar ing desain Kubernetes.

Saiki kita bisa ngringkes cara kerja Kubernetes:

  1. Toko panyimpenan nyatakake, yaiku sumber daya Kubernetes.
  2. Server API nyedhiyakake antarmuka menyang panyimpenan ing wangun API Kubernetes.
  3. Kabeh komponen lan pangguna Kubernetes liyane maca, mirsani, lan ngapusi negara (sumber) Kubernetes liwat API.

Ngerti konsep iki bakal mbantu sampeyan ngerti kubectl luwih apik lan entuk manfaat sing paling apik.

Saiki ayo goleki sawetara tips lan trik khusus sing bakal mbantu nambah produktivitas nganggo kubectl.

1. Nyepetake input nggunakake printah completion

Salah sawijining teknik sing paling migunani, nanging asring diabaikan, kanggo ningkatake kinerja karo kubectl yaiku completion printah.

Completion printah ngidini sampeyan ngrampungake bagean printah kubectl kanthi otomatis nggunakake tombol Tab. Iki bisa digunakake kanggo subcommands, opsi, lan argumen, kalebu sing rumit kaya jeneng sumber.

Deleng carane ngrampungake perintah kubectl:

Cara nggunakake kubectl luwih efektif: pandhuan rinci
Rampung printah bisa digunakake kanggo cangkang Bash lan Zsh.

Pandhuan Resmi ngemot instruksi rinci kanggo nyetel autocompletion, nanging ing ngisor iki kita bakal menehi kutipan singkat.

Carane completion printah dianggo

Completion printah minangka fitur cangkang sing dianggo nggunakake skrip completion. Skrip ekstensi minangka skrip cangkang sing nemtokake prilaku ekstensi kanggo perintah tartamtu.

Kubectl kanthi otomatis ngasilake lan ngasilake skrip ekstensi kanggo Bash lan Zsh nggunakake printah ing ngisor iki:

$ kubectl completion bash

Utawa:

$ kubectl completion zsh

Ing teori, cukup nyambungake output printah kasebut menyang cangkang printah sing cocog supaya kubectl bisa nglengkapi perintah kasebut.

Ing laku, cara sambungan beda kanggo Bash (kalebu beda antarane Linux lan MacOS) lan Zsh. Ing ngisor iki kita bakal ndeleng kabeh opsi kasebut.

Bash ing Linux

Skrip Bash completion gumantung saka paket bash-completion, dadi sampeyan kudu nginstal dhisik:

$ sudo apt-get install bash-completion

Utawa:

$ yum install bash-completion

Sampeyan bisa nyoba manawa paket wis diinstal kanthi sukses nggunakake printah ing ngisor iki:

$ type _init_completion

Yen iki ngasilake kode fungsi cangkang, banjur bash-completion wis diinstal kanthi bener. Yen printah menehi kesalahan "Ora Ditemukake", sampeyan kudu nambah baris ing ngisor iki menyang file sampeyan ~ / .bashrc:

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

Apa perlu kanggo nambah baris iki kanggo file ~ / .bashrc utawa ora gumantung ing manajer paket sing digunakake kanggo nginstal bash-completion. Iki perlu kanggo APT, nanging ora kanggo YUM.

Sawise nginstal bash-completion, sampeyan kudu ngatur kabeh supaya script completion kubectl diaktifake ing kabeh sesi shell.

Salah siji cara kanggo nindakake iki yaiku nambah baris ing ngisor iki menyang file ~ / .bashrc:

source <(kubectl completion bash)

Cara liya yaiku nambahake skrip ekstensi kubectl menyang direktori /etc/bash_completion.d (nggawe yen ora ana):

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

Kabeh skrip tambahan ing katalog /etc/bash_completion.d kanthi otomatis kalebu ing bash-completion.

Loro-lorone opsi padha ditrapake.

Sawise miwiti maneh cangkang, kubectl printah completion bakal bisa.

Bash ing MacOS

Ing MacOS, persiyapan luwih rumit. Kasunyatane, kanthi standar, MacOS nggunakake Bash versi 3.2, lan skrip autocompletion kubectl mbutuhake versi Bash paling ora 4.1 lan ora bisa digunakake ing Bash 3.2.

Ana masalah lisensi sing ana gandhengane karo nggunakake versi Bash sing lawas ing MacOS. Bash versi 4 dilisensi ing GPLv3, sing ora didhukung Apple.

Kanggo ngatur autocompletion kubectl ing MacOS, sampeyan kudu nginstal versi Bash sing luwih anyar. Sampeyan uga bisa nyetel Bash sing dianyari minangka cangkang standar, sing bakal nylametake sampeyan akeh masalah ing mangsa ngarep. Ora angel, rincian diwenehi ing artikel "Nganyari Bash ing MacOS".

Sadurunge nerusake, priksa manawa sampeyan nggunakake versi Bash sing paling anyar (mriksa output bash --version).

Skrip rampung Bash beda-beda miturut proyek bash-completion, dadi sampeyan kudu nginstal dhisik.

Sampeyan bisa nginstal bash-completion nggunakake Homebrew:

$ brew install bash-completion@2

iku @2 singkatan saka bash-completion versi 2. kubectl autocompletion mbutuhake bash-completion v2, lan bash-completion v2 mbutuhake minimal Bash versi 4.1.

output printah brew-install ngemot bagean Caveats, sing nemtokake apa sing kudu ditambahake menyang file kasebut ~/.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"

Nanging, aku nyaranake nambah baris iki ora kanggo ~/.bash_profile, lan ing ~/.bashrc. Ing kasus iki, autocompletion bakal kasedhiya ora mung ing utama, nanging uga ing cangkang printah anak.

Sawise miwiti maneh cangkang printah, sampeyan bisa verifikasi instalasi bener nggunakake printah ing ngisor iki:

$ type _init_completion

Yen sampeyan ndeleng fungsi cangkang ing output, kabeh wis diatur kanthi bener.

Saiki kita kudu mesthekake yen autocompletion kubectl diaktifake ing kabeh sesi.

Salah siji cara kanggo nambah baris ing ngisor iki kanggo sampeyan ~/.bashrc:

source <(kubectl completion bash)

Cara kapindho yaiku nambah skrip pelengkap otomatis menyang folder kasebut /usr/local/etc/bash_completion.d:

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

Cara iki mung bisa digunakake yen sampeyan nginstal bash-completion nggunakake Homebrew. Ing kasus iki, bash-completion ngemot kabeh skrip saka direktori iki.

Yen sampeyan nginstal kubectl nggunakake Homebrew, banjur ora perlu nindakake langkah sadurunge, amarga skrip autocompletion bakal diselehake kanthi otomatis ing folder kasebut /usr/local/etc/bash_completion.d sak instalasi. Ing kasus iki, kubectl autocompletion bakal wiwit bisa digunakake sanalika sampeyan nginstal bash-completion.

AkibatΓ©, kabeh opsi iki padha.

zsh

Skrip autocompletion kanggo Zsh ora mbutuhake dependensi. Sampeyan mung kudu ngaktifake nalika mbukak cangkang perintah.

Sampeyan bisa nindakake iki kanthi nambah baris menyang ~/.zshrc berkas:

source <(kubectl completion zsh)

Yen sampeyan nampa kesalahan not found: compdef sawise miwiti maneh cangkang, sampeyan kudu ngaktifake fungsi builtin compdef. Sampeyan bisa ngaktifake kanthi nambahake menyang wiwitan file ~/.zshrc ing ngisor iki:

autoload -Uz compinit
compinit

2. Cepet ndeleng spesifikasi sumber daya

Nalika nggawe definisi sumber daya YAML, sampeyan kudu ngerti lapangan lan makna kanggo sumber daya kasebut. Siji panggonan kanggo nggoleki informasi iki ing referensi API, kang ngandhut specifications lengkap kanggo kabeh sumber.

Nanging, ngalih menyang browser web saben-saben sampeyan kudu nggoleki soko ora trep. Mulane kubectl menehi printah kubectl explain, sing nuduhake spesifikasi kabeh sumber daya ing terminal sampeyan.

Format printah kaya ing ngisor iki:

$ kubectl explain resource[.field]...

Printah kasebut bakal ngasilake spesifikasi sumber utawa lapangan sing dijaluk. Informasi sing ditampilake padha karo sing ana ing manual API.

standar kubectl explain nuduhake mung tingkat pisanan nesting lapangan.

Delengen kaya apa Sampeyan banjur bisa.

Sampeyan bisa nampilake kabeh wit yen sampeyan nambahake pilihan --recursive:

$ kubectl explain deployment.spec --recursive

Yen sampeyan ora ngerti persis sumber daya sing dibutuhake, sampeyan bisa nampilake kabeh kanthi printah ing ngisor iki:

$ kubectl api-resources

Printah iki nampilake jeneng sumber ing wangun jamak, f.eks. deployments tinimbang deployment. Uga nampilake jeneng singkat, contone deploy, kanggo sumber daya sing duwe. Aja kuwatir babagan bedane iki. Kabeh opsi jeneng iki padha karo kubectl. Sing, sampeyan bisa nggunakake salah siji saka wong-wong mau kanggo kubectl explain.

Kabeh printah ing ngisor iki padha karo:

$ kubectl explain deployments.spec
# ΠΈΠ»ΠΈ
$ kubectl explain deployment.spec
# ΠΈΠ»ΠΈ        
$ kubectl explain deploy.spec

3. Gunakake format output kolom adat

Format output printah 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 iki trep, nanging ngemot informasi sing winates. Dibandhingake karo format definisi sumber daya lengkap, mung sawetara kolom sing ditampilake ing kene.

Ing kasus iki, sampeyan bisa nggunakake format output kolom khusus. Iku ngijini sampeyan kanggo nemtokake apa data kanggo output. Sampeyan bisa nampilake sembarang kolom sumber minangka kolom kapisah.

Panggunaan format khusus ditemtokake nggunakake pilihan:

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

Sampeyan bisa nemtokake saben kolom output minangka pasangan <header>:<jsonpath>ngendi <header> iku jeneng kolom, lan <jsonpath> - ekspresi sing nemtokake lapangan sumber daya.

Ayo katon ing conto prasaja:

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

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

Output ngemot siji kolom kanthi jeneng polong.

Ekspresi pilihan milih jeneng pod saka lapangan metadata.name. Iki amarga jeneng pod ditetepake ing kolom jeneng anak metadata ing deskripsi sumber polong. Rincian liyane bisa ditemokake ing Pandhuan API utawa ketik printah kubectl explain pod.metadata.name.

Saiki ayo ngomong sampeyan pengin nambah kolom ekstra kanggo output, contone nuduhake simpul saben pod mlaku ing. Kanggo nindakake iki, sampeyan mung bisa nambah spesifikasi kolom sing cocog menyang opsi 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 jeneng simpul saka spec.nodeName - nalika pod ditugasake menyang simpul, jenenge ditulis ing lapangan spec.nodeName spesifikasi sumber daya pod. Informasi sing luwih rinci bisa ditemokake ing output kubectl explain pod.spec.nodeName.

Elinga yen kolom sumber daya Kubernetes sensitif huruf cilik.

Sampeyan bisa ndeleng sembarang kolom sumber daya minangka kolom. Cukup deleng spesifikasi sumber daya lan coba nganggo lapangan sing disenengi.

Nanging luwih dhisik, ayo goleki ekspresi pilihan lapangan.

Ekspresi JSONPath

Ekspresi kanggo milih lapangan sumber daya adhedhasar JSONPath.

JSONPath minangka basa kanggo njupuk data saka dokumen JSON. Milih lapangan siji minangka kasus panggunaan paling gampang kanggo JSONPath. Dheweke duwe akeh kemungkinan liyane, kalebu pamilih, saringan lan liya-liyane.

Kubectl nerangake ndhukung sawetara winates fitur JSONPath. Kemungkinan lan conto panggunaan kasebut diterangake ing ngisor iki:

# Π’Ρ‹Π±Ρ€Π°Ρ‚ΡŒ всС элСмСнты списка
$ 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 [] utamanΓ© penting. Akeh kolom sumber daya Kubernetes minangka dhaptar, lan operator iki ngidini sampeyan milih anggota dhaptar kasebut. Asring digunakake karo wildcard kaya [*] kanggo milih kabeh unsur dhaftar.

Tuladha aplikasi

Kemungkinan nggunakake format output kolom khusus ora ana telas, amarga sampeyan bisa nampilake lapangan utawa kombinasi lapangan sumber daya ing output. Ing ngisor iki sawetara conto aplikasi, nanging aja lali njelajah dhewe lan golek aplikasi sing cocog karo sampeyan.

  1. Nampilake gambar wadhah kanggo 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

    Printah iki nampilake jeneng gambar wadhah kanggo saben pod.

    Elinga yen pod bisa ngemot sawetara wadhah, banjur jeneng gambar bakal ditampilake ing siji baris, dipisahake karo koma.

  2. Nampilake zona kasedhiyan simpul:
    $ 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

    Printah iki migunani yen kluster sampeyan di-host ing awan umum. Nampilake zona kasedhiyan kanggo saben simpul.

    Zona kasedhiyan minangka konsep awan sing mbatesi zona replikasi menyang wilayah geografis.

    Zona kasedhiya kanggo saben simpul dipikolehi liwat label khusus - failure-domain.beta.kubernetes.io/zone. Yen kluster mlaku ing awan umum, label iki digawe kanthi otomatis lan diisi karo jeneng zona kasedhiyan kanggo saben simpul.

    Label dudu bagean saka spesifikasi sumber daya Kubernetes, dadi sampeyan ora bakal nemokake informasi babagan kasebut Pandhuan API. Nanging, bisa dideleng (kaya label liyane) yen sampeyan njaluk informasi babagan simpul ing format YAML utawa JSON:

    $ kubectl get nodes -o yaml
    # ΠΈΠ»ΠΈ
    $ kubectl get nodes -o json

    Iki minangka cara sing apik kanggo sinau babagan sumber daya, saliyane kanggo sinau spesifikasi sumber daya.

4. Gampang ngalih antarane klompok lan namespaces

Nalika kubectl nggawe panjalukan kanggo Kubernetes API, pisanan maca file kubeconfig kanggo njaluk kabeh paramèter sing perlu kanggo sambungan.

Kanthi gawan file kubeconfig punika ~/.kube/config. Biasane file iki digawe utawa dianyari kanthi prentah khusus.

Nalika sampeyan nggarap macem-macem klompok, file kubeconfig sampeyan ngemot setelan kanggo nyambungake menyang kabeh klompok kasebut. Sampeyan mbutuhake cara kanggo ngandhani printah kubectl kluster sing digunakake.

Ing kluster, sampeyan bisa nggawe sawetara ruang jeneng-jinis kluster virtual ing kluster fisik. Kubectl uga nemtokake spasi jeneng sing arep digunakake adhedhasar file kubeconfig. Iki tegese sampeyan uga butuh cara kanggo ngandhani printah kubectl apa namespace sing bisa digunakake.

Ing bab iki kita bakal nerangake cara kerjane lan cara supaya bisa digunakake kanthi efektif.

Elinga yen sampeyan duwe sawetara file kubeconfig sing kadhaptar ing variabel lingkungan KUBECONFIG. Ing kasus iki, kabeh file kasebut bakal digabung dadi siji konfigurasi umum nalika runtime. Sampeyan uga bisa ngganti file kubeconfig standar kanthi mbukak kubectl kanthi parameter --kubeconfig. Delengen dokumentasi resmi.

file kubeconfig

Ayo ndeleng apa sing ana ing file kubeconfig:

Cara nggunakake kubectl luwih efektif: pandhuan rinci
Kaya sing sampeyan ngerteni, file kubeconfig ngemot sakumpulan konteks. Konteks kasusun saka telung unsur:

  • Kluster - URL API saka server kluster.
  • Panganggo - kredensial otentikasi pangguna ing kluster.
  • Namespace - ruang jeneng sing digunakake nalika gabung karo kluster.

Ing laku, padha kerep nggunakake siji konteks saben kluster ing kubeconfig. Nanging, sampeyan bisa duwe macem-macem konteks saben kluster, dibedakake miturut pangguna utawa ruang jeneng. Nanging, konfigurasi multi-konteks iki ora umum, mula biasane ana pemetaan siji-kanggo-siji ing antarane klompok lan konteks.

Ing sembarang wektu tartamtu, salah siji saka konteks saiki:

Cara nggunakake kubectl luwih efektif: pandhuan rinci
Nalika kubectl maca file konfigurasi, iku tansah njupuk informasi saka konteks saiki. Ing conto ing ndhuwur, kubectl bakal nyambung menyang kluster Hare.

Mulane, kanggo ngalih menyang kluster liyane, sampeyan kudu ngganti konteks saiki ing file kubeconfig:

Cara nggunakake kubectl luwih efektif: pandhuan rinci
Saiki kubectl bakal nyambung menyang kluster Fox.

Kanggo ngalih menyang papan jeneng sing beda ing kluster sing padha, sampeyan kudu ngganti nilai unsur ruang jeneng kanggo konteks saiki:

Cara nggunakake kubectl luwih efektif: pandhuan rinci
Ing conto ing ndhuwur, kubectl bakal nggunakake Fox cluster's Prod namespace (sadurunge Test namespace wis disetel).

Elinga yen kubectl uga menehi pilihan --cluster, --user, --namespace ΠΈ --context, sing ngijini sampeyan kanggo nimpa unsur individu lan konteks saiki dhewe, preduli saka apa sing disetel ing kubeconfig. Delengen kubectl options.

Ing teori, sampeyan bisa kanthi manual ngganti setelan ing kubeconfig. Nanging ora trep. Kanggo nyederhanakake operasi kasebut, ana macem-macem keperluan sing ngidini sampeyan ngganti paramèter kanthi otomatis.

Gunakake kubectx

Utilitas sing populer banget kanggo ngalih ing antarane klompok lan ruang jeneng.

Utilitas menehi printah kubectx ΠΈ kubens kanggo ngganti konteks saiki lan namespace mungguh.

Kaya kasebut, ngganti konteks saiki tegese ngganti kluster yen sampeyan mung duwe siji konteks saben kluster.

Mangkene conto nglakokake perintah kasebut:

Cara nggunakake kubectl luwih efektif: pandhuan rinci
Ateges, printah iki mung ngowahi file kubeconfig kaya sing kasebut ing ndhuwur.

kanggo nginstal kubectx, tindakake pandhuan ing Github.

Loro-lorone printah ndhukung autocompletion saka konteks lan jeneng namespace, kang ngilangake perlu kanggo ngetik kabeh. Pandhuan kanggo nyetel autocompletion kene.

Fitur liyane sing migunani kubectx Iku mode interaktif. Kerjane bebarengan karo sarana fzf, sing kudu diinstal kanthi kapisah. Nginstal fzf kanthi otomatis nggawe mode interaktif kasedhiya ing kubectx. Kanthi interaktif, sampeyan bisa milih konteks lan ruang jeneng liwat antarmuka telusuran gratis interaktif sing diwenehake dening fzf.

Nggunakake alias shell

Sampeyan ora butuh alat sing kapisah kanggo ngganti konteks lan ruang jeneng saiki amarga kubectl uga menehi prentah kanggo iki. Ya, tim kubectl config nyedhiyakake subcommands kanggo nyunting file kubeconfig.

Kene ana sawetara:

  • kubectl config get-contexts: nampilake kabeh konteks;
  • kubectl config current-context: entuk konteks saiki;
  • kubectl config use-context: ngganti konteks saiki;
  • kubectl config set-context: Ngganti unsur konteks.

Nanging, nggunakake printah iki langsung ora trep amarga dawa. Sampeyan bisa nggawe alias cangkang kanggo wong-wong mau sing gampang dieksekusi.

Aku nggawe set alias adhedhasar printah iki sing nyedhiyani fungsi padha kubectx. Ing kene sampeyan bisa ndeleng dheweke tumindak:

Cara nggunakake kubectl luwih efektif: pandhuan rinci
Elinga yen alias nggunakake fzf kanggo nyedhiyakake antarmuka goleki gratis interaktif (kayata mode interaktif kubectx). Iki tegese sampeyan butuh nginstal fzfkanggo nggunakake alias iki.

Mangkene definisi alias dhewe:

# ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ контСкст
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/^..//")"'

Kanggo nyetel alias kasebut, sampeyan kudu nambahake definisi ing ndhuwur menyang file sampeyan ~/.bashrc utawa ~/.zshrc lan urip maneh cangkang.

Nggunakake plugins

Kubectl ngidini sampeyan mbukak plugin sing dieksekusi kanthi cara sing padha karo prentah dhasar. Sampeyan bisa, contone, nginstal kubectl-foo plugin lan mbukak kanthi nglakokakΓ© printah kubectl foo.

Iku bakal trep kanggo ngganti konteks lan namespace ing cara iki, contone, mlaku kubectl ctx kanggo ngganti konteks lan kubectl ns kanggo ngganti namespace.

Aku wis nulis rong plugin sing nindakake iki:

Pakaryan plugin adhedhasar alias saka bagean sadurunge.

Mangkene cara kerjane:

Cara nggunakake kubectl luwih efektif: pandhuan rinci
Elinga yen plugin nggunakake fzf kanggo nyedhiyakake antarmuka telusuran gratis sing interaktif (kayata mode interaktif kubectx). Iki tegese sampeyan butuh nginstal fzfkanggo nggunakake alias iki.

Kanggo nginstal plugin, sampeyan kudu ngundhuh skrip cangkang sing jenenge kubectl-ctx ΠΈ kubectl-ns menyang direktori apa wae ing variabel PATH sampeyan lan nggawe eksekusi karo contone. chmod +x. Sanalika sawise iki sampeyan bakal bisa nggunakake kubectl ctx ΠΈ kubectl ns.

5. Ngurangi input karo autoaliases

Alias ​​Shell minangka cara sing apik kanggo nyepetake input. Proyek kubectl-alias ngemot babagan 800 trabasan kanggo printah kubectl dhasar.

Sampeyan bisa uga mikir - kepiye sampeyan ngelingi 800 alias? Nanging sampeyan ora perlu ngelingi kabeh, amarga dibangun miturut skema sing prasaja, sing diwenehi ing ngisor iki:

Cara nggunakake kubectl luwih efektif: pandhuan rinci
Contone:

  1. kgpooyaml - kubectl njaluk pods oyaml
  2. ksysgsvcw - kubectl -n kube-system njaluk svc w
  3. ksysrmcm -kubectl -n kube-sistem rm cm
  4. kgdepallsl - kubectl entuk penyebaran kabeh sl

Kaya sing sampeyan ngerteni, alias digawe saka komponen, sing saben-saben nggambarake unsur tartamtu saka perintah kubectl. Saben alias bisa duwe siji komponen kanggo printah dhasar, operasi, lan sumber daya, lan sawetara komponen kanggo paramèter. Sampeyan mung "populasi" komponen kasebut saka kiwa menyang tengen miturut diagram ing ndhuwur.

Diagram rinci saiki ana ing GitHub. Ing kono sampeyan uga bisa nemokake dhaftar lengkap alias.

Contone, alias kgpooyamlall padha karo printah kubectl get pods -o yaml --all-namespaces.

Urutan relatif saka opsi ora penting: printah kgpooyamlall iku padha karo printah kgpoalloyaml.

Sampeyan ora kudu nggunakake kabeh komponen minangka alias. Tuladhane k, kg, klo, ksys, kgpo uga bisa digunakake. Kajaba iku, sampeyan bisa gabungke alias lan printah biasa utawa opsi ing baris printah:

Contone:

  1. Tinimbang kubectl proxy sampeyan bisa nulis k proxy.
  2. Tinimbang kubectl get roles sampeyan bisa nulis kg roles (saiki ora ana alias kanggo sumber Peran).
  3. Kanggo njupuk data kanggo pod tartamtu, sampeyan bisa nggunakake printah kgpo my-pod β€” kubectl get pod my-pod.

Elinga yen sawetara alias mbutuhake argumen baris perintah. Contone, alias kgpol liya kubectl get pods -l. Pilihan -l mbutuhake argumen - spesifikasi label. Yen sampeyan nggunakake alias bakal katon kaya kgpol app=ui.

Amarga sawetara alias mbutuhake argumen, alias a, f, lan l kudu digunakake pungkasan.

UmumΓ©, yen sampeyan ngerti skema iki, sampeyan bisa kanthi intuisi entuk alias saka perintah sing pengin dieksekusi lan ngirit akeh wektu ngetik.

Instalasi

Kanggo nginstal kubectl-alias, sampeyan kudu ngundhuh file kasebut .kubectl_aliases saka GitHub lan kalebu ing file ~/.bashrc utawa ~/.zshrc:

source ~/.kubectl_aliases

Autocompletion

Kaya sing wis dakkandhakake sadurunge, sampeyan asring nambah tembung tambahan menyang alias ing baris perintah. Tuladhane:

$ kgpooyaml test-pod-d4b77b989

Yen sampeyan nggunakake kubectl printah completion, sampeyan mbokmenawa wis nggunakake autocompletion kanggo bab kaya jeneng sumber. Nanging apa iki bisa ditindakake nalika alias digunakake?

Iki minangka pitakonan sing penting banget amarga yen autocompletion ora bisa, sampeyan bakal kelangan sawetara keuntungan saka alias.

Jawaban gumantung saka cangkang sing sampeyan gunakake:

  1. Kanggo Zsh, alias rampung metu saka kothak.
  2. Kanggo Bash, sayangΓ©, sawetara karya dibutuhake supaya bisa rampung otomatis.

Ngaktifake autocompletion kanggo alias ing Bash

Masalah karo Bash iku nyoba kanggo ngrampungake (saben sampeyan menet Tab) alias, ora printah sing alias nuduhake (kaya Zsh, contone,). Amarga sampeyan ora duwe skrip completion kanggo kabeh 800 alias, autocompletion ora bisa.

Proyek kasebut alias lengkap menehi solusi umum kanggo masalah iki. Iku nyambung menyang mekanisme completion alias, internal ngembangaken alias kanggo printah, lan bali opsi completion kanggo printah rampung. Iki tegese bantalan kanggo alias tumindake padha karo perintah lengkap.

Ing ngisor iki, aku bakal nerangake carane nginstal alias lengkap banjur carane ngatur supaya bisa rampung kanggo kabeh alias kubectl.

Nginstal lengkap-alias

Kaping kabeh, lengkap-alias gumantung ing bash-completion. Mulane, sadurunge nginstal alias lengkap, sampeyan kudu nggawe manawa bash-completion wis diinstal. Pandhuan instalasi wis diwenehake sadurunge kanggo Linux lan MacOS.

Wigati Penting kanggo Pangguna MacOS: Kaya skrip autocompletion kubectl, alias lengkap ora bisa digunakake karo Bash 3.2, sing minangka standar ing MacOS. Utamane, alias lengkap gumantung saka bash-completion v2 (brew install bash-completion@2), sing mbutuhake paling ora Bash 4.1. Iki tegese kanggo nggunakake alias lengkap ing MacOS sampeyan kudu nginstal versi anyar saka Bash.

Sampeyan kudu ngundhuh skrip bash_completion.sh saka Repositori GitHub lan lebokake ing file sampeyan ~/.bashrc:

source ~/bash_completion.sh

Sawise reboot shell, alias lengkap bakal diinstal kanthi lengkap.

Ngaktifake autocompletion kanggo alias kubectl

Teknis lengkap-alias nyedhiyakake fungsi pambungkus _complete_alias. Fungsi iki mriksa alias lan ngasilake pitunjuk rampung kanggo perintah alias.

Kanggo nggandhengake fungsi karo alias tartamtu, sampeyan kudu nggunakake mekanisme Bash sing dibangun ing lengkap, kanggo nginstal _complete_alias minangka fungsi rampung alias.

Contone, ayo njupuk alias k, sing tegese perintah kubectl. kanggo nginstal _complete_alias Minangka fungsi pelengkap kanggo alias iki, sampeyan kudu mbukak printah ing ngisor iki:

$ complete -F _complete_alias k

Asil iki yaiku saben sampeyan ngrampungake alias k kanthi otomatis, fungsi kasebut diarani _complete_alias, sing mriksa alias lan ngasilake pitunjuk rampung kanggo printah kasebut kubectl.

Minangka conto kapindho, ayo njupuk alias kg, kang nuduhake kubectl get:

$ complete -F _complete_alias kg

Kaya ing conto sadurunge, nalika sampeyan nglengkapi otomatis kg, sampeyan bakal entuk pitunjuk rampung sing padha sing bakal sampeyan entuk. kubectl get.

Elinga yen sampeyan bisa nggunakake alias lengkap kanggo alias apa wae ing sistem sampeyan.

Mulane, kanggo ngaktifake autocompletion kanggo kabeh alias kubectl, sampeyan kudu mbukak printah ing ndhuwur kanggo saben wong. Cuplikan ing ngisor iki nindakake kanthi bener, yen sampeyan wis nyetel kubectl-alias ~/.kubectl-aliases:

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

Piece saka kode iki kudu diselehake ing Panjenengan ~/.bashrc, miwiti maneh cangkang printah lan autocompletion bakal kasedhiya kanggo kabeh 800 alias kubectl.

6. Ngluwihi kubectl karo plugins

Wiwit saka versi 1.12, kubectl ndhukung mekanisme plugin, sing ngijini sampeyan kanggo nggedhekake fungsi karo printah tambahan.

Yen sampeyan kenal karo Mekanisme plugin Git, banjur plugin kubectl dibangun kanthi prinsip sing padha.

Ing bab iki, kita bakal njlèntrèhaké carane nginstal plugin, ngendi kanggo nemokake, lan carane nggawe plugins dhewe.

Nginstal plugin

Plugin Kubectl disebarake minangka file eksekusi prasaja kanthi jeneng kaya kubectl-x. Ater-ater kubectl- dibutuhake, ngiring dening subcommand kubectl anyar sing ngijini sampeyan kanggo nelpon plugin.

Contone, plugin hello bakal disebarake minangka file sing diarani kubectl-hello.

Kanggo nginstal plugin, sampeyan kudu nyalin file kasebut kubectl-x menyang sembarang direktori ing PATH lan nggawe eksekusi, contone karo chmod +x. Sanalika sawise iki sampeyan bisa nelpon plugin karo kubectl x.

Sampeyan bisa nggunakake printah ing ngisor iki kanggo dhaptar kabeh plugin sing saiki diinstal ing sistem sampeyan:

$ kubectl plugin list

Printah iki uga bakal nampilake bebaya yen sampeyan duwe sawetara plugin kanthi jeneng sing padha, utawa yen ana file plugin sing ora bisa dieksekusi.

Nemokake lan nginstal plugin nggunakake Krew

Plugin Kubectl bisa dienggo bareng utawa digunakake maneh kaya paket piranti lunak. Nanging ing ngendi sampeyan bisa nemokake plugin sing wis dituduhake wong liya?

Proyek Krew tujuane kanggo nyedhiyakake solusi terpadu kanggo nuduhake, nggoleki, nginstal lan ngatur plugin kubectl. Proyèk kasebut diarani "manajer paket kanggo plugin kubectl" (Krew padha karo Nggawe).

Krew minangka dhaptar plugin kubectl sing bisa sampeyan pilih lan instal. Ing wektu sing padha, Krew uga minangka plugin kanggo kubectl.

Iki tegese nginstal Krew kerjane kaya nginstal plugin kubectl liyane. Sampeyan bisa nemokake instruksi rinci ing kaca GitHub.

Prentah Krew sing paling penting yaiku:

# Поиск в спискС плагинов
$ kubectl krew search [<query>]
# ΠŸΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ ΠΏΠ»Π°Π³ΠΈΠ½Π΅
$ kubectl krew info <plugin>
# Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΠ»Π°Π³ΠΈΠ½
$ kubectl krew install <plugin>
# ΠžΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ всС ΠΏΠ»Π°Π³ΠΈΠ½Ρ‹ Π΄ΠΎ послСднСй вСрсии
$ kubectl krew upgrade
# ΠŸΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ всС ΠΏΠ»Π°Π³ΠΈΠ½Ρ‹, установлСнныС Ρ‡Π΅Ρ€Π΅Π· Krew
$ kubectl krew list
# Π”Π΅ΠΈΠ½ΡΡ‚Π°Π»Π»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ»Π°Π³ΠΈΠ½
$ kubectl krew remove <plugin>

Elinga yen nginstal plugin nggunakake Krew ora ngganggu nginstal plugin nggunakake cara standar sing kasebut ing ndhuwur.

Elinga yen printah kubectl krew list mung nampilake plugin sing diinstal nggunakake Krew, dene printah kubectl plugin list dhaptar kabeh plugin, yaiku, sing diinstal nggunakake Krew lan sing diinstal kanthi cara liya.

Nggoleki Plugins ing papan liya

Krew proyek enom, saiki ing sawijining dhaptar mung bab 30 Plugins. Yen sampeyan ora bisa nemokake apa sing sampeyan butuhake, sampeyan bisa nemokake plugin ing papan liya, kayata GitHub.

Aku nyaranake ndeleng bagean GitHub kubectl-plugins. Ing kana sampeyan bakal nemokake puluhan plugin sing kasedhiya sing kudu dipriksa.

Nulis plugin sampeyan dhewe

sampeyan bisa dhewe nggawe plugin - Ora angel. Sampeyan kudu nggawe eksekusi sing nindakake apa sing sampeyan butuhake, jenenge kubectl-x lan nginstal kaya kasebut ing ndhuwur.

File kasebut bisa dadi skrip bash, skrip python, utawa aplikasi GO sing dikompilasi - ora masalah. Siji-sijine syarat yaiku bisa langsung dieksekusi ing sistem operasi.

Ayo nggawe conto plugin saiki. Ing bagean sadurunge, sampeyan nggunakake printah kubectl kanggo dhaptar wadhah kanggo saben pod. Iku gampang kanggo nguripake printah iki menyang plugin sing bisa nelpon karo contone. kubectl img.

Nggawe file kubectl-img isi ing ngisor iki:

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

Saiki nggawe file eksekusi karo chmod +x kubectl-img lan pindhah menyang direktori ing PATH sampeyan. Sanalika sawise iki sampeyan bisa nggunakake plugin kubectl img.

Kaya sing wis kasebut, plugin kubectl bisa ditulis ing basa pemrograman utawa skrip apa wae. Yen sampeyan nggunakake skrip cangkang, kauntungan bisa nelpon kubectl kanthi gampang saka plugin kasebut. Nanging, sampeyan bisa nulis plugin sing luwih rumit ing basa pemrograman nyata nggunakake Pustaka klien Kubernetes. Yen sampeyan nggunakake Go, sampeyan uga bisa nggunakake perpustakaan cli-runtime, sing ana khusus kanggo nulis plugin kubectl.

Cara nuduhake plugin sampeyan

Yen sampeyan mikir plugin sampeyan bisa migunani kanggo wong liya, aja lali nuduhake ing GitHub. Priksa manawa sampeyan nambahake menyang topik kasebut kubectl-plugins.

Sampeyan uga bisa njaluk supaya plugin sampeyan ditambahake Daftar kw. Pandhuan babagan carane nindakake iki ana ing Repositori GitHub.

Completion printah

Plugins saiki ora ndhukung autocompletion. Yaiku, sampeyan kudu ngetik jeneng lengkap plugin lan jeneng lengkap argumen.

Repositori kubectl GitHub kanggo fungsi iki nduweni panjalukan mbukak. Dadi bisa uga fitur iki bakal dileksanakake ing mangsa ngarep.

Sugeng enjang!!!

Apa maneh kanggo maca babagan topik kasebut:

  1. Telung tingkat autoscaling ing Kubernetes lan cara nggunakake kanthi efektif.
  2. Kubernetes ing semangat pembajakan karo cithakan kanggo implementasine.
  3. Saluran kita Sekitar Kubernetes ing Telegram.

Source: www.habr.com

Add a comment