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

Alternativy Kubernetes k příkazům Docker

Docker obvykle poskytuje vývojářům první seznámení s kontejnery. Kubernetes je platforma pro orchestraci, která řeší problémy související se spouštěním kontejnerů v produkci. Zde je návod, jak se příkazy Dockeru mapují na jejich protějšky Kubernetes.

Nemůžete použít docker CLI pro interakci s kontejnery běžícími v Kubernetes. Kubernetes poskytuje své vlastní rozhraní příkazového řádku, kubectl , které vám pomohou spravovat váš cluster. Přečtěte si našeho průvodce, jak začít s kubectl pokud nástroj neznáte.

Žádný z docker příkazy mají stejný název v kubectl . Kubernetes odhaluje funkčnost svým vlastním způsobem. Samotné pracovní zátěže se zásadně liší – Docker je navržen tak, aby pracoval s jedním kontejnerem najednou, zatímco Kubernetes umožňuje orchestraci více replik.

První bod, který je třeba ocenit, je posun v terminologii. Docker odkazuje na „kontejnery“, zatímco Kubernetes používá „pody“. Pod může provozovat jeden kontejner nebo více replik spravovaných jako jedna jednotka. Tento detail stranou, když v Dockeru uvidíte „kontejner“, měli byste myslet na „pod“ Kubernetes. Ve zbývající části tohoto článku budou tyto termíny používány zaměnitelně.

Získání podrobností o vašich kontejnerech

V Dockeru používáte docker ps -a zobrazíte všechny kontejnery na vašem počítači.

Nejbližší ekvivalent Kubernetes je kubectl get pods .

Výstup z těchto dvou příkazů je zcela odlišný. Docker zobrazuje další informace o pracovní zátěži, kterou kontejner běží.

Kubernetes poskytne podrobnosti o obrázku a příkazu při použití describe pod příkaz. Musíte předat název modulu. To poskytuje mnohem podrobnější informace s použitím seznamu namísto tabulky.

Provádění příkazů v kontejnerech

Docker vám umožňuje spustit příkaz ve spuštěném kontejneru pomocí docker exec .

Ekvivalent Kubernetes se také nazývá exec . Místo názvu kontejneru Docker použijte název pod Kubernetes. Příkaz je specifikován mírně odlišně – musí být oddělen od názvu podu znakem -- sekvence.

Můžete použít -it příznaky, abyste získali interaktivní přístup stejným způsobem jako Docker. Toto je zkratka pro --stdin --tty a měl by být použit vždy, když chcete spustit shell v modulu. Zadejte název shellu, například bash , jako příkaz.

Kubectl podporuje attach příkaz, když se chcete připojit k procesu v kontejneru, který již běží. Funguje podobně jako docker attach ale měli byste předat -it příznaky, pokud potřebujete interaktivní přístup.

Zobrazení protokolů kontejneru

Chcete-li zobrazit protokoly kontejneru pomocí Dockeru, použijte docker logs příkaz. Přidání -f přepínač bude „sledovat“ protokoly, takže budou nepřetržitě streamovány do vašeho terminálu.

Kubectlovy logs příkaz má stejnou syntaxi. Zadejte název pod stejným způsobem, jakým Docker přijímá název kontejneru.

Docker i Kubernetes shromažďují protokoly ze standardního výstupu a standardní chyby (stdout /stderr ) proudy běžících kontejnerů. Kubernetes zpracovává restartování kontejneru jinak než Docker. Zatímco v Dockeru restartovaný kontejner připojí své protokoly ke stávajícím, Kubernetes vytvoří nový protokol pro každé spuštění. Protokoly nahrazeného kontejneru můžete získat přidáním --previous příznak do logs příkaz.

Vytváření kontejnerů

Kontejnery Docker se vytvářejí pomocí run příkaz. Zde je návod, jak můžete spustit nginx server s Docker:

docker run -d --name nginx --restart=always -p 80:80 nginx

Tím se vytvoří kontejner pomocí nginx základní obraz a nastaví jej na automatický restart. Server je vázán na výchozí port HTTP 80.

