Kubernetes 1.16: ka ʻike o nā mea hou nui

Kubernetes 1.16: ka ʻike o nā mea hou nui

I keia la Poakolu, e lawe e hoʻokuʻu hou aku o Kubernetes - 1.16. Wahi a ka moʻomeheu i kūkulu ʻia no kā mākou blog, ʻo kēia ka ʻumi o ka makahiki makahiki a mākou e kamaʻilio nei e pili ana i nā loli nui loa i ka mana hou.

Lawe ʻia nā ʻike i hoʻohana ʻia no ka hoʻomākaukau ʻana i kēia mea Hoʻonui nā Kubernetes i nā papa hoʻopili, CHANGELOG-1.16 a me nā pilikia pili, nā noi huki, a me nā Kubernetes Enhancement Proposals (KEP). No laila, e hele kāua!..

Nā pona

Hōʻike ʻia kahi helu nui o nā mea hou kaulana (ma ke kūlana alpha version) ma ka ʻaoʻao o nā nodes cluster K8s (Kubelet).

ʻO ka mea mua, ka mea i kapa ʻia «nā ipu ephemeral» (Nā Paʻa Ephemeral), i hoʻolālā ʻia e maʻalahi i nā kaʻina hana debugging i nā pods. Hāʻawi ka mīkini hou iā ʻoe e hoʻolauna i nā pahu kūikawā e hoʻomaka ana i ka inoa o nā pods i loaʻa a ola no ka manawa pōkole. ʻO kā lākou kumu e launa pū me nā pods a me nā ipu ʻē aʻe i mea e hoʻoponopono ai i nā pilikia a me ka debug. Ua hoʻokō ʻia kahi kauoha hou no kēia hiʻohiʻona kubectl debug, like me ke ano kubectl exec: wale nō ma kahi o ka holo ʻana i kahi kaʻina hana i loko o kahi pahu (e like me ka exec) hoʻolele ʻo ia i kahi pahu i loko o kahi pod. No ka laʻana, e hoʻopili kēia kauoha i kahi pahu hou i kahi pod:

kubectl debug -c debug-shell --image=debian target-pod -- bash

Hiki ke loaʻa nā kikoʻī e pili ana i nā ipu ephemeral (a me nā hiʻohiʻona o kā lākou hoʻohana). pili KEP. ʻO ka hoʻokō ʻana i kēia manawa (ma K8s 1.16) he ʻano alpha, a ma waena o nā koina no ka hoʻololi ʻana i kahi mana beta "e hoʻāʻo ana i ka Ephemeral Containers API no ka liʻiliʻi 2 hoʻokuʻu o [Kubernetes]."

NB: Ma kona ʻano a me kona inoa, ua like ka hiʻohiʻona me kahi plugin i loaʻa kubectl-debuge pili ana iā mākou ua kakau mua. Manaʻo ʻia me ka hiki ʻana mai o nā ipu ephemeral, e pau ka hoʻomohala ʻana i kahi plugin waho ʻē aʻe.

ʻO kekahi hana hou - PodOverhead - i hoʻolālā ʻia e hoʻolako mīkini no ka helu ʻana i nā kumukūʻai o luna no nā pods, hiki ke loli nui ma muli o ka manawa holo i hoʻohana ʻia. Ma keʻano he laʻana, nā mea kākau keia KEP ʻO ka hopena i loko o Kata Containers, e koi ana i ka holo ʻana i ka kernel hoʻokipa, ʻākena kata, ʻōnaehana init, etc. I ka nui o ka overhead, ʻaʻole hiki ke mālama ʻia, ʻo ia ka mea e pono ai ke ala e noʻonoʻo ai no nā quotas hou, hoʻolālā, etc. E hoʻokō i loko PodSpec kahua i hoʻohui ʻia Overhead *ResourceList (hoʻohālikelike me ka ʻikepili ma RuntimeClass, inā hoʻohana ʻia kekahi).

