
Androany alarobia, Famoahana manaraka ny Kubernetes - 1.16. Araka ny fomban-drazana novolavolaina ho an'ny bilaoginay, izao no fotoana fitsingerenan'ny fahafolo iresahana momba ny fiovana lehibe indrindra amin'ny dikan-teny vaovao.
Ny fampahalalana ampiasaina hanomanana ity fitaovana ity dia nalaina avy amin'ny , ary ny olana mifandraika amin'izany, ny fangatahana fisarihana, ary ny tolo-kevitry ny fanatsarana ny Kubernetes (KEP). Noho izany, andao!..
Nodes
Betsaka ny fanavaozana malaza (amin'ny sata version alpha) no aseho eo amin'ny sisin'ny k8s cluster nodes (Kubelet).
Voalohany, ny antsoina hoe «» (Kaontenera Ephemeral), natao hanatsorana ny fizotran'ny debugging amin'ny pods. Ny mekanika vaovao dia ahafahanao mametraka kaontenera manokana izay manomboka amin'ny anaran'ireo pods efa misy ary miaina mandritra ny fotoana fohy. Ny tanjon'izy ireo dia ny hifanerasera amin'ny pods sy container hafa mba hamahana ny olana sy ny debug. Nisy baiko vaovao nampiharina ho an'ity endri-javatra ity kubectl debug, mitovy amin'ny tena izy amin'ny kubectl exec: fa tsy manao dingana ao anaty container (toy ny in exec) dia mandefa kaontenera ao anaty pod. Ohatra, ity baiko ity dia hampifandray fitoeran-javatra vaovao amin'ny pod:
kubectl debug -c debug-shell --image=debian target-pod -- bashNy antsipiriany momba ny kaontenera ephemeral (sy ny ohatra amin'ny fampiasana azy) dia azo jerena ao . Ny fampiharana amin'izao fotoana izao (ao amin'ny K8s 1.16) dia dika alpha, ary anisan'ny fepetra amin'ny famindrana azy amin'ny dikan-beta ny "fitsapana ny Ephemeral Containers API ho an'ny famoahana 2 farafahakeliny [Kubernetes]."
NB: Amin'ny maha-izy azy ary na ny anarany aza dia mitovy amin'ny plugin efa misy ilay endri-javatra momba izay isika . Antenaina fa miaraka amin'ny fahatongavan'ireo kaontenera ephemeral dia hitsahatra ny fivoaran'ny plugin ivelany misaraka.
Fanavaozana iray hafa - - natao hanomezana mekanika ho an'ny fikajiana ny vidin'ny overhead ho an'ny pods, izay mety miovaova be arakaraka ny fotoana fampandehanana ampiasaina. Ohatra, ny mpanoratra Vokatry ny Kata Containers, izay mitaky ny fampandehanana ny kernel vahiny, ny mpiasan'ny kata, ny rafitra init, sns. Rehefa lasa be loatra ny overhead dia tsy azo odian-tsy hita izany, midika izany fa mila misy fomba hijerena azy amin'ny quota fanampiny, drafitra, sns. Mba hampiharana azy amin'ny PodSpec nampiana saha Overhead *ResourceList (ampitahao amin'ny data in RuntimeClass, raha iray no ampiasaina).
Fanavaozana miavaka iray hafa dia mpitantana ny node topology (Mpitantana Topologie Node), natao hampiraisana ny fomba fiasa amin'ny fanitsiana tsara ny famatsiana loharanon-karena ho an'ny singa samihafa ao amin'ny Kubernetes. Ity hetsika ity dia tarihin'ny fitomboan'ny filana rafitra maoderina isan-karazany (avy amin'ny sehatry ny fifandraisan-davitra, fianarana milina, tolotra ara-bola, sns.) ho an'ny informatika parallèle mahomby sy manamaivana ny fahatarana amin'ny fanatanterahana ny asa, izay ampiasain'izy ireo CPU mandroso sy fahaiza-manafaingana fitaovana. Ny fanatsarana toy izany ao amin'ny Kubernetes dia tontosa hatramin'izao noho ny singa samihafa (mpitantana CPU, mpitantana ny fitaovana, CNI), ary izao izy ireo dia ampiana interface tsara anatiny iray izay mampiray ny fomba fiasa ary manamora ny fifandraisana amin'ireo vaovao mitovy - antsoina hoe topology- mahafantatra - singa amin'ny lafiny Kubelet. Details - in .

Topology Manager Component Diagram
endri-javatra manaraka - manamarina ny kaontenera rehefa mandeha izy ireo (). Araka ny fantatrao, ho an'ny kaontenera izay maharitra ela ny fandefasana azy dia sarotra ny mahazo ny sata vaovao: "vonoina" izy ireo alohan'ny hanombohan'ny asany, na hiafara amin'ny fahatapahan'ny fotoana maharitra. Fanamarinana vaovao (azo atao amin'ny alàlan'ny vavahadin-tserasera antsoina hoe StartupProbeEnabled) manafoana - na ny marimarina kokoa, mampihemotra - ny vokatry ny fisavana hafa mandra-pahavitan'ny pod. Noho izany antony izany dia nantsoina tany am-boalohany ilay endri-javatra . Ho an'ny pods izay maharitra ela vao manomboka, dia azonao atao ny manadihady ny fanjakana ao anatin'ny fotoana fohy.
Ho fanampin'izay, misy fanatsarana ny RuntimeClass avy hatrany amin'ny sata beta, manampy fanohanana ho an'ny "cluster heterogène". C Amin'izao fotoana izao dia tsy ilaina mihitsy ny manana fanohanana ho an'ny RuntimeClass tsirairay isaky ny node: ho an'ny pods dia afaka misafidy RuntimeClass ianao raha tsy mieritreritra momba ny topolojia cluster. Teo aloha, mba hahatratrarana izany - mba hiafara amin'ny node ny pods miaraka amin'ny fanohanana ny zavatra rehetra ilainy - dia ilaina ny mametraka fitsipika mifanaraka amin'ny NodeSelector sy ny fandeferana. IN Miresaka momba ny ohatra amin'ny fampiasana sy, mazava ho azy, ny antsipiriany momba ny fampiharana.
Network
Ny endri-tambajotra roa manan-danja izay niseho voalohany (amin'ny dikan-teny alpha) ao amin'ny Kubernetes 1.16 dia:
- tamba-jotra roa - IPv4/IPv6 - sy ny "fahatakarana" mifanaraka aminy amin'ny haavon'ny pods, nodes, serivisy. Tafiditra ao anatin'izany ny fifandraisana IPv4-to-IPv4 sy IPv6-to-IPv6 eo anelanelan'ny pods, manomboka amin'ny pods mankany amin'ny serivisy ivelany, fampiharana reference (ao anatin'ny plugins Bridge CNI, PTP CNI ary IPAM Host-Local IPAM), ary koa ny mifamadika Mifanaraka amin'ny cluster Kubernetes mandeha. IPv4 na IPv6 ihany. Ny antsipiriany momba ny fampiharana dia ao .
Ohatra iray amin'ny fampisehoana adiresy IP misy karazany roa (IPv4 sy IPv6) ao amin'ny lisitry ny 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 vaovao ho an'ny Endpoint - . Izy io dia mamaha ny olana momba ny fahombiazan'ny API Endpoint efa misy izay misy fiantraikany amin'ny singa isan-karazany ao amin'ny fiaramanidina fanaraha-maso (apiserver, etcd, endpoints-controller, kube-proxy). Hampiana ao amin'ny vondrona Discovery API ny API vaovao ary afaka manompo tondro faran'ny backend an'aliny amin'ny serivisy tsirairay ao anaty cluster misy node an'arivony. Mba hanaovana izany, ny serivisy tsirairay dia aseho amin'ny zavatra N
EndpointSlice, ny tsirairay amin'izy ireo amin'ny alàlan'ny default dia tsy manana teboka farany mihoatra ny 100 (azo amboarina ny sandany). Ny EndpointSlice API dia hanome fahafahana ho an'ny fivoarany amin'ny ho avy: fanohanana adiresy IP maromaro ho an'ny pod tsirairay, fanjakana vaovao ho an'ny teboka farany (tsy hoeReadyиNotReady), subsetting mavitrika ho an'ny teboka farany.
Ny iray naseho tamin'ny famoahana farany dia tonga tamin'ny version beta , nomena anarana service.kubernetes.io/load-balancer-cleanup ary mifamatotra amin'ny serivisy tsirairay misy karazany LoadBalancer. Amin'ny fotoana famafana ny serivisy toy izany, dia manakana ny famafana ny loharanon-karena mandra-pahavitan'ny "fanadiovana" ny loharanon-danja rehetra mifandraika amin'izany.
API Machinery
Ny tena "zava-dehibe amin'ny fanamafisana" dia ao amin'ny faritry ny mpizara Kubernetes API sy ny fifandraisana aminy. Izany no nitranga indrindra noho ny mamindra amin'ny sata marin-toerana ireo izay tsy mila fampidirana manokana (CRD), izay manana sata beta hatramin'ny andro lavitr'i Kubernetes 1.7 (ary Jona 2017 ity!). Ny fanamafisana mitovy dia tonga tamin'ireo endri-javatra mifandraika amin'izany:
- amin'ny
/statusи/scaleho an'ny CustomResources; - dikan-teny ho an'ny CRD, mifototra amin'ny webhook ivelany;
- (ao amin'ny K8s 1.15). (mivadika) ary fanesorana saha mandeha ho azy (famotehana) ho an'ny CustomResources;
- mampiasa ny tetika OpenAPI v3 hamoronana sy hamoahana ny antontan-taratasy OpenAPI ampiasaina hanamarina ny loharanon-karena CRD eo amin'ny lafiny mpizara.
Mekanisma iray hafa efa fantatry ny mpitantana Kubernetes hatry ny ela: - nijanona tao amin'ny sata beta nandritra ny fotoana ela (hatramin'ny K8s 1.9) ary nambara ho stable.
Fampiasa roa hafa no tonga amin'ny beta: и .
Ary ny hany fanavaozana manan-danja amin'ny version alpha dia от SelfLink - URI manokana maneho ny zavatra voatondro ary anisan'ny ObjectMeta и ListMeta (izany hoe ampahany amin'ny zavatra rehetra ao amin'ny Kubernetes). Nahoana izy ireo no mandao izany? Motivation amin'ny fomba tsotra noho ny tsy fisian'ny antony tena izy (mihoatra) amin'ny mbola misy an'io sehatra io. Ny antony ara-dalàna kokoa dia ny fanatsarana ny fampisehoana (amin'ny fanesorana saha tsy ilaina) sy ny fanatsorana ny asan'ny generic-apiserver, izay voatery mitantana sehatra toy izany amin'ny fomba manokana (io no hany sehatra napetraka eo anoloan'ilay zavatra dia serialized). Tena lany andro (ao anatin'ny beta) SelfLink dia hitranga amin'ny Kubernetes version 1.20, ary farany - 1.21.
Fitahirizana data
Ny asa lehibe eo amin'ny sehatry ny fitahirizana, toy ny tamin'ny famoahana teo aloha, dia hita ao amin'ny faritra . Ny fiovana lehibe teto dia:
- voalohany (amin'ny version alpha) Fanohanana plugin CSI ho an'ny nodes mpiasa Windows: ny fomba fiasa amin'izao fotoana izao miaraka amin'ny fitahirizana dia hanolo ihany koa ireo plugins an-tree ao amin'ny Kubernetes core sy FlexVolume plugins avy amin'ny Microsoft miorina amin'ny Powershell;

Tetika fampiharana plugins CSI ao amin'ny Kubernetes ho an'ny Windows - fahafahana , nampidirina tao amin'ny K8s 1.12, dia nitombo ho version beta;
- Ny "promotion" mitovy amin'izany (avy amin'ny alpha ka hatramin'ny beta) dia azo tamin'ny alàlan'ny fahaizana mampiasa CSI hamoronana boky ephemeral eo an-toerana ().
Nampidirina tao amin'ny Kubernetes teo aloha (mampiasa PVC efa misy toy ny DataSource mba hamoronana PVC vaovao) dia nahazo sata beta ihany koa.
Mpandrindra
Fiovana roa miavaka amin'ny fandaharam-potoana (samy amin'ny alpha):
- - fahafahana mampiasa pods fa tsy vondrona fampiharana lojika ho an'ny "fizarana ara-drariny" ny entana (toy ny Deployment sy ReplicaSet) ary manitsy ity fizarana ity (ho toy ny fepetra henjana na toy ny fepetra malefaka, izany hoe laharam-pahamehana). Ny endri-javatra dia hanitatra ny fahafaha-mizara efa misy ny pods efa nomanina, izay voafetra amin'ny safidy
PodAffinityиPodAntiAffinity, manome ny mpitantana ny fanaraha-maso tsara kokoa amin'ity raharaha ity, izay midika fa azo atao tsara kokoa sy azo ampiasaina tsara kokoa ny loharanon-karena. Details - in . - ny fampiasana ny Politika BestFit в RequestedToCapacityRatio Laharam-pahamehana nandritra ny pod drafitra, izay hamela to apply ("famonoana ao anaty fitoeran-javatra") ho an'ny loharano fototra (processor, fitadidiana) sy ny fanampiny (toy ny GPU). Raha mila fanazavana fanampiny dia jereo .

Fanomanana pods: alohan'ny hampiasana ny politika mifanaraka tsara indrindra (mivantana amin'ny alàlan'ny fandaharam-potoana mahazatra) ary amin'ny fampiasana azy (amin'ny alàlan'ny extender scheduler)
Ankoatra izany, ny fahafahana mamorona plugins fandaharam-potoananao manokana ivelan'ny hazo fampandrosoana Kubernetes lehibe (tsy misy hazo).
Fiovana hafa
Ao amin'ny famoahana Kubernetes 1.16 ihany koa dia azo marihina izany fandraisana andraikitra ho an'ny metrika misy amin'ny filaharana feno, na ny marimarina kokoa, mifanaraka amin'ny ho an'ny fitaovana K8s. Miantehitra betsaka amin'ny mifanaraka amin'izany izy ireo . Nipoitra ny tsy fitovian-kevitra noho ny antony samihafa (ohatra, noforonina tsotra izao ny metrika sasany talohan'ny nisehoan'ny toromarika ankehitriny), ary nanapa-kevitra ny mpamorona fa tonga ny fotoana hitondrana ny zava-drehetra amin'ny fenitra tokana, "mifanaraka amin'ny tontolo iainana Prometheus". Ny fampiharana amin'izao fotoana izao amin'ity hetsika ity dia ao amin'ny sata alpha, izay hampiroborobo tsikelikely amin'ny dikan-teny Kubernetes manaraka ho beta (1.17) sy stable (1.18).
Ankoatra izany, dia azo marihina ireto fanovana manaraka ireto:
- Windows fanohanana fampandrosoana с Fitaovana Kubeadm ho an'ity OS ity (dikan-teny alpha),
RunAsUserNameho an'ny kaontenera Windows (dikan-teny alpha), Manohana hatramin'ny version beta ny Groupe Managed Service Account (gMSA), mount/attach ho an'ny volume vSphere. - mekanika famatrarana data amin'ny valin'ny API. Teo aloha dia nisy sivana HTTP nampiasaina ho an'ireo tanjona ireo, izay nametraka fameperana maromaro izay nanakana azy tsy ho afaka amin'ny alàlan'ny default. Miasa izao ny "compression fangatahana mangarahara": mandefa ny mpanjifa
Accept-Encoding: gzipao amin'ny lohapejy dia mahazo valiny voaporitra GZIP izy ireo raha mihoatra ny 128 KB ny habeny. Ny mpanjifa Go dia manohana ho azy ny famatrarana (mandefa ny lohapejy ilaina), ka ho hitan'izy ireo avy hatrany ny fihenan'ny fifamoivoizana. (Mety ilaina ny fanovana kely amin'ny fiteny hafa.) - fampitomboana ny HPA manomboka amin'ny/hatramin'ny aotra pods mifototra amin'ny metrika ivelany. Raha miainga amin'ny zavatra/metrika ivelany ianao, dia rehefa tsy miasa ny enta-mavesatra dia azonao atao ny manitsy ho azy amin'ny replika 0 mba hitahiry loharano. Ity endri-javatra ity dia tokony ho ilaina indrindra amin'ny tranga izay angatahan'ny mpiasa ny loharanon-karena GPU, ary ny isan'ny karazana mpiasa tsy miasa dia mihoatra ny isan'ny GPU misy.
- mpanjifa vaovao - - ho an'ny fidirana "ankapobeny" amin'ny zavatra. Izy io dia natao mba haka mora ny metadata (izany hoe subsection
metadata) avy amin'ny loharanon-karenan'ny kluster ary manaova fanangonam-pako sy fampandehanana quota miaraka amin'izy ireo. - Amboary ny Kubernetes tsy misy lova ("naorina" anaty hazo) mpamatsy rahona (dikan-teny alpha).
- Ho an'ny utility kubeadm fahaiza-manao fanandramana (dikan-alpha) hampihatra ny patch manokana mandritra ny fandidiana
init,joinиupgrade. Mianara bebe kokoa momba ny fampiasana ny saina--experimental-kustomize, jereo ao . - Toerana farany vaovao ho an'ny apiserver - , - mamela anao hanondrana vaovao momba ny fahavononany. Manana saina ihany koa ny mpizara API
--maximum-startup-sequence-duration, mamela anao hifehy ny fanombohana azy. - roa endri-javatra ho an'ny Azure nambara ho stable: fanohanana (Faritra misy) ary (RG). Ankoatra izany, nanampy i Azure:
- AAD sy ADFS;
-
service.beta.kubernetes.io/azure-pip-namehamaritana ny IP-bahoaka an'ny mpandrindra entana; - Fikirana
LoadBalancerNameиLoadBalancerResourceGroup.
- AWS izao dia manana ho an'ny EBS amin'ny Windows sy EC2 API antso
DescribeInstances. - Mahaleo tena izao i Kubeadm CoreDNS configuration rehefa manavao ny CoreDNS version.
- Binary sns amin'ny sary Docker mifanaraka amin'izany World-executable, izay ahafahanao mampandeha ity sary ity tsy mila zo fototra. Ary koa, sary fifindra-monina sns snsd2 version support.
- В nivadika tamin'ny fampiasana distroless ho sary fototra, fanatsarana ny fampisehoana, nampiana mpanome rahona vaovao (DigitalOcean, Magnum, Packet).
- Fanavaozana amin'ny rindrambaiko ampiasaina/miankina: Mandehana 1.12.9, snsd 3.3.15, CoreDNS 1.6.2.
Sal
Vakio ihany koa ao amin'ny bilaoginay:
- «";
- «";
- «";
- «".
Source: www.habr.com


