GNU/Linux >> Znalost Linux >  >> Panels >> Docker

Jak škálovat Docker kontejnery napříč servery pomocí Kubernetes

Docker je kontejnerizační platforma orientovaná na vývojáře, která vám umožňuje balit aplikace jako samostatné kontejnery. Spustí se všude, kde je k dispozici kompatibilní běhové prostředí kontejneru.

Popularita Dockeru z něj udělala téměř synonymum pro kontejnery, přesto to není dokonalá technologie pro všechny případy použití. Používání Dockeru tak, jak je, představuje problémy ve výrobě, protože jeho CLI je vybaveno pouze pro správu jednotlivých kontejnerů.

Kubernetes je platforma pro orchestraci, která spravuje stohy kontejnerů a škáluje je na více serverech. Můžete nasadit napříč flotilou fyzických strojů a zlepšit tak redundanci a odolnost vaší služby. Zde je návod, jak můžete spustit svůj vlastní cluster pro škálování vašich kontejnerů „Docker“.

Základy Kubernetes

Rozpoznání některých klíčových pojmů Kubernetes vám pomůže pochopit rozdíly ve srovnání s Dockerem. Slovník Kubernetes popisuje desítky zdrojů, které můžete přidat do svého clusteru. Pro tento článek jsou relevantní pouze komponenty, které řídí plánování kontejnerů.

Na vysoké úrovni je instalace Kubernetes shluk „uzlů“. Uzly jsou nezávislé fyzické stroje, které hostí vaše pracovní zátěže. Jediný „hlavní“ uzel je zodpovědný za koordinaci („organizaci“) operací clusteru „naplánováním“ nových kontejnerů do nejvhodnějšího pracovního uzlu.

Zde jsou některé kritické pojmy:

  • Mistr – Hlavní uzel provozuje cluster. Toto je počítač, na který nainstalujete Kubernetes. Spouští řídicí rovinu a deleguje hostování kontejnerizovaných aplikací na pracovní uzly.
  • Řídicí rovina – Řídicí rovina je softwarová součást hlavního uzlu. Zahrnuje několik služeb, včetně serveru API, úložiště konfigurace a plánovače kontejnerů.
  • Uzel – Uzel je stroj, který hostí vaše kontejnery. Každý pracovník spouští komponentu Kubernetes s názvem Kubelet. To zůstává v kontaktu s řídicí rovinou a přijímá pokyny k plánování, na základě kterých jedná a zajišťuje nové kontejnery.
  • Pod – Pod je nejmenší výpočetní jednotka v clusteru Kubernetes, která představuje skupinu instancí kontejneru. Abstrakce pod vám umožňuje interakci s více běžícími kontejnery dohromady.
  • Sada replik – Sady replik jsou zodpovědné za změnu měřítka podů, aby bylo zajištěno, že bude k dispozici určitý počet replik. Pokud požádáte o tři repliky podu, sada replik zaručí, že bude splněno omezení dostupnosti. Pody jsou automaticky vyměněny, pokud selžou, což vám umožní automatizovat replikaci kontejnerů mezi servery.

Vytvoření škálovatelného clusteru vyžaduje hlavní uzel, alespoň dva pracovní uzly a nasazení, které poskytuje více replik. Kubernetes bude moci naplánovat vaše moduly ve všech dostupných uzlech, což vám poskytne odolnost v případě výpadku jednoho z nich.

Vytvoření vašeho clusteru

Kubernetes je k dispozici jako spravovaná nabídka od většiny hlavních poskytovatelů cloudu. Ty poskytují způsob, jak jedním kliknutím vytvořit řídicí rovinu a přidat proměnný počet pracovních uzlů.

Cluster můžete provozovat na svém vlastním hardwaru pomocí samostatné distribuce Kubernetes, jako je MicroK8s. Pokud chcete mít podporu redundantního plánování, budete potřebovat alespoň dva izolované fyzické nebo virtuální počítače.

Nainstalujte MicroK8s na oba počítače. Určete jeden uzel jako hlavní a použijte add-node příkaz ke spuštění procesu registrace uzlu:

microk8s add-node

To způsobí microk8s join příkaz. Přepněte se na sekundární uzel a spusťte příkaz. Připojí se k prvnímu klastru jako nový pracovník. Nyní jsou oba stroje připraveny hostit vaše kontejnerové úlohy.

Definování nasazení v horizontálním měřítku

