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

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

I kēia pō e lawe e hoʻokuʻu hou aku o Kubernetes - 1.14. Wahi a ka moʻomeheu i hoʻomohala ʻia no kā mākou blog, ke kamaʻilio nei mākou e pili ana i nā loli nui i ka mana hou o kēia huahana Open Source nani.

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.14 a me nā pilikia pili, nā noi huki, Kubernetes Enhancement Proposals (KEP).

E hoʻomaka kākou me kahi hoʻolauna nui mai SIG cluster-lifecycle: puʻupuʻu failover dynamic ʻO nā Kubernetes (a i ʻole e ʻoi aku ka pololei, nā hoʻolaha HA hoʻokipa ponoʻī) i kēia manawa hiki ke hana me ka hoʻohana ʻana i nā kauoha kamaʻāina (ma ka pōʻaiapili o nā pūʻulu node hoʻokahi). kubeadm (init и join). I ka pōkole, no kēia:

  • ua hoʻoili ʻia nā palapala hōʻoia i hoʻohana ʻia e ka hui i nā mea huna;
  • no ka hiki ke hoʻohana i ka hui etcd i loko o ka pūʻulu K8s (ʻo ia hoʻi ka hoʻopau ʻana i ka hilinaʻi o waho ma mua) etcd-operator;
  • Hoʻopaʻa i nā hoʻonohonoho i manaʻo ʻia no kahi mea kaulike o waho e hāʻawi ana i kahi hoʻonohonoho hoʻomanawanui hewa (i ka wā e hiki mai ana ua hoʻolālā ʻia e hoʻopau i kēia hilinaʻi, akā ʻaʻole i kēia manawa).

Kubernetes 1.14: ka ʻike o nā mea hou nui
Hoʻolālā ʻia o kahi pūʻulu Kubernetes HA i hana ʻia me kubeadm

Hiki ke loaʻa nā kikoʻī o ka hoʻokō ma manaʻo hoʻolālā. Ua kali lōʻihi ʻia kēia hiʻohiʻona: ua manaʻo ʻia ka mana alpha ma K8s 1.9, akā i kēia manawa wale nō.

API

hui apply a ma keʻano hooponopono mea hoolaha ua hala mai kubectl ma apiserver. Ua wehewehe pōkole nā ​​mea hoʻomohala i kā lākou hoʻoholo ma ka ʻōlelo ʻana i kēlā kubectl apply - he ʻāpana koʻikoʻi o ka hana ʻana me nā hoʻonohonoho ma Kubernetes, akā naʻe, "piʻi i nā pōpoki a paʻakikī hoʻi e hoʻoponopono," a no laila pono e hoʻihoʻi ʻia kēia hana i ka maʻamau a hoʻololi ʻia i ka mokulele hoʻokele. Nā hiʻohiʻona maʻalahi a maopopo o nā pilikia e kū nei i kēia lā:

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

Aia nā kikoʻī e pili ana i ka hoʻokō KAPA. ʻO ka mākaukau o kēia manawa he alpha (ua hoʻolālā ʻia ka hoʻolaha ʻana i ka beta no ka hoʻokuʻu ʻana o Kubernetes aʻe).

Loaʻa i ka mana alpha manawa maopopo me ka hoʻohana ʻana i ka papahana OpenAPI v3 no hana a hoʻopuka i nā palapala OpenAPI no CustomResources (CR) hoʻohana ʻia e hōʻoia (ʻaoʻao-server) nā kumu waiwai i hoʻoholo ʻia e ka mea hoʻohana (CustomResourceDefinition, CRD). ʻO ka hoʻopuka ʻana iā OpenAPI no CRD hiki i nā mea kūʻai aku (e.g. kubectl) hana i ka hōʻoia ma kou ʻaoʻao (ma loko kubectl create и kubectl apply) a hoʻopuka i nā palapala e like me ka papahana (kubectl explain). Nā kikoʻī - ma KAPA.

Nā lāʻau i loaʻa mua ke wehe nei me ka hae O_APPEND (akā ʻaʻole O_TRUNC) e pale aku i ka nalo ʻana o nā lāʻau i kekahi mau kūlana a no ka maʻalahi o ka ʻoki ʻana i nā lāʻau me nā pono waho no ka hoʻololi ʻana.

Ma ka pōʻaiapili o ka Kubernetes API, hiki ke ʻike ʻia i loko PodSandbox и PodSandboxStatus hoʻohui ʻia kahua runtime_handler e hoʻopaʻa ʻike e pili ana RuntimeClass i loko o ka pod (heluhelu hou e pili ana iā ia ma ka kikokikona e pili ana Hoʻokuʻu ʻia ʻo Kubernetes 1.12, kahi i ʻike ʻia ai kēia papa ma ke ʻano he alpha), a ma Admission Webhooks hoʻokō ʻia hiki ke hoʻoholo i nā mana AdmissionReview kākoʻo lākou. ʻO ka hope, aia nā lula Admission Webhooks i kēia manawa hiki ke kaupalena ka nui o kā lākou hoʻohana ʻana e nā namespaces a me nā pūʻulu hana.

Kahului

PersistentLocalVolumes, i loaʻa ke kūlana beta mai ka wā i hoʻokuʻu ʻia ai K8s 1.10, hoolahaia stable (GA): ʻaʻole pio kēia puka hiʻohiʻona a wehe ʻia ma Kubernetes 1.17.

He wā kūpono ka hoʻohana ʻana i nā mea hoʻololi kaiapuni i kapa ʻia API i lalo (no ka laʻana, ka inoa pod) no nā inoa o nā papa kuhikuhi i kau ʻia e like me subPath, ua hoʻomohala ʻia - ma ke ʻano o kahi kahua hou subPathExpr, i hoʻohana ʻia i kēia manawa no ka hoʻoholo ʻana i ka inoa papa kuhikuhi i makemake ʻia. Ua ʻike mua ʻia ka hiʻohiʻona ma Kubernetes 1.11, akā no ka 1.14 ua mau ia i ke kūlana alpha.

E like me ka hoʻokuʻu ʻana o Kubernetes ma mua, ua hoʻokomo ʻia nā loli koʻikoʻi no ka hoʻomohala ʻana i ka CSI (Container Storage Interface):

'O CSI

Loaʻa (ma ke ʻano o ka mana alpha) kākoʻo hoʻololi i ka nui no nā puke CSI. No ka hoʻohana ʻana, pono ʻoe e ʻae i ka puka hiʻohiʻona i kapa ʻia ExpandCSIVolumes, a me ke kū ʻana o ke kākoʻo no kēia hana i kahi mea hoʻokele CSI kikoʻī.

ʻO kekahi hiʻohiʻona no CSI ma ka alpha version - manawa maopopo e kuhikuhi pololei (ʻo ia hoʻi me ka hoʻohana ʻole ʻana i ka PV/PVC) i nā puke CSI i loko o ka kikoʻī pod. ʻO kēia wehe i ka palena o ka hoʻohana ʻana iā CSI ma ke ʻano he mālama ʻikepili mamao, e wehe ana i na puka i ke ao nei no lakou nā puke ephemeral kūloko. No ka hoʻohana (laʻana mai ka palapala) pono e ho'ā CSIInlineVolume puka hiʻona.

Aia kekahi holomua i loko o nā "internals" o Kubernetes e pili ana i ka CSI, ʻaʻole i ʻike ʻia e nā mea hoʻohana hope (nā luna ʻōnaehana) ... ala kahiko", i loko o ka K8s codebase (in -tree), a me ka lua - ma ke ʻano o ka CSI hou (e heluhelu hou e pili ana i ia mea, no ka laʻana, in maanei). Hoʻokumu kēia i nā pilikia hiki ke hoʻomaopopo ʻia i ka wā e hoʻopaʻa ai ʻo CSI ponoʻī. ʻAʻole hiki ke hoʻopau wale i ka API o nā plugins kūloko (in-tree) ma muli o kulekele Kubernetes pili.

ʻO kēia mau mea i alakaʻi i ka ʻoiaʻiʻo i hiki i ka mana alpha kaʻina neʻe code plugin kūloko, i hoʻokō ʻia e like me ka lāʻau, i nā plugins CSI, mahalo i nā hopohopo o nā mea hoʻomohala e hoʻemi ʻia i ke kākoʻo ʻana i hoʻokahi mana o kā lākou plugins, a e mau ana ka hoʻohālikelike ʻana me nā API kahiko a hiki ke haʻi ʻia i ka wā kahiko ma ke ʻano maʻamau. Manaʻo ʻia ma ka hoʻokuʻu hou ʻana o Kubernetes (1.15) e neʻe ʻia nā plugins hāʻawi kapuaʻi āpau, e loaʻa i ka hoʻokō ke kūlana beta a e hoʻāla ʻia i nā hoʻonohonoho K8s ma ke ʻano maʻamau. No nā kikoʻī, e ʻike manaʻo hoʻolālā. ʻO kēia neʻe ʻana kekahi i hopena haʻalele mai nā palena leo i wehewehe ʻia e nā mea hāʻawi kapuaʻi kikoʻī (AWS, Azure, GCE, Cinder).

Eia hou, kākoʻo no nā mea poloka me CSI (CSIBlockVolume) hoʻoili ʻia i ka mana beta.

Nodes/Kubelet

Hōʻike ʻia ka mana Alpha wahi hope hou i Kubelet, i hoʻolālā ʻia no hoʻihoʻi i nā ana ma nā kumu waiwai. ʻO ka ʻōlelo maʻamau, inā loaʻa iā Kubelet nā ʻikepili i ka hoʻohana ʻana i ka ipu mai cAdvisor, i kēia manawa ua loaʻa kēia ʻikepili mai ka pahu runtime environment ma o CRI (Container Runtime Interface), akā mālama ʻia ka hoʻohālikelike no ka hana ʻana me nā mana kahiko o Docker. Ma mua, ua hoʻouna ʻia nā ʻikepili i hōʻiliʻili ʻia ma Kubelet ma o ka REST API, akā i kēia manawa kahi hopena i loaʻa ma /metrics/resource/v1alpha1. Hoʻolālā lōʻihi o nā mea hoʻomohala komo pū ʻo ia ka hōʻemi ʻana i ka pūʻulu o nā ana i hāʻawi ʻia e Kubelet. Ma ke ala, ʻo kēia mau metric iā lākou iho ano kahea lakou ʻaʻole "nā kumu waiwai", akā "nā kumu waiwai", a ua wehewehe ʻia ʻo ia ʻo "nā kumu waiwai mua, e like me ka cpu, a me ka hoʻomanaʻo".

ʻO kahi nuance hoihoi loa: ʻoiai ka maikaʻi o ka hana maikaʻi o ka hopena gRPC i ka hoʻohālikelike ʻana me nā hihia like ʻole o ka hoʻohana ʻana i ka format Prometheus. (e ʻike i ka hopena o kekahi o nā hōʻailona ma lalo), ua makemake nā mea kākau i ke ʻano kikokikona o Prometheus ma muli o ke alakaʻi maopopo ʻana o kēia ʻōnaehana nānā i ke kaiāulu.

"ʻAʻole kūpono ka gRPC me nā pipeline nānā nui. E hoʻohana wale ʻia ka Endpoint no ka hāʻawi ʻana i nā ana i ka Metrics Server a i ʻole ka nānā ʻana i nā ʻāpana e hoʻopili pololei me ia. ʻO ka hana hōʻano kikokikona Prometheus i ka wā e hoʻohana ai i ka cache ma ka Metrics Server lawa pono no mākou e makemake iā Prometheus ma mua o gRPC i hāʻawi ʻia i ka lawe ʻia ʻana o Prometheus i ke kaiāulu. I ka manawa e paʻa ai ka format OpenMetrics, hiki iā mākou ke hoʻokokoke i ka hana gRPC me kahi ʻano proto-based.

Kubernetes 1.14: ka ʻike o nā mea hou nui
ʻO kekahi o nā hoʻokolohua hoʻohālikelike hoʻohālikelike o ka hoʻohana ʻana i nā palapala gRPC a me Prometheus i ka hope Kubelet hou no nā ana. Hiki ke loaʻa nā kiʻi a me nā kikoʻī ʻē aʻe ma KAPA.

Ma waena o nā hoʻololi ʻē aʻe:

  • Kubelet i kēia manawa (hoʻokahi manawa) hoao e hooki nā pahu i kahi kūlana ʻike ʻole ma mua o ka hoʻomaka hou ʻana a me ka holoi ʻana i nā hana.
  • Ke hoʻohana nei PodPresets i kēia manawa i ka pahu init hoʻohui ʻia ka ʻike like me ka pahu maʻamau.
  • kubelet hoʻomaka e hoʻohana usageNanoCores mai ka mea hāʻawi helu helu CRI, a no nā nodes a me nā pahu ma Windows hoʻohui ʻia ʻikepili pūnaewele.
  • Hoʻopaʻa ʻia ka ʻike o ka ʻōnaehana hana a me ka hoʻolālā hale i nā lepili kubernetes.io/os и kubernetes.io/arch Nā mea node (hoʻololi ʻia mai ka beta a i ka GA).
  • Hiki ke kuhikuhi i kahi hui mea hoʻohana ʻōnaehana kikoʻī no nā ipu i loko o kahi pod (RunAsGroup, ua puka mai ma K8s 1.11) holomua ma mua o ka beta (ua hoʻohana ʻia e ka paʻamau).
  • du a loaʻa i hoʻohana ʻia ma cAdvisor, pani ʻia ma ka hoʻokō Go.

CLI

I ka cli-runtime a me kubectl hoʻohui ʻia -k hae no ka hoohui ana me hoʻopilikino (ma ke ala, ua hoʻokō ʻia kona hoʻomohala ʻana i kahi waihona ʻokoʻa), i.e. e hana i nā faila YAML hou mai nā papa kuhikuhi kustomization kūikawā (no nā kikoʻī e pili ana i ka hoʻohana ʻana iā lākou, ʻike KAPA):

Kubernetes 1.14: ka ʻike o nā mea hou nui
Ka laʻana o ka hoʻohana ʻana i ka faila maʻalahi hoʻopilikino (hiki i kahi noi paʻakikī o kustomize i loko nā pani)

Eia hou:

  • Hoʻohui ʻia hui hou kubectl create cronjob, nona ka inoa nona iho.
  • В kubectl logs i kēia manawa hiki iā ʻoe e hui pū hae -f (--follow no ka hoʻoheheʻe ʻana i nā logs) a -l (--selector no ka ninau lepili).
  • kubectl ao aku kope i nā faila i koho ʻia e ka wild card.
  • I ka hui kubectl wait hoʻohui ʻia hae --all e koho i nā kumuwaiwai a pau i loko o ka namespace o ke ʻano waiwai i ʻōlelo ʻia.

ʻO kekahi

Ua loaʻa ke kūlana paʻa (GA) i kēia mau mana:

Nā hoʻololi ʻē aʻe i hoʻokomo ʻia ma Kubernetes 1.14:

  • ʻAʻole ʻae ke kulekele RBAC paʻamau i ke komo ʻana i ka API discovery и access-review mea hoʻohana me ka hōʻoia ʻole (ʻaʻole hōʻoia ʻia).
  • Kākoʻo CoreDNS kūhelu hōʻoiaʻiʻo ʻO Linux wale nō, no laila ke hoʻohana ʻana i ka kubeadm e kau iā ia (CoreDNS) i loko o kahi pūpū, pono e holo nā nodes ma Linux (hoʻohana ʻia nā nodeSelectors no kēia palena).
  • ʻO ka hoʻonohonoho CoreDNS paʻamau i kēia manawa hoʻohana hoʻopili i mua ma kahi o ka mea koho. Eia kekahi, ma CoreDNS hoʻohui ʻia ReadinessProbe, ka mea e pale ai i ka hoʻopaʻa ʻana i nā pahu kūpono (ʻaʻole mākaukau no ka lawelawe).
  • Ma kubeadm, ma nā pae init ai ole ia, upload-certs, lilo i mea hiki e hoʻouka i nā palapala hōʻoia e hoʻohui i ka mokulele mana hou i ka mea huna kubeadm-certs (e hoʻohana i ka hae. --experimental-upload-certs).
  • Ua ʻike ʻia kahi mana alpha no nā hoʻonohonoho Windows Kākoʻo gMSA (Group Managed Service Account) - nā moʻokāki kūikawā ma Active Directory hiki ke hoʻohana ʻia e nā ipu.
  • No G.C.E. hoʻāla ʻia mTLS encryption ma waena o etcd a me kube-apiserver.
  • Nā mea hou i nā polokalamu i hoʻohana ʻia: E hele i ka 1.12.1, CSI 1.1, CoreDNS 1.3.1, ke kākoʻo Docker 18.09 i kubeadm, a ʻo 1.26 ka palena iki i kākoʻo ʻia.

PS

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

Source: www.habr.com

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