ʻO kekahi mea hou kaulana luna topology node (Node Topology Luna), i hoʻolālā ʻia e hoʻohui i ke ʻano o ka hoʻoponopono maikaʻi ʻana i ka hoʻokaʻawale ʻana i nā kumuwaiwai lako no nā ʻāpana like ʻole ma Kubernetes. Ke alakaʻi ʻia nei kēia hoʻolālā e ka ulu nui ʻana o nā ʻōnaehana hou (mai ke kahua o ke kelepona, ke aʻo ʻana i nā mīkini, nā lawelawe kālā, a me nā mea ʻē aʻe) no ka hana kiʻekiʻe kiʻekiʻe a me ka hoʻemi ʻana i ka lohi i ka hoʻokō ʻana i nā hana, kahi e hoʻohana ai lākou i ka CPU kiʻekiʻe a hiki ke hoʻonui i ka lako. Ua hoʻokō ʻia kēlā mau manaʻo maikaʻi ma Kubernetes ma muli o nā ʻāpana like ʻole (CPU manager, Device manager, CNI), a i kēia manawa e hoʻohui ʻia lākou i kahi kikowaena kūloko hoʻokahi e hoʻohui i ka hoʻokokoke a hoʻomaʻamaʻa i ka pilina o nā mea like hou - kapa ʻia topology- ʻike - nā ʻāpana ma ka ʻaoʻao Kubelet. Nā kikoʻī - ma pili KEP.

Kubernetes 1.16: ka ʻike o nā mea hou nui
Kiʻi Hui Pūʻulu Topology

Hiʻona aʻe - e nānā ana i nā pahu i ka wā e holo ana (ʻimi hoʻomaka). E like me kāu e ʻike ai, no nā pahu e lōʻihi ana ka hoʻomaka ʻana, paʻakikī ke loaʻa i kahi kūlana hou: "pepehi ʻia" paha lākou ma mua o ka hoʻomaka ʻana i ka hana, a i ʻole lākou e pau i ka deadlock no ka manawa lōʻihi. Hōʻoia hou (e hoʻohana ʻia ma o ka puka hiʻona i kapa ʻia StartupProbeEnabled) hoʻopau - a i ʻole, hoʻopaneʻe - ka hopena o nā loiloi ʻē aʻe a hiki i ka manawa i pau ai ka holo ʻana o ka pod. No kēia kumu, ua kapa mua ʻia ka hiʻohiʻona pod-startu liveness-probe holdoff. No nā pods lōʻihi ka hoʻomaka ʻana, hiki iā ʻoe ke koho balota i ka mokuʻāina i nā manawa pōkole.

Eia kekahi, loaʻa koke kahi hoʻomaikaʻi no RuntimeClass i ke kūlana beta, me ka hoʻohui ʻana i ke kākoʻo no nā "huihui heterogeneous". C RuntimeClass Hoʻolālā ʻAʻole pono i kēlā me kēia node ke kākoʻo no kēlā me kēia RuntimeClass: no nā pods hiki iā ʻoe ke koho i kahi RuntimeClass me ka noʻonoʻo ʻole i ka topology cluster. Ma mua, no ka hoʻokō ʻana i kēia - i pau nā pods i nā nodes me ke kākoʻo no nā mea āpau a lākou e pono ai - pono e hāʻawi i nā lula kūpono i NodeSelector a me nā ʻae. IN KAPA E kamaʻilio e pili ana i nā hiʻohiʻona o ka hoʻohana a, ʻoiaʻiʻo, nā kikoʻī hoʻokō.

Pūnaewele

ʻElua mau hiʻohiʻona pūnaewele nui i ʻike ʻia no ka manawa mua (ma ka alpha version) ma Kubernetes 1.16:

  • kākoʻo pūʻulu pūnaewele ʻelua - IPv4/IPv6 - a me kāna "hoʻomaopopo" pili i ka pae o nā pods, nodes, nā lawelawe. Loaʻa iā ia ka IPv4-to-IPv4 a me IPv6-to-IPv6 interoperability ma waena o nā pods, mai nā pods a i nā lawelawe waho, nā hoʻokō kuhikuhi (i loko o ka Bridge CNI, PTP CNI a me Host-Local IPAM plugins), a me ka hoʻohuli Hoʻohālikelike me nā hui Kubernetes e holo ana. IPv4 a i ʻole IPv6 wale nō. Aia nā kikoʻī hoʻokō KAPA.

    He laʻana o ka hōʻike ʻana i nā helu IP o nā ʻano ʻelua (IPv4 a me IPv6) i ka papa inoa o nā pods:

    kube-master# kubectl get pods -o wide
    NAME               READY     STATUS    RESTARTS   AGE       IP                          NODE
    nginx-controller   1/1       Running   0          20m       fd00:db8:1::2,192.168.1.3   kube-minion-1
    kube-master#

  • API hou no Endpoint - EndpointSlice API. Hoʻoponopono ia i nā pilikia hana/scalability o ka Endpoint API e pili ana i nā ʻāpana like ʻole i ka mokulele hoʻokele (apiserver, etcd, endpoints-controller, kube-proxy). E hoʻohui ʻia ka API hou i ka hui Discovery API a hiki iā ia ke lawelawe i nā ʻumi kaukani o nā hope hope i kēlā me kēia lawelawe i loko o kahi pūʻulu i loaʻa i nā tausani o nā nodes. No ka hana ʻana i kēia, ua palapala ʻia kēlā me kēia lawelawe i nā mea N EndpointSlice, ʻaʻole i ʻoi aku ma mua o 100 mau kikoʻī o kēlā me kēia mea ma ka paʻamau (hiki ke hoʻonohonoho ʻia ka waiwai). E hāʻawi pū ka EndpointSlice API i nā manawa no ka hoʻomohala ʻana i ka wā e hiki mai ana: kākoʻo no nā helu IP he nui no kēlā me kēia pod, nā mokuʻāina hou no nā hopena (ʻaʻole wale Ready и NotReady), ka hoʻonohonoho hoʻolalelale no nā helu hope.

