Ana akeh literatur referensi ing Internet, nanging kadhangkala saran sing paling gampang yaiku sing paling berharga. tim Kubernetes aaS saka Mail.ru dijarwakake pilihan saka sepuluh trik lan tips, sing diklumpukake penulis artikel sawise setaun nggarap Kubernetes. Tip kasebut ora diurutake kanthi wigati, nanging kita mikir yen saben wong bakal nemokake sing migunani kanggo awake dhewe.
Printah paling gampang kanggo nggarap Kubernetes
Kanggo miwiti, mbok menawa tumindak sing paling gampang lan migunani kanggo nggarap Kubernetes. Printah ing ngisor iki mbisakake printah rampung kubectl ing cangkang bash:
Autofill kubectl bakal ditulis menyang file .bashrc lan bakal diaktifake kanthi otomatis saben cangkang diwiwiti. Iki nyepetake ngetik printah dawa lan paramèter kayata all-namespaces. Rincian liyane ing Kubernetes bash bantuan.
Memori standar lan watesan CPU ing ruang jeneng
Yen aplikasi kasebut salah ditulis, contone, mbukak sambungan anyar menyang database saben detik nanging ora tau nutup, banjur kluster duwe bocor memori. Lan yen aplikasi ora duwe watesan memori sing disetel sajrone panyebaran, iki bisa nyebabake kegagalan simpul.
Kanggo nyegah iki, Kubernetes ngidini sampeyan nyetel watesan standar ing basis saben spasi jeneng. Iki ditulis ing file yaml kanggo ruang jeneng tartamtu. Mangkene conto file kasebut:
Nggawe yaml kuwi lan aplikasi menyang sembarang namespace. Contone, menyang namespace limit-example. Saiki, wadhah apa wae sing dipasang ing ruang jeneng iki bakal duwe watesan 512Mi, kajaba watesan individu liyane disetel kanggo wadhah iki.
Koleksi sampah ing versi lawas saka Kubernetes
Kubelet minangka standar miwiti koleksi uwuh nalika var/lib/docker ngenggoni 90% ruang disk sing kasedhiya. Iki apik banget, nanging nganti Kubernetes 1.7 ora ana watesan standar kanggo jumlah inode sing digunakake, sing cocog karo jumlah file ing sistem file.
Trik yaiku carane mbangun aplikasi lan mbukak sacara lokal ing kluster kasebut. Kajaba prentah khusus, gambar Docker bakal dibangun ing komputer lan ora ing kluster.
Kanggo meksa Docker push gambar menyang cluster Kubernetes lokal, mesin docker diwenehi printah ing ngisor iki:
eval $(minikube docker-env)
Saiki kita bisa mbangun aplikasi ing kluster Kubernetes lokal.
Aja menehi akses kubectl kanggo kabeh wong
Iki katon jelas, nanging yen sawetara tim nggunakake kluster sing padha kanggo aplikasi kasebut (yaiku Kubernetes digawe), sampeyan ora mung kudu menehi kabeh wong. kubectl. Iku luwih apik kanggo misahake printah, nemtokake saben wong namespace dhewe lan matesi akses nggunakake kawicaksanan RBAC.
Sampeyan bisa bingung kanthi menehi hak kanggo ngakses, maca, nggawe, mbusak lan operasi liyane kanggo saben pod. Nanging sing utama yaiku mbatesi akses menyang rahasia, mung ngidini para pangurus. Kanthi cara iki kita bakal mbedakake antarane sing bisa ngatur kluster lan sing mung bisa nyebarake.
Ngatur Anggaran Pod
Kepiye manawa ora ana downtime kanggo aplikasi ing kluster Kubernetes? PodDisruptionBudget lan maneh PodDisruptionBudget.
Kluster dianyari sacara periodik lan node dikosongake. Ora ana sing mandheg, iku kasunyatane. Saben panyebaran kanthi luwih saka siji conto kudu kalebu PDB (PodDisruptionBudget). Iki digawe ing file yaml prasaja sing ditrapake ing kluster. Wilayah jangkoan PDB tartamtu ditemtokake dening pamilih label.
Wigati: Anggaran PDB dianggep mung nalika pelanggaran anggaran bisa dibalik (gangguan sukarela). Ing kahanan kaya hardware gagal, PDB ora bakal bisa.
Loro paramèter utama yaiku matchLabels и minAvailable. Parameter pisanan nemtokake aplikasi sing ditrapake anggaran. Contone, yen aku duwe deployments karo label app: app-a и app: app-b, banjur PDB iki mung bakal ditrapake kanggo sing pisanan.
Parameter minAvailable digatekake nalika ngosongake (ngresiki) simpul. Contone, ing conto kita, sajrone ngosongake, kabeh kedadeyan diusir app: app-a, kajaba loro.
Iki ngidini sampeyan ngontrol pirang-pirang kasus aplikasi sing kudu mlaku ing wektu tartamtu.
Aplikasi monitoring kesehatan
Pemantauan kasebut bisa ditindakake kanthi rong cara: nggunakake tes Kesiapan utawa Liveness.
Probe pisanan (kesiapan) nemtokake kesiapan wadah kanggo nampa lalu lintas.
Kapindho (liveness) nuduhake manawa wadhah kasebut sehat utawa kudu diwiwiti maneh.
Konfigurasi sing cocog mung ditambahake menyang yaml kanggo panyebaran. Ing kana sampeyan bisa nemtokake wektu entek, wektu tundha lan jumlah uji coba maneh. Waca rincian liyane babagan Dokumentasi Kubernetes.
Tag nang endi wae
Label minangka salah sawijining konsep dhasar ing Kubernetes. Dheweke ngidini obyek bisa komunikasi kanthi bebas, uga nggawe pitakon adhedhasar label. Ing Kubernetes, sampeyan malah bisa menyang klien lan nonton acara kanggo tag tartamtu.
Sampeyan bisa nindakake meh kabeh kanthi tag, nanging conto sing apik yaiku nggawe macem-macem lingkungan kanggo mbukak program ing klompok sing padha.
Ayo dadi ngomong sampeyan nggunakake kluster padha kanggo dev ΠΈ qa. Iki tegese sampeyan bisa duwe aplikasi app-a, bebarengan digunakake ing loro lingkungan qa ΠΈ dev. Ing kasus iki, kita bisa ngakses conto aplikasi kanthi kapisah ing lingkungan tartamtu kanthi nemtokake parameter sing cocog environment. Contone, app: app-a ΠΈ environment: dev kanggo siji lingkungan, lan app: app-a ΠΈ environment: qa kanggo sing kapindho.
Iki ngidini sampeyan ngakses loro kasus aplikasi kasebut, contone, kanggo nganakake tes bebarengan.
Njaluk diatur
Kubernetes minangka sistem sing kuat banget, nanging sistem apa wae bisa dadi macet amarga akeh proses. Kubelet nindakake kabeh proses lan mriksa sing sampeyan nemtokake, uga dhewe.
Mesthi, siji layanan yatim piatu ora bakal alon mudhun sistem, lan Kubernetes dirancang kanggo skala saka lemah munggah. Nanging yen tinimbang siji layanan yuta katon, kubelet wiwit keselak.
Yen sakperangan alesan sampeyan mbusak penyebaran (wadhah, gambar, apa wae), priksa manawa sampeyan nindakake reresik lengkap.
Ketemu Go
We disimpen saran utama kanggo pungkasan. Sinau basa pamrograman Go.
Kubernetes dikembangake ing Go, kabeh ekstensi ditulis ing Go, lan perpustakaan klien klien-go uga didhukung kanthi resmi.
Bisa digunakake kanggo macem-macem lan menarik. Contone, kanggo nggedhekake sistem Kubernetes kanggo rasa sampeyan. Dadi, sampeyan bisa nggunakake program sampeyan dhewe kanggo ngumpulake data, nyebarake aplikasi, utawa mung ngresiki wadhah.
Sinau basa pamrograman Go lan nguwasani klien-go bisa uga minangka saran paling penting sing bisa diwenehake marang pangguna anyar Kubernetes.