ProHoster > Blog > Pangangasiwa > Kubernetes 1.17: pangkalahatang-ideya ng mga pangunahing inobasyon
Kubernetes 1.17: pangkalahatang-ideya ng mga pangunahing inobasyon
Kahapon, Disyembre 9, naganap susunod na paglabas ng Kubernetes - 1.17. Ayon sa tradisyon na binuo para sa aming blog, pinag-uusapan namin ang tungkol sa mga pinaka makabuluhang pagbabago sa bagong bersyon.
Matagal nang hinihintay ng komunidad ng Kubernetes ang tampok na ito - Topology-aware service routing. Kung KEP ito ay nagmula sa Oktubre 2018, at ang opisyal Pagpapahusay β 2 taon na ang nakalipas, ang mga karaniwang isyu (gaya ng ito) - at mas matanda pa ng ilang taon...
Ang pangkalahatang ideya ay magbigay ng kakayahang magpatupad ng "lokal" na pagruruta para sa mga serbisyong naninirahan sa Kubernetes. "Lokalidad" sa kasong ito ay nangangahulugang "parehong topological na antas" (antas ng topology), na maaaring:
magkapareho ang node para sa mga serbisyo,
ang parehong rack ng server,
ang parehong rehiyon
ang parehong cloud provider,
...
Mga halimbawa ng paggamit ng feature na ito:
pagtitipid sa trapiko sa mga pag-install ng cloud na may maraming availability zone (multi-AZ) - tingnan. bagong ilustrasyon gamit ang halimbawa ng trapiko mula sa parehong rehiyon, ngunit magkaibang mga AZ sa AWS;
mas mababang performance latency/mas mahusay na throughput;
isang sharded na serbisyo na mayroong lokal na impormasyon tungkol sa node sa bawat shard;
paglalagay ng fluentd (o mga analogue) sa parehong node kasama ang mga application na ang mga log ay kinokolekta;
Para sa mga detalye kung paano gumagana ang feature at kung paano mo ito magagamit, basahin artikulong ito mula sa isa sa mga may-akda.
IPv4/IPv6 dual stack na suporta
Makabuluhang pag-unlad nakapirming sa isa pang feature ng network: sabay-sabay na suporta para sa dalawang IP stack, na unang ipinakilala sa K8s 1.16. Sa partikular, ang bagong release ay nagdala ng mga sumusunod na pagbabago:
sa kube-proxy ipinatupad posibilidad ng sabay-sabay na operasyon sa parehong mga mode (IPv4 at IPv6);
Π² Pod.Status.PodIPslumitaw suporta para sa pababang API (kasabay ng sa /etc/hosts ngayon kailangan nila ang host na magdagdag ng IPv6 address);
dual stack na suporta KIND (Kubernetes IN Docker) at kubeadm;
Inisyatiba para sa paglipat ng mga volume plugin sa CSI - CSI Migration - naabot ang beta na bersyon. Ang tampok na ito ay kritikal upang maisalin ang mga umiiral nang plugin ng storage (sa-puno) sa isang modernong interface (CSI, wala sa puno) hindi nakikita ng mga end user ng Kubernetes. Kakailanganin lamang ng mga administrator ng cluster na i-enable ang CSI Migration, pagkatapos nito ay magpapatuloy na "gumagana lang" ang mga umiiral nang stateful na mapagkukunan at workload... ngunit gumagamit ng mga pinakabagong driver ng CSI sa halip na ang mga luma na kasama sa core ng Kubernetes.
Sa ngayon, handa na ang paglipat para sa mga driver ng AWS EBS sa beta na bersyon (kubernetes.io/aws-ebs) at GCE PD (kubernetes.io/gce-pd). Ang mga pagtataya para sa iba pang pasilidad ng imbakan ay ang mga sumusunod:
Pinag-usapan namin kung paano napunta sa CSI ang "tradisyonal" na suporta sa storage sa K8s artikulong ito. At ang paglipat ng CSI migration sa beta status ay nakatuon sa hiwalay na publikasyon sa blog ng proyekto.
Bilang karagdagan, ang isa pang makabuluhang functionality sa konteksto ng CSI, na nagmula (implementasyon ng alpha) sa K1.17s 8, ay umabot sa beta status (ibig sabihin, naka-enable bilang default) sa Kubernetes 1.12 release - paggawa ng mga snapshot at pagbawi mula sa kanila. Kabilang sa mga pagbabagong ginawa sa Kubernetes Volume Snapshot sa daan patungo sa beta release:
hinahati ang CSI external-snapshotter sidecar sa dalawang controllers,
nagdagdag ng lihim para sa pagtanggal (lihim sa pagtanggal) bilang isang anotasyon sa mga nilalaman ng isang snapshot ng volume,
bagong finalizer (finalizer) upang maiwasang matanggal ang snapshot API object kung may mga natitirang koneksyon.
Sa panahon ng paglabas 1.17, ang feature ay sinusuportahan ng tatlong CSI driver: GCE Persistent Disk CSI Driver, Portworx CSI Driver at NetApp Trident CSI Driver. Higit pang mga detalye tungkol sa pagpapatupad at paggamit nito ay matatagpuan sa ang publikasyong ito sa blog.
Mga Label ng Cloud Provider
Mga label na awtomatikong itinalaga sa mga nilikhang node at volume depende sa cloud provider na ginamit, ay magagamit sa Kubernetes bilang isang beta na bersyon sa napakatagal na panahon - mula nang ilabas ang K8s 1.2 (Abril 2016!). Dahil sa kanilang malawakang paggamit sa napakatagal na panahon, ang mga developer nagpasya, na oras na para ideklara ang feature na stable (GA).
Samakatuwid, lahat sila ay pinalitan ng pangalan nang naaayon (sa pamamagitan ng topology):
... ngunit magagamit pa rin sa ilalim ng kanilang mga lumang pangalan (para sa pabalik na pagkakatugma). Gayunpaman, inirerekomenda ang lahat ng mga administrator na lumipat sa mga kasalukuyang label. Kaugnay na Dokumentasyon Na-update na ang K8s.
Pagganyak para sa pagpapatupad ng tampok na ito (ayon sa KEP) ay:
Bagama't maaaring manu-manong i-deploy ang Kubernetes, ang de facto (kung hindi de jure) na pamantayan para sa operasyong ito ay ang paggamit ng kubeadm. Ang mga sikat na tool sa pamamahala ng system tulad ng Terraform ay umaasa sa kubeadm para sa pag-deploy ng Kubernetes. Kasama sa mga nakaplanong pagpapahusay sa Cluster API ang isang composable package para sa Kubernetes bootstrapping na may kubeadm at cloud-init.
Kung walang structured na output, kahit na ang pinaka-hindi nakakapinsalang mga pagbabago sa unang tingin ay maaaring masira ang Terraform, Cluster API at iba pang software na gumagamit ng mga resulta ng kubeadm.
Kasama sa aming mga agarang plano ang suporta (sa anyo ng structured na output) para sa mga sumusunod na kubeadm command:
alpha certs
config images list
init
token create
token list
upgrade plan
version
Ilustrasyon ng isang tugon ng JSON sa isang utos kubeadm init -o json:
Sa pangkalahatan, ang paglabas ng Kubernetes 1.17 ay naganap sa ilalim ng motto na "Katatagan" Ito ay pinadali ng katotohanan na maraming mga tampok sa loob nito (ang kanilang kabuuang bilang ay 14) nakatanggap ng status ng GA. Sa kanila:
Manood ng Mga Bookmark - isang bagong uri ng mga kaganapan na may label na ang lahat ng mga bagay ay hanggang sa isang tiyak na bersyon (resourceVersion) ay naproseso na ng relo;
"proteksyon ng finalizer" (Proteksyon ng Finalizer) para sa mga load balancer (pagsusuri sa kaukulang mga mapagkukunan ng Serbisyo bago tanggalin ang mga mapagkukunan ng LoadBalancer);
pag-optimize ng kube-apiserver sa pagganap kapag nagtatrabaho sa maraming mga relo na sinusubaybayan ang magkatulad na hanay ng mga bagay - nakakamit sa pamamagitan ng pag-iwas sa paulit-ulit na serialization ng parehong mga bagay para sa bawat watcher.
Iba pang mga pagbabago
Ang buong listahan ng mga inobasyon sa Kubernetes 1.17, siyempre, ay hindi limitado sa mga nakalista sa itaas. Narito ang ilang iba pa (at para sa mas kumpletong listahan, tingnan CHANGELOG):
katulad na pagbabago nangyari EndpointSlice API (mula rin sa K8s 1.16), gayunpaman, sa ngayon, hindi pinagana bilang default ang solusyong ito para mapahusay ang performance/scalability ng Endpoint API;