ʻO ka mea i hōʻike ʻia ma ka hoʻokuʻu hope loa ua hiki i ka mana beta mea hoʻopau hope, inoa service.kubernetes.io/load-balancer-cleanup a pili i kēlā me kēia lawelawe me ke ʻano LoadBalancer. I ka manawa o ka holoi ʻana i ia lawelawe, pale ia i ka holoi ʻana maoli o ka punawai a hiki i ka pau ʻana o ka "hoʻomaʻemaʻe" o nā kumuwaiwai kūpono kūpono.

Mekini API

ʻO ka "stabilization milestone" maoli ma kahi o ka server Kubernetes API a me ka launa pū me ia. Ua hana nui kēia i ka mahalo ka hoʻoneʻe ʻana i ke kūlana paʻa i ka poʻe ʻaʻole pono ka hoʻolauna kūikawā Nā Kūlana Kūikawā (CRD), i loaʻa ke kūlana beta mai nā lā lōʻihi o Kubernetes 1.7 (a ʻo Iune 2017 kēia!). Ua hiki mai ka stabilization like i nā hiʻohiʻona pili:

  • "nā kumu waiwai" me /status и /scale no CustomResources;
  • huli nā mana no CRD, e pili ana i ka webhook waho;
  • i hoikeia mai nei (i nā K8s 1.15) nā waiwai paʻamau (paʻamau) a me ka wehe 'akomi kahua (ʻokiʻoki) no CustomResources;
  • manawa maopopo me ka hoʻohana ʻana i ka schema OpenAPI v3 e hana a hoʻolaha i nā palapala OpenAPI i hoʻohana ʻia e hōʻoia i nā kumuwaiwai CRD ma ka ʻaoʻao kikowaena.

ʻO kekahi hana ʻē aʻe i kamaʻāina lōʻihi i nā luna Kubernetes: komo pūnaewele - noho pū ʻia ma ke kūlana beta no ka manawa lōʻihi (mai ka K8s 1.9) a ua haʻi ʻia i kēia manawa paʻa.

ʻElua mau hiʻohiʻona i hiki i ka beta: pili ka ʻaoʻao kikowaena и e nānā i nā kaha puke.

A ʻo ka mea hou nui wale nō i ka mana alpha haʻalele от SelfLink - he URI kūikawā e hōʻike ana i ka mea i kuhikuhi ʻia a he ʻāpana o ObjectMeta и ListMeta (ʻo ia hoʻi. ʻāpana o kekahi mea ma Kubernetes). No ke aha lākou e haʻalele nei? Hoʻoikaika ma ke ala maʻalahi kani ʻoiai ʻaʻole i loaʻa nā kumu maoli (nui) no kēia kahua e mau nei. ʻO nā kumu kumu ʻē aʻe e hoʻonui i ka hana (ma ka wehe ʻana i kahi kahua pono ʻole) a me ka maʻalahi i ka hana o ka generic-apiserver, ka mea i koi ʻia e lawelawe i kēlā kahua ma kahi ala kūikawā (ʻo ia wale nō ke kahua i hoʻonohonoho pono ʻia ma mua o ka mea. ua serialized). Obsolescence maoli (i loko o ka beta) SelfLink e hana ʻia e Kubernetes version 1.20, a me ka hope - 1.21.

Waihona ʻikepili

