Elastic Kubernetes Service (EKS) je spravovaná služba Kubernetes, která je hostována na AWS.
Hlavním důvodem pro použití EKS je odstranění zátěže správy podů, uzlů atd. Spouštění Kubernetes v AWS v současnosti vyžaduje velkou technickou odbornost a často nespadá do oblasti řízení mnoha organizací. S EKS je požadovaná infrastruktura spravována „interním“ týmem Amazonu, což uživatelům ponechává plně spravovaný motor Kubernetes, který lze používat buď prostřednictvím rozhraní API nebo standardních nástrojů kubectl.
EKS bude podporovat všechny funkce Kubernetes, včetně jmenných prostorů, nastavení zabezpečení, kvót a tolerancí zdrojů, strategií nasazení, automatických škálovačů a dalších. EKS vám umožní provozovat vlastní řídicí rovinu, ale také se integruje s AWS IAM, takže si můžete udržovat vlastní řízení přístupu k API.
EKS byl postaven nad stávajícím řešením Amazon „Kubernetes—as-a-Service“ s názvem Elastic Container Service for Kubernetes (EKS) je služba spravovaná AWS, která zjednodušuje nasazení, správu a provoz clusterů Kubernetes v cloudu AWS.
Pokud používáte Kubernetes na AWS, odpovídáte za správu řídicí roviny (tj. hlavních uzlů a pracovních uzlů). Musíte se také ujistit, že api-server je vysoce dostupný a odolný proti chybám atd.
EKS vás zbavilo břemene správy řídicí roviny, díky čemuž se nyní můžete soustředit na spouštění úloh Kubernetes. Nejčastěji se používá pro bezstavové aplikace, jako jsou mikroslužby, protože řídicí rovinu spravuje Amazon (EKS).
V této příručce se naučíme, jak vytvořit cluster Kubernetes na AWS s EKS. Dozvíte se, jak vytvořit administrátora pro váš cluster Kubernetes. Dozvíte se také, jak nasadit aplikaci do clusteru. Nakonec svůj cluster otestujete, abyste se ujistili, že vše funguje správně.
Začněme!
Předpoklady
- Účet AWS.
- Článek předpokládá, že znáte Kubernetes a AWS. Pokud ne, věnujte prosím chvíli času prostudování dokumentace k oběma, než začnete tuto příručku.
Vytvoření administrátora s oprávněními
Začněme vytvořením administrátora pro váš klastr.
1. Přihlaste se ke své konzoli AWS a přejděte do IAM. Klikněte na Uživatelé> Přidat uživatele.
2. Na další obrazovce zadejte uživatelské jméno, např. admin . Vyberte Přístupový klíč – Programatický přístup. Klikněte na Další :Oprávnění
3. Na další obrazovce vyberte možnost Připojit existující zásady přímo . Klikněte na AdministratorAccess . Klikněte na Další :Značky .
AdministratorAccess politika je integrovaná zásada se službou Amazon Elastic Container Service (ECS). Poskytuje plný přístup ke všem prostředkům ECS a všem akcím v konzole ECS. Hlavní výhodou této zásady je, že nemusíme vytvářet nebo spravovat dalšího uživatele s extra oprávněními pro přístup ke službě AWS EKS.
Váš administrátor může vytvářet instance EC2, zásobníky CloudFormation, buckety S3 atd. Měli byste být velmi opatrní, komu udělíte tento druh přístupu.
3. Na další obrazovce klikněte na Další :Recenze
4. Na další obrazovce klikněte na Vytvořit uživatel .
5. Na další obrazovce se zobrazí zelená Úspěch zprávu. ID přístupového klíče a
Klíče pro tajný přístup jsou také zobrazeny na této obrazovce. Tyto klíče budete potřebovat ke konfiguraci nástrojů CLI později, takže si tyto klíče poznamenejte jinam.
Vytvoření instance EC2
Nyní, když jste vytvořili administrativního uživatele, pojďme vytvořit instanci EC2, kterou použijete jako váš hlavní uzel Kubernetes.
1. Do vyhledávacího pole zadejte EC2. Klikněte na odkaz EC2. Klikněte na Spustit instanci .
2. Vyberte Amazon Linux 2 AMI (HVM) pro vaši instanci EC2. Toto Amazon Linux AMI budeme používat k usnadnění pozdější instalace Kubernetes a dalších potřebných nástrojů, jako jsou:kubectl!, docker, atd.
3. Na další obrazovce klikněte na Další :Konfigurovat instanci Podrobnosti .
3. Na další obrazovce povolte Automatické přidělování veřejné IP adresy volba. Protože je server v soukromé podsíti, nebude přístupný zvenčí. Svým serverům můžete přidělit veřejné IP adresy tak, že k instanci přiřadíte elastickou IP adresu. Tímto způsobem budou vaše EC2 a ELK přístupné. Klikněte na Další :Úložiště .
3. Na další obrazovce klikněte naDalší:Přidat značky> Další:Konfigurace skupiny zabezpečení .
4. Na další obrazovce klikněte na Zkontrolovat a spustit> Spustit .
5. Zobrazí se dialogové okno páru klíčů. Klikněte na Vytvořit nový pár klíčů . Pojmenujte jej a poté stáhněte a uložte soubor .pem na bezpečné místo. Klikněte na Spustit instance .
Konfigurace nástrojů příkazového řádku
Nyní, když jste vytvořili instanci EC2, musíte pro ni nainstalovat klienta. Z hlediska AWS je klient nástroj příkazového řádku, který vám umožňuje spravovat cloudové objekty. V této části se dozvíte, jak nakonfigurovat nástroje rozhraní příkazového řádku (CLI).
1. Přejděte na svůj řídicí panel EC2. Měli byste vidět spuštěnou novou instanci EC2. Pokud ne, vaše instance může provést první spuštění, počkejte 5 minut a zkuste to znovu. Jakmile je instance spuštěna, klikněte na Připojit .
2. Na další obrazovce klikněte na Připojit .
Budete přesměrováni na interaktivní relaci SSH ve vašem prohlížeči. SSH umožňuje bezpečné připojení a provoz na vzdáleném serveru. Interaktivní relace SSH nám umožní nainstalovat nástroje příkazového řádku pro EKS a Kubernetes přímo do vaší instance EC2.
Jakmile se přihlásíte do relace SSH, první věc, kterou budete muset udělat, je zkontrolovat verzi aws-cli. Je to proto, abyste se ujistili, že používáte nejnovější verzi AWS CLI. AWS CLI se používá ke konfiguraci, správě a práci s vaším clusterem.
Pokud je vaše verze zastaralá, můžete během procesu vytváření clusteru narazit na nějaké problémy a chyby. Pokud je vaše verze nižší než 2.0, budete ji muset upgradovat.
3. Spusťte následující příkaz a zkontrolujte verzi CLI.
aws --version
Jak můžete vidět ve výstupu níže, používáme verzi 1.18.147 z aws-cli , který je velmi zastaralý. Pojďme upgradovat CLI na nejnovější dostupnou verzi, což je v2+ v době psaní tohoto článku.
4. Spusťte níže uvedený příkaz a stáhněte si nejnovější dostupnou verzi AWS CLI do své instance EC2. curl stáhne váš soubor z dané adresy URL, -o jej pojmenuje, jak si vyberete, a "awscli-exe-linux-x86_64.zip" je soubor ke stažení
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
5. Po dokončení stahování spusťte níže uvedený příkaz a extrahujte obsah staženého souboru do aktuálního adresáře.
unzip awscliv2.zip
6. Dále spusťte příkaz which aws a nastavte svůj odkaz na nejnovější verzi rozhraní AWS CLI. Tento příkaz vám dá vědět, kde v PATH vašeho prostředí jej lze nalézt, takže jej můžete spustit z libovolného adresáře.
which aws
Jak můžete vidět ve výstupu níže, zastaralé CLI AWS se nachází na adrese /usr/bin/aws .
7. Nyní musíte nakonfigurovat aws-cli spuštěním příkazu update s některými parametry. První parametr ./aws/install nám pomůže nainstalovat AWS CLI do aktuálního adresáře. Druhý parametr --bin-dir říká, kde v PATH vašeho prostředí bude umístěn AWS CLI, a třetí parametr --install-dir je cesta relativní k bin-dir. Tento příkaz zajistí, že všechny vaše cesty budou aktuální.
sudo ./aws/install --bin-dir /usr/bin --install-dir /usr/bin/aws-cli --update
8. Znovu spusťte příkaz aws --version, abyste se ujistili, že používáte nejnovější verzi.
aws --version
Měli byste vidět aktuálně nainstalovanou verzi AWS CLI. Jak můžete vidět ve výstupu níže, nyní používáme v2.4.7 AWS CLI. Toto je nejnovější verze a nezpůsobí vám žádné problémy při konfiguraci dalších kroků.
9. Nyní, když je vaše prostředí správně nakonfigurováno, je čas, abyste nakonfigurovali, se kterým účtem AWS chcete komunikovat prostřednictvím rozhraní AWS CLI. Spuštěním následujícího příkazu vypíšete aktuálně nakonfigurované proměnné prostředí účtu s aliasem, který s nimi chcete použít.
aws configure
Zobrazí se vám všechny proměnné prostředí vašeho účtu AWS, které jsou aktuálně nakonfigurovány. Něco takového byste měli vidět ve výstupu níže. Aby AWS CLI komunikovalo s vašimi nezbytnými účty, musíte nastavit některé konfigurační parametry. Spusťte níže uvedený příkaz, který vás provede konfiguračním průvodcem k nastavení vašeho účtu AWS.
- ID přístupového klíče AWS [žádné]:Zadejte přístupový klíč AWS, který jste si poznamenali dříve.
- Tajný přístupový klíč AWS [žádný]:Zadejte tajný přístupový klíč AWS, který jste si poznamenali dříve.
- Musíte také zadat výchozí název oblasti, kde bude váš cluster EKS. Měli byste si vybrat oblast AWS, kde bude váš požadovaný cluster EKS a která je vám nejblíže. V tomto tutoriálu jsme zvolili us-východ-1 kvůli její geografické poloze blízko nás a snadnému použití pro další kroky v tutoriálu.
- Výchozí výstupní formát [Žádný]:Jako výchozí výstupní formát zadejte json, protože pro nás bude velmi užitečné zobrazit konfigurační soubory později.
Nyní, když jste nastavili nástroje AWS CLI. Je čas nakonfigurovat nástroj Kubernetes CLI s názvem kubectl ve vašem prostředí, abyste mohli komunikovat se svým clusterem EKS.
Kubectl je rozhraní příkazového řádku pro Kubernetes. Pomocí Kubectl můžete spravovat aplikace běžící na clusterech Kubernetes. Kubectl není ve výchozím nastavení nainstalován na systémech Linux a MacOS. Kubectl můžete nainstalovat na jiné systémy podle pokynů na webu Kubernetes.
10. Spusťte níže uvedený příkaz a stáhněte si binární soubor kubectl. Binární soubor je počítačový soubor s příponou „.bin“, který je spustitelný pouze na určitých typech počítačů. Je to snadný způsob sdílení souborů mezi různými typy počítačů. Používáme binární soubor kubectl, protože binární soubor kubectl je platformně agnostický. Bude fungovat na jakémkoli systému, který může provozovat operační systém podobný Unixu, včetně Linuxu a Mac OS.
curl -o kubectl https://amazon-eks.s3.us-west-2.amazonaws.com/1.16.8/2020-04-16/bin/linux/amd64/kubectl
11. Spusťte níže uvedený příkaz chmod, aby byl binární soubor kubectl spustitelný. Příkaz chmod je příkaz Unix a Linux používaný ke změně přístupových oprávnění k souborům nebo adresářům. Linuxový příkaz chmod používá k určení oprávnění pro každého uživatele osmičkovou číselnou soustavu. Kubectl lze nyní používat na vašem místním počítači.
chmod +x ./kubectl
12. Spuštěním příkazu níže vytvořte adresář kubectl ve složce $HOME/bin a zkopírujte do něj binární soubor kubectl. Příkaz mkdir -p $HOME/bin vytvoří ve vašem domovském adresáři podadresář bin. Příkaz mkdir se používá k vytvoření nových adresářů nebo složek. Volba -p říká příkazu mkdir, aby automaticky vytvořil všechny nezbytné nadřazené adresáře pro nový adresář. $HOME/bin je proměnná prostředí, která ukládá cestu k vašemu domovskému adresáři. Každý uživatel Linuxu má ve svém systému souborů adresář $HOME/bin. Konstrukce &&se nazývá logický operátor AND. Používá se ke seskupování příkazů dohromady, aby bylo možné provést více než jeden příkaz najednou. Konstrukce &&není nezbytná, aby tento příkaz fungoval, ale je zde jako osvědčený postup.
Příkaz cp ./kubectl $HOME/bin/kubectl zkopíruje místní binární soubor kubectl do vašeho adresáře kubectl a přejmenuje soubor na kubectl. Nakonec příkaz export udělá to, co říká - exportuje proměnnou prostředí do paměti shellu, takže ji může použít jakýkoli program spouštěný z tohoto shellu. V našem případě musíme kubectl sdělit, kde je náš adresář kubectl, aby mohl najít binární soubor kubectl.
mkdir -p $HOME/bin && cp ./kubectl $HOME/bin/kubectl && export PATH=$PATH:$HOME/bin
13. Spusťte níže uvedený příkaz verze kubectl a ověřte, zda je kubectl správně nainstalován. Příkaz verze kubectl --short --client vygeneruje zkrácenou verzi verze kubectl v dobře naformátované, pro člověka čitelné odpovědi Kubernetes REST API. Možnost --client umožňuje kubectl vytisknout formátovanou verzi odpovědi Kubernetes REST API, která je konzistentní napříč verzemi.
Volba --short říká kubectl, aby poskytl základní informace v kompaktní formě s jedním desetinným místem pro float a ve zkráceném formátu času, který je stejný jako --format. Měli byste vidět výstup podobný tomu níže. Tento výstup nám říká, že jsme úspěšně nainstalovali kubectl a používá správnou verzi.
Poslední věcí, kterou musíte v této části udělat, je nakonfigurovat nástroj eksctl cli pro použití vašeho clusteru Amazon EKS. Nástroj eksctl cli je rozhraní příkazového řádku, které dokáže spravovat clustery Amazon EKS. Může generovat přihlašovací údaje clusteru, aktualizovat specifikaci clusteru, vytvářet nebo odstraňovat pracovní uzly a provádět mnoho dalších úkolů.
14. Spuštěním následujících příkazů nainstalujte nástroj eksctl cli a ověřte jeho verzi.
curl --silent --location "https://github.com/weaveworks/eksctl/releases/latest/download/eksctl_$(uname -s)_amd64.tar.gz" | tar xz -C /tmp && sudo mv /tmp/eksctl /usr/bin
eksctl version
Zajištění klastru EKS
Nyní, když máte nástroje EC2 a AWS CLI, můžete nyní zřídit svůj první klastr EKS.
1. Spusťte příkaz eksctl create cluster níže a zřiďte cluster s názvem dev v oblasti us-east-1 s jedním hlavním a třemi hlavními uzly.
eksctl create cluster --name dev --version 1.21 --region us-east-1 --nodegroup-name standard-workers --node-type t3.micro --nodes 3 --nodes-min 1 --nodes-max 4 --managed
Příkaz eksctl create cluster vytvoří klastr EKS v oblasti us-východ-1 pomocí výchozích hodnot doporučených Amazonem pro tuto konkrétní konfiguraci a podle toho předá všechny argumenty v uvozovkách ( " ) nebo jako proměnné ( ${ } ).
Parametr name se používá k definování názvu tohoto EKS Clusteru a je to pouze popisný štítek pro vaše pohodlí. verze je verze, kterou chcete, aby cluster používal, v tomto příkladu se budeme držet Kubernetes v1.21.2, ale klidně prozkoumejte i další možnosti.
název-skupiny uzlů je název skupiny uzlů, kterou by měl tento klastr používat ke správě pracovních uzlů. V tomto příkladu to bude jednoduché a použijete pouze standardní pracovní uzly, což znamená, že vaše pracovní uzly budou mít ve výchozím nastavení jeden vCPU a 3 GB paměti.
nodes je celkový počet základních pracovních uzlů, které chcete ve svém clusteru. V tomto příkladu jsou požadovány tři uzly. nodes-min a nodes-max řídí minimální a maximální počet uzlů povolených ve vašem clusteru. V tomto příkladu bude vytvořen alespoň jeden, ale ne více než čtyři pracovní uzly.
2. Můžete přejít do své konzoly CloudFormation a sledovat průběh zřizování.
Jak je ukázáno níže, můžete vidět, že se vytváří váš dev stack.
3. Klikněte na hypertextový odkaz dev stack> Událost. Zobrazí se seznam událostí souvisejících s procesem vytváření. Počkejte na dokončení procesu zřizování – to může trvat až 15 minut v závislosti na vašich konkrétních okolnostech – a zkontrolujte stav zásobníku v konzole CloudFormation.
4. Poté, co počkáte na dokončení zřizování zásobníku, přejděte do konzole CloudFormation a uvidíte stav zásobníku vývojáře CREATE_COMPLETE.
Nyní přejděte do konzole EC2. V EC2 Dashboard uvidíte jeden hlavní uzel a tři hlavní uzly. Tento výstup potvrzuje, že jste úspěšně nastavili cluster EKS.
5. Spuštěním příkazu eksctl níže získáte podrobnosti o clusteru dev, jako je ID clusteru a region.
eksctl get cluster
6. Spusťte níže uvedený příkaz aws eks update, abyste získali přihlašovací údaje uzlu vzdáleného pracovníka. Tento příkaz je nutné provést na libovolném počítači, který se chcete ke clusteru připojit. Stáhne přihlašovací údaje pro váš kubectl za účelem vzdáleného přístupu k EKS Kubernetes Cluster bez použití přístupových klíčů AWS.
aws eks update-kubeconfig --name dev --region us-east-1
Nasazení vaší aplikace v clusteru EKS
Nyní, když máte zřízen svůj EKS Cluster. Pojďme nasadit vaši první aplikaci na váš EKS Cluster. V této části se dozvíte, jak nasadit webový server nginx spolu s nástrojem pro vyrovnávání zatížení jako ukázkovou aplikaci.
1. Spuštěním níže uvedeného příkazu nainstalujte git do svého systému. Ke klonování kódu webového serveru nginx z GitHubu budete potřebovat git.
sudo yum install -y git
2. Spusťte příkaz git clone níže a naklonujte kód webového serveru nginx z githubu do vašeho aktuálního adresáře.
git clone https://github.com/ata-aws-iam/htf-elk.git
3. Spusťte příkaz cd htf-elk pro změnu pracovního adresáře na adresář konfiguračních souborů nginx.
cd htf-elk
4. Spuštěním příkazu ls zobrazíte soubory v aktuálním adresáři.
ls
Ve vašem adresáři nginx uvidíte následující soubory.
5. Spuštěním příkazu cat níže otevřete soubor nginx-deployment.yaml a v tomto souboru uvidíte následující obsah.
cat nginx-deployment.yaml
- apiVersion:apps/v1 je základní rozhraní Kubernetes API
- druh:Rozmístění je druh zdroje, který bude pro tento soubor vytvořen. V Deployment je vytvořen modul pro každý kontejner.
- metadata:určuje hodnoty metadat, které se mají použít při vytváření objektu
- name:nginx-deployment je název nebo štítek pro toto nasazení. Pokud nemá žádnou hodnotu, je název nasazení převzat z názvu adresáře.
- štítky:poskytuje štítky pro aplikaci. V tomto případě bude použita pro směrování služby prostřednictvím elastického vyvažování zátěže (ELB)
- env:dev popisuje proměnnou prostředí, která je definována hodnotou řetězce. Takto můžete svému kontejneru poskytnout dynamická konfigurační data.
- spec:je místo, kde definujete, kolik replik vytvořit. Můžete určit vlastnosti, na kterých má být každá replika založena.
- repliky:3 vytvoří ve vašem clusteru tři replikanty tohoto podu. Ty budou distribuovány na dostupných pracovních uzlech, které odpovídají selektoru štítků.
- containerPort:80 namapuje port z kontejneru na port na hostiteli. V tomto případě namapuje port 80 na kontejneru na port 30000 vašeho místního počítače.
6. Spuštěním příkazu cat níže otevřete soubor služby nginx-svc.yaml. V tomto souboru uvidíte následující obsah.
cat nginx-svc.yaml
7. Spusťte příkaz kubectl apply níže a vytvořte službu nginx ve vašem clusteru Kubernetes. Bude trvat několik minut, než cluster EKS zřídí ELB pro tuto službu.
kubectl apply -f ./nginx-svc.yaml
8. Spusťte níže uvedenou službu kubectl get, abyste získali podrobnosti o službě nginx, kterou jste právě vytvořili.
kubectl get service
Získáte následující výstup. ClusterIP je interní IP kubernetes přiřazená k této službě. Název LoadBalancer ELB je jedinečný identifikátor pro tuto službu. Automaticky vytvoří ELB na AWS a zřídí pro tuto službu veřejný koncový bod, na který se mohou dostat služby dle vašeho výběru, jako je webový prohlížeč (název domény) nebo klienti API. Je přístupný prostřednictvím vámi zvolené IP adresy.
Load Balancer ELB s názvem a6f8c3cf0fe3a468d8828db6059ef05e-953361268.us-east-1.elb.amazonaws.com má port 32406, který bude namapován na kontejnerový port 80. Poznamenejte si název hostitele DNS z výstupu vyrovnávání zatížení ELB; budete jej potřebovat pro přístup ke službě později.
9. Spuštěním příkazu kubectl apply níže použijte nasazení pro váš cluster.
kubectl apply -f ./nginx-deployment.yaml
10. Spusťte nasazení kubectl get, abyste získali podrobnosti o nasazení nginx, které jste právě vytvořili.
kubectl get deployment
11. Spusťte níže uvedený příkaz pro přístup k vaší aplikaci nginx prostřednictvím nástroje pro vyrovnávání zatížení. Ve vašem terminálu/konzoli uvidíte uvítací stránku od nginx, která potvrzuje, že vaše aplikace nginx funguje podle očekávání. Nahraďte
curl "<LOAD_BALANCER_DNS_HOSTNAME>"
12. Ke své aplikaci nginx můžete také přistupovat prostřednictvím prohlížeče zkopírováním a vložením názvu hostitele DNS nástroje pro vyrovnávání zatížení do prohlížeče.
Ověření vysoce dostupné (HA) funkce pro váš cluster
Nyní, když jste svůj cluster úspěšně vytvořili, můžete otestovat funkci HA, abyste se ujistili, že funguje podle očekávání.
Kubernetes podporuje nasazení s více uzly pomocí speciálních řadičů, které spolupracují při sestavování a správě replikovaných modulů nebo služeb. Některé z těchto řadičů jsou Deployments, ReplicationController, Job a DaemonSet.
Řadič nasazení se používá k řízení replikace na úrovni modulu nebo služby. Když váš modul dojdou prostředky, odstraní všechny moduly tohoto replikačního řadiče (kromě toho, který běží na hlavním uzlu) a vytvoří nové repliky tohoto modulu. To vám pomůže dosáhnout velmi vysoké doby provozuschopnosti vašich aplikací.
1. Přejděte na svůj řídicí panel EC2 a zastavte všechny tři pracovní uzly.
2. Spusťte níže uvedený příkaz a zkontrolujte stav svých modulů. Získáte různé stavy:Ukončuje se , Spuštěno a Nevyřízeno pro všechny vaše lusky. Protože jakmile zastavíte všechny pracovní uzly, EKS se pokusí znovu restartovat všechny pracovní uzly a pody. Můžete také vidět některé nové uzly, které můžete identifikovat podle věku (50 ).
kubectl get pod
Spuštění nové instance EC2 a modulů nějakou dobu trvá. Jakmile budou všechny pracovní uzly spuštěny, uvidíte, že se všechny nové instance EC2 vrátí do stavu Spuštěno stav.
3. Znovu spusťte službu kubectl get. Můžete vidět, že ESK vytvoří novou službu nginx a nový název DNS pro váš nástroj pro vyrovnávání zatížení.
kubectl get service
Zkopírujte a vložte nový DNS do svého prohlížeče. Znovu vás přivítá stránka Nginx. Tento výstup potvrzuje, že vaše HA funguje tak, jak má.
Závěr
V tomto článku jste se naučili, jak nastavit cluster EKS. Ověřili jste také, že funkce Highly Available funguje zastavením všech vašich pracovních uzlů a kontrolou stavu vašich modulů. Nyní byste měli být schopni vytvářet a spravovat clustery EKS pomocí kubectl.