Kubernetes vyžaduje, abyste při přidávání kontejnerů do clusteru mysleli na abstrakce vyšší úrovně. Místo spuštění kontejneru vytváříte rozmístění reprezentovat vaši pracovní zátěž:

kubectl create deployment --image=nginx nginx

Tím se vytvoří nginx rozvinutí. Modul se spustí automaticky; v podu bude kontejner, na kterém běží webový server.

Vytvořením nasazení nebudou jeho kontejnery vázány na žádné porty. Nově vytvořený server ještě není přístupný. Porty musí být odkryté prostřednictvím služby . Pody jsou pomíjivé a mohou obsahovat více replikovaných nádob. Služby definují logickou kolekci modulů a umožňují vám přiřadit jim síťové zdroje, jako je IP adresa a port.

Odhalení nginx nasazení na portu 80 umožní přístup k serveru:

kubectl expose deployment nginx --port=80 --name nginx-http

Pokus o přístup k portu 80 na výchozí IP adrese clusteru by vás nyní měl přesměrovat na nginx server.

Kubectl přímo nepodporuje jiné docker run možnosti, jako je vytvoření svazku a připojení připojení. Kontejnery, které vyžadují trvalé úložiště, budou muset mít svazky nakonfigurované ručně pomocí kubectl příkazy nebo svazek manifestu.

Odebrání kontejnerů

Kontejnery dockeru se odstraní pomocí docker rm příkaz s ID kontejneru.

Kubernetes neumožňuje přímo odstranit kontejnery. Místo toho pracujete s rozmístěním který vytvořil lusk. Použijte kubectl delete deployment příkaz, předání názvu nasazení.

Docker vám umožňuje zastavit nádobu místo jejího odstranění. Kubernetes odebral podporu pro tuto akci. Doporučený způsob dočasného pozastavení nasazení je zmenšení počtu replik na 0. Bez spuštěných modulů je pracovní zátěž efektivně zastavena.

kubectl scale --replicas=0 deployment/my-deployment

Až budete připraveni obnovit nasazení, spusťte scale příkaz znovu. Nastavte počet nových replik na 1 nebo vyšší. Použití více replik může zvýšit dostupnost vaší pracovní zátěže.

Závěr

Mezi Docker CLI a kubectl neexistují žádné přímé paralely . Většina příkazů Kubernetes má jinou syntaxi než jejich protějšky Docker. Než budete moci převést pracovní postupy založené na Dockeru na Kubernetes, budete se muset naučit nové termíny a možnosti.

V mnoha případech neexistuje žádný kubectl alternativa k funkci Docker CLI. Funkce Dockeru je zaměřena na koncept kontejneru. Kubernetes to vezme a umístí to do středu značně rozšířeného ekosystému zdrojů.

S kontejnery se zřídka zachází izolovaně. Místo toho budete muset pracovat se zdroji, jako jsou nasazení, služby a sady replik. To je důvod, proč se učení Kubernetes může zdát náročné, když k němu přistupujete z pohledu uživatele Dockeru.

Pokud jste obeznámeni se základy Dockeru, přechod na Kubernetes by přesto měl být relativně jednoduchý. Zásadní rozdíl je v tom, že to, co Docker vidí jako kontejner, je v Kubernetes obvykle přístupné jako souhrnný „pod“. Pody jsou vytvářeny „rozmístěními“, která představují pracovní zatížení ve vašem clusteru. V případě pochybností nahlédněte do kubectl docs k nalezení vhodné shody pro příkaz Docker.


Docker
  1. Úvod do Dockeru

  2. Jak nainstalovat Docker na Fedoru 32 nebo 31 (a alternativy)

  3. Příkazy Dockeru visí bez odezvy

  1. Některé příkazy DOCKER

  2. Příkazy Dockeru Rychlý průvodce Cheat Sheet

  3. Přístavní dělník

  1. Jak nainstalovat Kubernetes na Ubuntu 18.04

  2. Co je kontejner a jak to souvisí s Dockerem a Kubernetes?

  3. Spusťte dva příkazy pomocí docker exec