Top 10 Kubernetes Trik lan Tips

Top 10 Kubernetes Trik lan Tips

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:

echo "source <(kubectl completion bash)" >> ~/.bashrc

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:

apiVersion: v1
kind: LimitRange
metadata:
  name: mem-limit-range
spec:
  limits:
  - default:
      memory: 512Mi
    defaultRequest:
      memory: 256Mi
    type: Container

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.

Potensi wadhah sampeyan var/lib/docker mung bisa nggunakake 50% saka papan disk, nanging bisa entek inode, kang bakal nimbulakΓ© masalah kanggo buruh.

Ing versi lawas saka kubelet saka 1.4 kanggo 1.6 sampeyan kudu nambah flag iki:

--eviction-hard
=memory.available<100Mi,nodefs.available<10%,nodefs.inodesFree<5%

Ing versi 1.7 lan luwih anyar, gendera iki disetel kanthi gawan. Nanging, versi sadurunge ora ngawasi watesan inode.

Minikube... Kubernetes lokal cilik nanging kuat

Minikube minangka cara paling gampang kanggo mbukak kluster Kubernetes lokal. Iki diluncurake kanthi prentah sing prasaja:

minikube start

Mlaku printah iki nyebabake kluster Kubernetes nyata sing mlaku ing komputer sampeyan.

Top 10 Kubernetes Trik lan Tips
Sumber ilustrasi

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.

Tuladha PDB:

apiVersion: policy/v1beta1
kind: PodDisruptionBudget
metadata:
  name: app-a-pdb
spec:
  minAvailable: 2
  selector:
      matchLabels:
        app: app-a

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.

Diterjemahake kanthi dhukungan saka Mail.ru Cloud Solutions

Apa maneh kanggo maca:

  1. Telung tingkat autoscaling ing Kubernetes lan cara nggunakake kanthi efektif.
  2. Kubernetes worker node: akeh cilik utawa sawetara gedhe?
  3. 25 Piranti Migunani kanggo Nyebar lan Ngatur Kubernetes.

Source: www.habr.com

Add a comment