ʻO ka hana nui ma kahi o ka mālama ʻana, e like me nā hoʻokuʻu mua, ʻike ʻia ma ia wahi Kākoʻo CSI. ʻO nā hoʻololi nui ma aneʻi:

  • no ka manawa mua (ma ka mana alpha) puka mai Kākoʻo ʻo CSI plugin no nā nodes limahana Windows: ʻo ke ʻano o ka hana ʻana me ka waiho ʻana e hoʻololi pū i nā plugins in-tree i ka Kubernetes core a me FlexVolume plugins mai Microsoft e pili ana iā Powershell;

    Kubernetes 1.16: ka ʻike o nā mea hou nui
    Hoʻolālā no ka hoʻokō ʻana i nā plugins CSI ma Kubernetes no Windows

  • manawa maopopo hoʻololi i ka nui CSI, i hoʻokomo hou ʻia ma K8s 1.12, ua ulu i kahi mana beta;
  • Ua loaʻa kahi "hoʻolaha" like (mai ka alpha a i ka beta) e ka hiki ke hoʻohana iā CSI e hana i nā volume ephemeral kūloko (Kākoʻo CSI Inline Volume).

Hoʻokomo ʻia i ka mana mua o Kubernetes hana cloning volume (e hoʻohana ana i ka PVC e like me DataSource e hana i ka PVC hou) ua loaʻa nō hoʻi ke kūlana beta.

Mea hoʻonohonoho

ʻElua hoʻololi kaulana i ka hoʻonohonoho ʻana (ma ka alpha):

  • EvenPodsSpreading - manawa kūpono hoʻohana i nā pods ma kahi o nā ʻāpana noi kūpono no ka "puʻunaue kūpono" o nā ukana (e like me ka Deployment a me ReplicaSet) a me ka hoʻoponopono ʻana i kēia māhele (ma ke ʻano he koi paʻakikī a i ʻole ma ke ʻano palupalu, ʻo ia hoʻi ka mea nui). E hoʻonui ka hiʻona i nā mana hoʻolaha o nā pods i hoʻolālā ʻia, i kaupalena ʻia e nā koho PodAffinity и PodAntiAffinity, hāʻawi i nā luna hoʻomalu i ka mana maikaʻi ma kēia mea, ʻo ia hoʻi ka ʻoi aku ka maikaʻi o ka loaʻa kiʻekiʻe a me ka hoʻohana pono ʻana i nā kumuwaiwai. Nā kikoʻī - ma KAPA.
  • E hoʻohana Kulekele BestFit в Noi ʻiaToCapacityRatio Hana Pono i ka wā hoʻolālā pod, e ʻae pili pahu pahu ("hoʻopaʻa i loko o nā pahu") no nā kumuwaiwai kumu ʻelua (processor, memory) a me nā mea hoʻonui (e like me GPU). No nā kikoʻī hou aku, e ʻike KAPA.

    Kubernetes 1.16: ka ʻike o nā mea hou nui
    Hoʻonohonoho i nā pods: ma mua o ka hoʻohana ʻana i ke kulekele kūpono maikaʻi loa (pololei ma o ka mea hoʻonohonoho paʻamau) a me kāna hoʻohana ʻana (ma o ka mea hoʻonui hoʻonohonoho)

Eia hou, i hōʻike ʻia e ka hiki ke hana i kāu mau plugins scheduler ma waho o ke kumu kumu kumu hoʻomohala Kubernetes (ma waho o ka lāʻau).

Nā hoʻololi hou aʻe

Ma ka hoʻokuʻu Kubernetes 1.16 hiki iā ʻoe ke nānā hoʻolālā no lawe mai nā ana i loaʻa i ka hoʻonohonoho piha, a oi aku paha, e like me nā kānāwai kūhelu i ka mea kani K8s. Ke hilinaʻi nui nei lākou i nā mea pili Palapala Prometheus. Ua kū mai nā ʻokoʻa no nā kumu like ʻole (no ka laʻana, ua hana wale ʻia kekahi mau metric ma mua o ka puka ʻana o nā ʻōlelo aʻoaʻo o kēia manawa), a ua hoʻoholo nā mea hoʻomohala ua hiki i ka manawa e lawe i nā mea āpau i kahi kūlana hoʻokahi, "e like me ke koena o ka Prometheus ecosystem." ʻO ka hoʻokō ʻana o kēia hana i kēia manawa aia ma ke kūlana alpha, a e hoʻonui ʻia i nā mana hope o Kubernetes i ka beta (1.17) a me ka paʻa (1.18).

