Udviklet af | |
---|---|
Sidste version | 1.21.0 (8. april 2021) |
Depositum | github.com/kubernetes/kubernetes |
Skrevet i | Gå |
Operativ system | Linux , Microsoft Windows og macOS |
Type | Linux Foundation Project ( d ) |
Licens | Apache-licensversion 2.0 |
Internet side | kubernetes.io |
Kubernetes (ofte benævnt "K8s") er et open source- system, der sigter mod at give en " platform til automatisering af implementering, skalering og implementering af applikationscontainere på serverklynger ". Det fungerer med en række containeriseringsteknologier og bruges ofte med Docker . Det blev oprindeligt designet af Google og derefter doneret til Cloud Native Computing Foundation.
Kubernetes (fra κυβερνήτης : græsk for "rorsmand" eller "pilot") oprettet af Joe Beda, Brendan Burns og Craig McLuckie, der hurtigt kom sammen med andre Google-ingeniører som Brian Grant og Tim Hockin, blev først annonceret af Google i midten af 2014. Dens udvikling og arkitektur var stærkt påvirket af systemet Borg (in) Google. Desuden kommer de fleste af de største bidragydere fra Borg-projektet. Kubernetes 'oprindelige navn internt var Project Seven , med henvisning til Star Trek-karakteren, der er en Borg, der blev venlig. De syv eger i Kubernetes-logobjælken er et nik til det originale navn.
Kubernetes version 1.0 blev udgivet den 21. juli 2015. Med udgivelsen af den første version af Kubernetes, samarbejdede Google med Linux Foundation for at oprette Cloud Native Computing Foundation (CNCF) og tilbød Kubernetes som startteknologi.
Kubernetes bruges også af RedHat til sit OpenShift- produkt , af CoreOS i sit Tectonic-produkt og af Rancher Labs til sin Rancher containerhåndteringsplatform.
Kubernetes definerer et sæt værktøjer ("primitiver"), der tilsammen giver mekanismer til implementering, vedligeholdelse og skalering af applikationer. Disse elementer, der udgør Kubernetes, er designet til at være kombineret og skalerbare og derfor i stand til at understøtte en lang række arbejdsbelastninger. Denne udvidelse tilvejebringes i vid udstrækning af Kubernetes API, som bruges af interne komponenter såvel som af udvidelser og containere, der kører på Kubernetes.
Den grundlæggende planlægningsenhed i Kubernetes kaldes en " pod ". Det er et abstrakt billede af containerkomponenter. En pod består af en eller flere containere, der garanteret placeres sammen på en værtsmaskine og kan dele dens ressourcer. Hver pod i Kubernetes har en unik IP-adresse (inde i klyngen), som gør det muligt for applikationer at bruge maskinens porte uden risiko for konflikt. En pod kan definere et volumen, f.eks. Et bibliotek på et lokalt drev eller på netværket, og udsætte det for containere i den pod . De bælg kan styres manuelt via API'en af Kubernetes. Deres ledelse kan også delegeres til en controller.
De bælg er knyttet til den knude, der udruller indtil de udløber eller sletning. Hvis knudepunktet mislykkes, vil nye pods med de samme egenskaber som de foregående blive distribueret til andre tilgængelige noder.
Kubernetes tillader kunder (brugere og interne komponenter) at vedhæfte nøgleværdipar kaldet "labels" til ethvert API-objekt i systemet, såsom bælg og noder. Efter korrespondance er "etiketvælger" forespørgsler på etiketter, der er knyttet til objekter.
Etiketter og vælgere er den første grupperingsmekanisme i Kubernetes og bruges til at bestemme, hvilke komponenter der skal udføres en operation på.
For eksempel, hvis pods i en applikation har etiketter til et system tier(" frontend", " backend" for eksempel) og et release_track(" preproduction", " production", for eksempel), kan en handling på alle noder " backend" og " preproduction" bruge en etiketvælger som følger:
tier=backend AND release_track=preproduction
En controller er en voldgiftsløkke, der driver en klynges aktuelle tilstand til den ønskede tilstand. Det gør det ved at administrere et sæt bælg. En af typerne af controller kaldes en "replikeringscontroller", den håndterer replikering og skalering ved at starte et bestemt antal kopier af en pod på en klynge. Den håndterer også oprettelsen af erstatningspuder, hvis den underliggende node er defekt To af controllere, der er en del af Kubernetes kernesystem, er: "DaemonSet Controller" til at starte en enkelt pod på hver maskine (eller et undersæt af maskiner) samt "Job Controller" til at starte pods, der har et specifikt formål (f.eks. scripts) Sættet med bælg, som en controller administrerer, bestemmes af selektorens etiketter, der er en del af controller-definitionen.
En Kubernetes-tjeneste er en gruppe bælg, der arbejder sammen, for eksempel et lag i en applikation med flere lag. Alle bælg, der udgør en tjeneste, defineres af en etiketvælger. Kubernetes leverer en opdagelses- og routingtjeneste ved at tildele en IP-adresse og et domænenavn til en tjeneste og afbalancerer trafikbelastningen ved at bruge rund-robin af netværksforbindelser fra den adresse på alle pods, der svarer til vælgeren (selv når, i i tilfælde af en fejl, skifter bælgene maskiner). Som standard er en tjeneste eksponeret inde i en klynge (f.eks. Kan backend- pods grupperes i en service med anmodninger fra frontend- load- pods afbalanceret med backends), men en service kan også blive eksponeret uden for en klynge (for eksempel så klienter kan slutte sig til frontend bælg).
Kubernetes følger master / slave-arkitekturen. Kubernetes-komponenter kan opdeles i dem, der styrer en individuel knude, og dem, der er en del af kontrolplanet.
Kubernetes-masteren er den primære kontrolenhed, der styrer arbejdsbyrden og styrer kommunikationen i systemet. Kubernetes kontrolplan består af flere komponenter, hver med sin egen proces, som kan køre på en enkelt masternode eller på flere mastere for at oprette klynger med høj tilgængelighed. De forskellige komponenter i Kubernetes kontrolplan er beskrevet nedenfor:
osvetcd er en vedvarende og let distribueret nøgleværdien datalagringsenhed udviklet af CoreOS, der pålideligt gemmer klyngekonfigurationsdata, der repræsenterer klyngens tilstand på ethvert tidspunkt. Andre komponenter scanner for ændringer i dette lager for at gå selv til den ønskede tilstand.
API-serverAPI-serveren er en nøgledel og betjener Kubernetes API via JSON over HTTP . Det giver den interne og eksterne grænseflade af Kubernetes. API-serveren administrerer og validerer REST- anmodninger og opdaterer tilstanden af API-objekter i etcd, så klienter kan konfigurere arbejdsbelastning og containere på medarbejdernoder.
PlanlæggerenPlanlæggeren er en ekstra komponent, der gør det muligt at vælge, hvilken node der skal køre en ikke-planlagt pod baseret på tilgængeligheden af ressourcer. Planlæggeren styrer brugen af ressourcer på hver node for at sikre, at arbejdsbyrden ikke overstiger de tilgængelige ressourcer. For at nå dette mål skal planlæggeren vide, hvilke ressourcer der er tilgængelige, og hvad der i øjeblikket er tildelt serverne.
Controller managerController manager er den proces, hvor Kubernetes primære controllere såsom DaemonSet Controller og Replication Controller kører. Controllere kommunikerer med API-serveren for at oprette, opdatere og slette de ressourcer, de administrerer (pods, serviceendepunkter osv.).
Noden kaldes også Worker eller Minion er en enkelt maskine (eller en virtuel maskine ), hvor containere (arbejdsbelastninger) distribueres. Hver knude i klyngen skal køre containeriseringsprogrammet (f.eks. Docker ) såvel som komponenterne nævnt nedenfor for at kommunikere med masteren for at konfigurere netværksdelen af disse containere.
KubeletKubelet er ansvarlig for den løbende tilstand for hver node (det vil sige at sikre, at alle containere på en node er sunde). Det tager sig af start, stop og vedligeholdelse af applikationsbeholdere (organiseret i bælg) instrueret af kontrolplanet.
Kubelet overvåger en pods tilstand, og hvis den ikke er i den ønskede tilstand, vil pod'en blive omplaceret på den samme node. Knudens status videresendes hvert par sekunder via statusmeddelelser til masteren. Så snart masteren opdager en fejl på en knude, ser replikeringscontrolleren denne tilstandsændring og starter bælgene på andre sunde værter .
Kube-proxyDen Kube-proxy er implementeringen af et netværk proxy og en load balancer , det administrerer indvinding tjeneste samt andre netværksdrift. Det er ansvarligt for at dirigere trafik til den relevante container baseret på IP-adressen og portnummeret på den indgående anmodning.
rådgivercAdvisor er en agent, der overvåger og henter data om forbrug af ressourcer og ydeevne såsom CPU, hukommelse samt disk- og netværksbrug af containerne i hver node.