Aplikace, která běží na více serverech, je popsána jako „horizontálně škálovaná“. Šíří se do několika různých prostředí. Vertikální škálování systému zahrnuje přidání zdrojů do existujícího prostředí.

Nejjednodušší způsob, jak definovat zátěž Kubernetes, je nasazení. Tento typ prostředku vytváří moduly z obrazu kontejneru a nastavuje veřejné síťové trasy prostřednictvím služby. Výchozí nastavení je jedna instance modulu, ale lze je nakonfigurovat s více replikami.

Zde je jednoduchý manifest nasazení:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:latest
        ports:
        - containerPort: 80

Použijte manifest na svůj cluster pomocí Kubectl:

microk8s kubectl apply -f ./manifest.yaml

Kubernetes vytvoří tři Pody, z nichž každý bude hostit webový server NGINX vytvořený z nginx:latest obraz. Port 80 je vystaven jako kontejnerový port pro umožnění příchozího provozu.

Pody budou automaticky distribuovány mezi uzly vašeho clusteru. Uzel bude způsobilý hostit Pod, pokud může poskytnout dostatečné zdroje.

Počet replik můžete kdykoli aktualizovat. Změňte replicas pole ve vašem manifestu a znovu jej použijte na váš cluster. Plánovač Kubernetes podle potřeby podnikne kroky k zajištění nových modulů nebo ukončení starých. Pokud změníte měřítko replicas až na 0, můžete aplikaci přepnout do režimu offline, aniž byste skutečně odstranili nasazení nebo jeho přidružené prostředky.

Dynamické přidávání uzlů

Aktualizace počtu replik vám umožní využít existující prostředky v rámci vašeho clusteru. Nakonec můžete svou kombinovanou kapacitu uzlu zcela vyčerpat a zabránit tak plánování nových modulů. Kubernetes nabízí zařízení pro automatické škálování clusteru, které může vytvářet a ničit uzly , což účinně mění počet modulů, které lze naplánovat.

Nastavení automatického škálování je poměrně náročné. Přesný proces závisí na hostitelském prostředí vašeho clusteru. Vyžaduje integraci s Cluster Autoscaler, který je schopen se připojit k vašemu hostiteli a detekovat změny v poptávce. Pro Google Cloud je k dispozici oficiální dokumentace; řešení jsou také dostupná od Amazon EKS a Microsoft AKS.

Automatické škálování funguje tak, že neustále kontroluje Pody, které nelze naplánovat kvůli nedostatečné kapacitě clusteru. Posuzuje také, zda by úspěšně naplánované moduly mohly být skutečně umístěny se sníženým počtem uzlů. Auto-scaler pak využívá rozhraní API vašeho poskytovatele cloudu k přidávání a odstraňování výpočtových instancí a dynamicky upravuje zdroje vašeho clusteru. To může ovlivnit váš účet, protože vytvoření nové instance je obvykle zpoplatněná operace.

Přehled

Kubernetes usnadňuje distribuci instancí kontejnerů na více serverů. Zaregistrujte své počítače jako uzly nebo použijte spravovaný cloudový cluster a poté vytvořte nasazení, která mají replicas pole set. Svou pracovní zátěž můžete škálovat aktualizací požadovaného počtu replik.

Když se očekávají závažné změny v poptávce, použijte k dynamickému rozšíření kapacity automatické škálování. Tato funkce vám umožňuje vytvářet nové uzly za chodu a přidávat další zdroje, abyste mohli neustále zvyšovat počet svých replik.

Když škálujete Pody, musíte mít na paměti, že je také vyžadována určitá forma distribuce příchozího provozu. Pokud zpřístupňujete port 80, Kubernetes musí být schopen mapovat požadavky na port 80 na jakémkoli z uzlů. Toto funguje automaticky s Deployments and Services. Kubernetes vytváří Load Balancer, který nepřetržitě monitoruje Pody, aby zjistil, kam lze směrovat provoz.


Docker
  1. Jak nainstalovat WordPress pomocí Docker

  2. Jak používat Docker Compose

  3. Jak připojit kontejnery Docker

  1. Jak předávat proměnné prostředí do kontejnerů Docker

  2. Jak vypsat Docker kontejnery

  3. Jak nainstalovat Docker na CentOS

  1. Jak spravovat kontejnery Docker? Osvědčené postupy

  2. Docker vs. Kubernetes

  3. Jak spravovat kontejnery Docker pomocí Portainer na Ubuntu