Eia kekahi, hiki ke hoʻomaopopo ʻia nā hoʻololi aʻe:

  • Hoʻomohala kākoʻo Windows с helehelena Kubeadm pono no keia OS (alpha version), manawa kūpono RunAsUserName no nā pahu Windows (alpha version), hoʻomaikaʻi Kākoʻo pū ʻo Group Managed Service Account (gMSA) a hiki i ka mana beta, kākoʻo kau a hoʻopili no nā vSphere volumes.
  • Hana hou ʻia ka mīkini hoʻopili ʻikepili i nā pane API. Ma mua, ua hoʻohana ʻia kahi kānana HTTP no kēia mau kumu, kahi i kau ai i kekahi mau kapu i pale ʻia mai ka hoʻohana ʻia ʻana e ka paʻamau. Ke hana nei ka "ho'opi'i noi akaka": ho'ouna nā mea kū'ai Accept-Encoding: gzip ma ke poʻo, loaʻa iā lākou kahi pane i hoʻopili ʻia e GZIP inā ʻoi aku kona nui ma mua o 128 KB. Kākoʻo aunoa nā mea kūʻai aku i ka hoʻoemi (hoʻouna ʻana i ke poʻo i makemake ʻia), no laila e ʻike koke lākou i ka emi ʻana o ke kaʻa. (Pono ʻia nā hoʻololi liʻiliʻi no nā ʻōlelo ʻē aʻe.)
  • Ua hiki ka hoʻonui ʻana i ka HPA mai/a i ka zero pods e pili ana i nā ana o waho. Inā hoʻohālikelike ʻoe ma muli o nā mea/merika waho, a laila i ka wā ʻole o ka hana, hiki iā ʻoe ke hoʻonui i ka 0 replicas e mālama i nā kumuwaiwai. Pono kēia hiʻohiʻona no nā hihia kahi e noi ai nā limahana i nā kumuwaiwai GPU, a ʻoi aku ka nui o nā ʻano hana hana ʻole i ka helu o nā GPU i loaʻa.
  • Mea kūʻai hou - k8s.io/client-go/metadata.Client - no ka loaʻa ʻana o ka "generalized" i nā mea. Hoʻolālā ʻia e kiʻi maʻalahi i nā metadata (ʻo ia hoʻi metadata) mai nā kumu waiwai puʻupuʻu a hana i ka ʻohi ʻōpala a me nā hana quota me lākou.
  • E kūkulu i nā Kubernetes i kēia manawa hiki iā ʻoe me ka hoʻoilina ʻole ("built-in" in-tree) nā mea hāʻawi kapuaʻi (alpha version).
  • I ka pono kubeadm hoʻohui ʻia hiki i ka hoʻokolohua (alpha version) ke hoʻopili i nā pāpili i ka wā o ka hana init, join и upgrade. E aʻo hou e pili ana i ka hoʻohana ʻana i ka hae --experimental-kustomize, nana iloko KAPA.
  • He hope hou no apiserver - readyz, - hiki iā ʻoe ke hoʻopuka i ka ʻike e pili ana i kona mākaukau. Loaʻa i ka server API ka hae --maximum-startup-sequence-duration, hiki iā ʻoe ke hoʻoponopono i kāna mau hoʻomaka hou.
  • ʻElua nā hiʻohiʻona no Azure ʻōlelo paʻa: kākoʻo nā ʻāpana loaʻa (Nā Wahi Loaʻa) a hui waiwai kea (RG). Eia kekahi, ua hoʻohui ʻo Azure:
    • kākoʻo hōʻoia AAD a me ADFS;
    • annotation service.beta.kubernetes.io/azure-pip-name e kuhikuhi i ka IP lehulehu o ka mea kaulike ukana;
    • manawa maopopo nā hoʻonohonoho LoadBalancerName и LoadBalancerResourceGroup.
  • Loaʻa iā AWS i kēia manawa kākoʻo no EBS ma Windows a hoʻonui ʻia Kāhea EC2 API DescribeInstances.
  • Kūʻokoʻa ʻo Kubeadm i kēia manawa neʻe Hoʻonohonoho CoreDNS i ka wā e hoʻonui ai i ka mana CoreDNS.
  • Binaries a pēlā aku i ke kiʻi Docker pili hana ʻia hiki ke hoʻokō honua, kahi e hiki ai iā ʻoe ke holo i kēia kiʻi me ka ʻole o ka pono o nā kuleana kumu. Eia kekahi, etcd kiʻi migration kākoʻo mana etcd2.
  • В Cluster Autoscaler 1.16.0 Ua hoʻololi ʻia i ka hoʻohana ʻana i ka distroless e like me ke kiʻi kumu, hoʻomaikaʻi i ka hana, hoʻohui i nā mea hoʻolako kapua hou (DigitalOcean, Magnum, Packet).
  • Nā mea hou i nā polokalamu i hoʻohana ʻia/hilinaʻi: Hele 1.12.9, etcd 3.3.15, CoreDNS 1.6.2.

PS

E heluhelu pū ma kā mākou blog:

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka