Aya seueur literatur rujukan dina Internét, tapi sakapeung tip pangbasajanna anu paling berharga. Tim Kubernetes aaS ti Mail.ru ditarjamahkeun pilihan sapuluh trik na tips, nu panulis artikel geus dikumpulkeun sanggeus sataun gawé kalawan Kubernetes. Tips teu diurutkeun ku pentingna, tapi urang mikir yén dulur bakal manggihan hal mangpaat pikeun diri.
Paréntah panggampangna pikeun dianggo sareng Kubernetes
Pikeun ngamimitian, sugan lengkah pangbasajanna tur mangpaat dina gawé bareng Kubernetes. Paréntah di handap ieu ngamungkinkeun parantosan paréntah kubectl dina cangkang bash:
Ngalengkepan kubectl bakal ditulis kana file .bashrc sarta bakal otomatis diaktipkeun unggal waktos cangkang dimimitian. Ieu nyepetkeun ngetik paréntah panjang sareng pilihan sapertos all-namespaces. Baca leuwih dina Kubernetes bash pitulung.
Namespasi Mémori jeung CPU Batesan Default
Lamun hiji aplikasi ditulis salah, kayaning muka sambungan database anyar unggal detik tapi pernah nutup eta, mangka klaster bakal bocor memori. Tur upami aplikasi nu teu boga wates memori salila deployment, ieu bisa ngakibatkeun gagalna titik.
Pikeun nyegah ieu, Kubernetes ngidinan Anjeun pikeun nyetel wates standar dina dasar per-namespace. Éta téh ditulis dina file yaml pikeun ngaranspasi husus. Ieu conto file sapertos kieu:
Damel yaml sapertos kitu sareng terapkeun kana rohangan ngaran mana waé. Contona, ka namespace limit-example. Ayeuna, wadah naon waé anu dipasang dina rohangan ngaran ieu bakal ngagaduhan wates 512Mi, kecuali wates individu anu sanés disetél pikeun wadah ieu.
Ngumpulkeun sampah dina versi heubeul tina Kubernetes
Kubelet dimimitian ngumpulkeun sampah sacara standar nalika var/lib/docker nempatan 90% tina spasi disk sadia. Ieu saé, kumaha ogé, sateuacan Kubernetes 1.7, teu aya wates standar pikeun jumlah inode anu dianggo, anu pakait sareng jumlah file dina sistem file.
Poténsi wadah Anjeun var/lib/docker ngan bisa make 50% tina spasi disk, tapi bisa ngajalankeun kaluar inodes, nu bakal ngabalukarkeun masalah pikeun pagawe.
Dina vérsi kubelet anu langkung lami ti 1.4 dugi ka 1.6, anjeun kedah nambihan bandéra ieu:
Trikna nyaéta kumaha ngawangun aplikasi sareng ngajalankeun éta sacara lokal dina kluster ieu. Iwal mun disebutkeun dieusian, gambar Docker bakal diwangun dina mesin anjeun, moal dina kluster.
Pikeun maksa Docker nyorong gambar kana klaster Kubernetes lokal, paréntah di handap ieu dipasihkeun ka mesin docker:
eval $(minikube docker-env)
Ayeuna urang tiasa ngawangun aplikasi dina klaster Kubernetes lokal.
Entong bagikeun aksés kubectl ka sadayana
Ieu sigana écés, tapi lamun sababaraha tim anu ngagunakeun klaster sarua pikeun aplikasi maranéhanana (nu keur naon Kubernetes dijieun), ulah ngan ngaluarkeun aranjeunna sadayana sakaligus. kubectl. Éta langkung saé pikeun misahkeun paréntah, masihan masing-masing rohangan ngaran sorangan sareng ngawatesan aksés sareng kawijakan RBAC.
Anjeun tiasa bingung ku masihan hak aksés, maca, nyiptakeun, ngahapus, sareng operasi anu sanés pikeun unggal pod. Tapi hal utama nyaéta pikeun ngawatesan aksés ka Rahasia, sahingga ngan pikeun pangurus. Ieu kumaha urang ngabédakeun antara anu tiasa ngatur klaster sareng anu ngan saukur tiasa nyebarkeun éta.
Atur Anggaran Pod
Kumaha carana mastikeun yén teu aya downtime pikeun aplikasi dina klaster Kubernetes? PodDisruptionBudget sareng deui PodDisruptionBudget.
Kluster diropéa périodik sareng titik dikosongkeun. Henteu aya anu nangtung, éta kanyataan. Unggal deployment kalawan leuwih ti hiji conto kudu ngawengku hiji PDB (PodDisruptionBudget). Éta didamel dina file yaml saderhana anu diterapkeun kana kluster. Ruang lingkup PDB tinangtu ditangtukeun ku pamilih labél.
Catetan: Anggaran PDB dipertimbangkeun ngan upami aya palanggaran anggaran anu tiasa dibalikkeun (gangguan sukarela). Dina kaayaan sapertos gagal hardware, PDB moal jalan.
Dua parameter utama nyaéta matchLabels и minAvailable. Parameter kahiji nangtukeun mana aplikasi anggaran lumaku pikeun. Contona, upami abdi gaduh deployments kalawan tag app: app-a и app: app-b, teras PDB ieu ngan bakal dilarapkeun ka anu munggaran.
parameter minAvailable dipertimbangkeun nalika ngosongkeun (ngabersihan) node. Contona, dina conto urang, sadaya instansi digusur salila devastation app: app-aiwal dua.
Ieu ngidinan Anjeun pikeun ngadalikeun sabaraha instansi tina aplikasi kudu ngajalankeun iraha wae.
Ngawaskeun kaséhatan aplikasi
Pemantauan sapertos kitu tiasa dilakukeun ku dua cara: ngagunakeun tés Kesiapan atanapi Liveness.
The usik munggaran (kesiapan) nangtukeun naha wadahna geus siap pikeun nampa lalulintas.
Kadua (liveness) nunjukkeun naha wadahna séhat atanapi kedah di-restart.
Konfigurasi relevan ngan saukur ditambahkeun kana yaml pikeun deployment. Di dinya anjeun tiasa netepkeun waktosna, waktos tunda sareng jumlah percobaan deui. Tempo langkung seueur ngeunaan aranjeunna dokuméntasi Kubernetes.
Labels madhab
Label mangrupikeun salah sahiji konsép dasar dina Kubernetes. Aranjeunna ngidinan objék kalawan bébas komunikasi saling, kitu ogé nyieun requests dumasar kana labél. Dina Kubernetes, anjeun malah tiasa angkat ka klien sareng nonton acara pikeun labél khusus.
Ampir nanaon bisa dipigawé kalawan labél, tapi hiji conto alus bakal nyieun sababaraha lingkungan pikeun ngajalankeun program dina klaster sarua.
Hayu urang nyebutkeun ngagunakeun klaster sarua pikeun dev и qa. Ieu ngandung harti yén anjeun tiasa gaduh aplikasi app-a, sakaligus dianggo dina duanana lingkungan qa и dev. Dina hal ieu, urang tiasa ngaksés conto aplikasi sacara misah dina lingkungan anu khusus ku netepkeun parameter anu cocog environment. Salaku conto app: app-a и environment: dev pikeun hiji lingkungan, jeung app: app-a и environment: qa pikeun kadua.
Ieu ngidinan Anjeun pikeun ngakses duanana instansi tina aplikasi, contona, pikeun nguji dina waktos anu sareng.
Nempatkeun hal dina urutan
Kubernetes nyaéta sistem anu pohara kuat, tapi sistem naon waé pamustunganana tiasa macét dina sajumlah ageung prosés. Kubelet ngajalankeun sagala prosés jeung cék nu Anjeun tangtukeun, kitu ogé sorangan.
Tangtosna, hiji layanan yatim moal ngalambatkeun sistem, sareng Kubernetes dirancang pikeun skala ti mimiti. Tapi lamun tinimbang hiji layanan juta mucunghul, kubelet mimiti cuk.
Upami kusabab sababaraha alesan anjeun ngahapus panyebaran (wadah, gambar, naon waé), pastikeun pikeun ngabersihan lengkep.
Kenal Go
Kami parantos nyimpen tip anu paling luhur pikeun anu terakhir. Diajar basa pamrograman Go.
Kubernetes dikembangkeun dina Go, sadaya ekstensi ditulis dina Go, sareng perpustakaan klien-go ogé sacara resmi didukung.
Ieu bisa dipaké pikeun hal béda jeung metot. Contona, pikeun manjangkeun sistem Kubernetes kana rasa anjeun. Contona, Anjeun bisa make program sorangan pikeun ngumpulkeun data, nyebarkeun aplikasi, atawa ngan ngabersihan wadah.
Diajar basa pamrograman Go sareng ngawasaan klien-go sigana mangrupikeun saran anu paling penting anu tiasa dipasihkeun ka pangguna Kubernetes pemula.