Koncepty sítě pro aplikace v Azure Kubernetes Service (AKS)

V případě přístupu mikroslužeb založeného na kontejnerech při vývoji aplikací spolupracují komponenty aplikací při zpracování svých úkolů. Kubernetes poskytuje různé prostředky, které tuto spolupráci umožňují:

  • K aplikacím se můžete připojit a zveřejnit je interně nebo externě.
  • Vysoce dostupné aplikace můžete vytvářet vyrovnáváním zatížení aplikací.
  • U složitějších aplikací můžete nakonfigurovat příchozí provoz pro ukončení protokolu SSL/TLS nebo směrování více komponent.
  • Z bezpečnostních důvodů můžete omezit tok síťového provozu do podů a uzlů nebo mezi nimi.

Tento článek představuje základní koncepty, které poskytují sítě pro vaše aplikace v AKS:

Základy Kubernetes

Aby byl umožněn přístup k aplikacím nebo mezi komponentami aplikace, poskytuje Kubernetes abstraktní vrstvu pro virtuální sítě. Uzly Kubernetes se připojují k virtuální síti a poskytují příchozí a odchozí připojení pro pody. Komponenta kube-proxy běží na každém uzlu a poskytuje tyto síťové funkce.

V Kubernetes:

  • Služby logicky seskupují pody, aby byl umožněn přímý přístup na konkrétním portu prostřednictvím IP adresy nebo názvu DNS.
  • Provoz můžete distribuovat pomocí nástroje pro vyrovnávání zatížení.
  • Složitějšího směrování aplikačního provozu je také možné dosáhnout pomocí kontrolerů příchozího přenosu dat.
  • Zabezpečení a filtrování síťového provozu pro pody je možné pomocí zásad sítě Kubernetes.

Platforma Azure také zjednodušuje virtuální sítě pro clustery AKS. Při vytváření nástroje pro vyrovnávání zatížení Kubernetes vytvoříte a nakonfigurujete také základní prostředek nástroje pro vyrovnávání zatížení Azure. Při otevření síťových portů podům se konfiguruje odpovídající pravidla skupiny zabezpečení sítě Azure. Pro směrování aplikací HTTP může Azure také nakonfigurovat externí DNS, protože jsou nakonfigurované nové trasy příchozího přenosu dat.

Služby

Aby zjednodušil konfiguraci sítě pro úlohy aplikací, používá Kubernetes služby k logickému seskupení sady podů a k zajištění připojení k síti. K dispozici jsou následující typy služeb:

  • IP adresa clusteru

    Vytvoří interní IP adresu pro použití v clusteru AKS. Vhodné pro interní aplikace, které podporují jiné úlohy v rámci clusteru.

    Diagram znázorňující tok provozu PROTOKOLU IP clusteru v clusteru AKS

  • NodePort

    Vytvoří mapování portů na podkladovém uzlu, které umožňuje přístup k aplikaci přímo pomocí IP adresy a portu uzlu.

    Diagram znázorňující tok provozu NodePort v clusteru AKS

  • LoadBalancer

    Vytvoří prostředek nástroje pro vyrovnávání zatížení Azure, nakonfiguruje externí IP adresu a připojí požadované pody k back-endového fondu nástroje pro vyrovnávání zatížení. Aby se zákazníkům umožnil přístup k aplikaci, vytvoří se na požadovaných portech pravidla vyrovnávání zatížení.

    Diagram znázorňující Load Balancer toku provozu v clusteru AKS

    Pro dodatečné řízení a směrování příchozího provozu můžete místo toho použít kontroler příchozího přenosu dat.

  • ExternalName

    Vytvoří konkrétní položku DNS pro snadnější přístup k aplikacím.

Nástroj pro vyrovnávání zatížení a IP adresu služeb je možné dynamicky přiřadit, nebo můžete zadat existující statickou IP adresu. Můžete přiřadit interní i externí statické IP adresy. Stávající statické IP adresy jsou často svázané s záznamem DNS.

Můžete vytvořit interní i externí nástroje pro vyrovnávání zatížení. Interní nástroje pro vyrovnávání zatížení mají přiřazenou jenom privátní IP adresu, takže k nim není možné získat přístup z internetu.

Virtuální sítě Azure

V AKS můžete nasadit cluster, který používá jeden z následujících dvou síťových modelů:

  • Sítě Kubenet

    Síťové prostředky se obvykle vytvářejí a konfiguruje při nasazování clusteru AKS.

  • Azure Container Networking Interface sítě (CNI)

    Cluster AKS je připojený k prostředkům a konfiguracím stávající virtuální sítě.

Kubenet (základní) sítě

Možnost sítě kubenet je výchozí konfigurace pro vytvoření clusteru AKS. S kubenet:

  1. Uzly obdrží IP adresu z podsítě virtuální sítě Azure.
  2. Pody přijímají IP adresu z logicky odlišného adresního prostoru než pody virtuální sítě Azure uzlů.
  3. Překlad adres (NAT) se pak nakonfiguruje tak, aby pody mohly získat přístup k prostředkům ve virtuální síti Azure.
  4. Zdrojová IP adresa provozu se přeloží na primární IP adresu uzlu.

Uzly používají modul plug-in kubenet Kubernetes. Další možnosti:

  • Nechte platformu Azure vytvářet a konfigurovat virtuální sítě za vás, nebo
  • Zvolte nasazení clusteru AKS do existující podsítě virtuální sítě.

Mějte na paměti, že směrovatelná IP adresa obdrží pouze uzly. Pody používají NAT ke komunikaci s jinými prostředky mimo cluster AKS. Tento přístup snižuje počet IP adres, které je potřeba vyhradit v síťovém prostoru pro použití podů.

Další informace najdete v tématu Konfigurace sítě kubenet pro cluster AKS.

Azure CNI sítě (pokročilé)

Při použití Azure CNI získá každý pod IP adresu z podsítě a dá se k němu přistupovat přímo. Tyto IP adresy je nutné naplánovat předem a musí být jedinečné v rámci vašeho síťového prostoru. Každý uzel má konfigurační parametr pro maximální počet podů, které podporuje. Ekvivalentní počet IP adres na uzel se pak rezervovaná předem. Bez plánování může tento přístup vést k vyčerpání IP adres nebo nutnosti znovu sestavovat clustery ve větší podsíti s rostoucími požadavky vaší aplikace.

Na rozdíl od kubenetu se přenosy do koncových bodů ve stejné virtuální síti neřadí na primární IP adresu uzlu. Zdrojovou adresou pro provoz uvnitř virtuální sítě je IP adresa podu. Provoz, který je externí vzhledem k virtuální síti, stále natácí na primární IP adresu uzlu.

Uzly používají modul plug-in Azure CNI Kubernetes.

Diagram znázorňující dva uzly s mosty, které se připojují k jedné virtuální síti Azure

Další informace najdete v tématu Konfigurace Azure CNI pro cluster AKS.

Porovnání síťových modelů

Kubenet i Azure CNI poskytují síťové připojení pro vaše clustery AKS. Mají ale své výhody a nevýhody. Na nejvyšší úrovni platí následující aspekty:

  • kubenet
    • Šetří adresní prostor IP adres.
    • Používá interní nebo externí nástroj pro vyrovnávání zatížení Kubernetes k dosažení podů mimo cluster.
    • Trasy definované uživatelem se spravují a udržují ručně.
    • Maximálně 400 uzlů na cluster.
  • Azure CNI
    • Pody mají úplné připojení k virtuální síti a jsou přímo přístupné prostřednictvím jejich privátní IP adresy z připojených sítí.
    • Vyžaduje více adresního prostoru IP adres.

Mezi kubenet a Azure CNI existují následující rozdíly v Azure CNI:

Schopnost Kubenet Azure CNI
Nasazení clusteru ve stávající nebo nové virtuální síti Podporuje se – uživatelsky definované funkce se použijí ručně. Podporováno
Připojení pod Podporováno Podporováno
Připojení pod virtuálním počítačem; Virtuální počítač ve stejné virtuální síti Funguje při inicializaci pod Funguje v obou směrech
Připojení pod virtuálním počítačem; Virtuální počítač ve virtuální síti s partnerským vztahem Funguje při inicializaci pod Funguje v obou směrech
Místní přístup pomocí sítě VPN nebo Express Route Funguje při inicializaci pod Funguje v obou směrech
Přístup k prostředkům zabezpečeným koncovými body služby Podporováno Podporováno
Vystavení služeb Kubernetes pomocí služby Vyrovnávání zatížení, služby App Gateway nebo řadiče pro příchozí přenosy Podporováno Podporováno
Výchozí Azure DNS a soukromé zóny Podporováno Podporováno
podpora pro fondy uzlů Windows Nepodporuje se Podporováno

V souvislosti se službou DNS nabízí CoreDNS nasazení, které se spouští v AKS s vlastním nástrojem pro automatické škálování (kubenet) a služby Azure CNI plugins. Další informace o CoreDNS v Kubernetes najdete v tématu přizpůsobení služby DNS. CoreDNS ve výchozím nastavení je nakonfigurované pro přeposílání neznámých domén do funkce DNS Azure Virtual Network, kde je nasazený cluster AKS. Proto Azure DNS a soukromé zóny budou fungovat pro lusky běžící v AKS.

Rozsah podpory mezi síťovými modely

Libovolný model sítě, který použijete, můžete nasadit jak kubenet, tak i Azure CNI, a to jedním z těchto způsobů:

  • Platforma Azure může automaticky vytvářet a konfigurovat prostředky virtuální sítě při vytváření clusteru AKS.
  • Při vytváření clusteru AKS můžete ručně vytvořit a nakonfigurovat prostředky virtuální sítě a připojit se k těmto prostředkům.

I když jsou podporované možnosti, jako jsou koncové body služby nebo udr, kubenet i Azure CNI, zásady podpory pro AKS definují, jaké změny můžete provádět. Například:

  • Pokud ručně vytvoříte prostředky virtuální sítě pro cluster AKS, budete podporováni při konfiguraci vlastních koncových bodů udr nebo služby.
  • Pokud platforma Azure automaticky vytvoří prostředky virtuální sítě pro cluster AKS, nemůžete ručně změnit tyto prostředky spravované AKS a nakonfigurovat vlastní udr nebo koncové body služby.

Kontrolery příchozích dat

Když vytvoříte službu typu Vyrovnávání zatížení, vytvoříte také základní prostředek nástroje pro vyrovnávání zatížení Azure. Nástroj pro vyrovnávání zatížení je nakonfigurovaný k distribuci provozu do lusků ve vaší službě na daném portu.

Nástroj pro vyrovnávání zatížení funguje pouze ve vrstvě 4. Ve vrstvě 4 služba neví o samotných aplikacích a nemůže dělat žádné další okolnosti směrování.

Řadiče příchozího přenosu dat pracují ve vrstvě 7 a můžou použít více inteligentních pravidel k distribuci provozu aplikací. Řadiče příchozího přenosu dat obvykle směrují provoz HTTP do různých aplikací na základě příchozí adresy URL.

Diagram znázorňující tok příchozího provozu v clusteru AKS

Vytvoření prostředku příchozího přenosu dat

V AKS můžete vytvořit prostředek příchozího přenosu dat pomocí NGINX, podobného nástroje nebo funkce směrování aplikace HTTP AKS. Když zapnete směrování aplikace HTTP pro cluster AKS, platforma Azure vytvoří kontroler příchozího přenosu dat a externí řadič DNS . Při vytváření nových prostředků příchozího přenosu v Kubernetes se požadované záznamy DNS vytvoří v zóně DNS specifické pro clustery.

Další informace najdete v tématu nasazení směrování aplikace http.

Kontroler příchozího přenosu Application Gateway (AGIC)

Díky doplňku AGIC (Application Gateway příchozího řadiče) využívají zákazníci AKS Application Gateway nativní Nástroj pro vyrovnávání zatížení Azure úrovně 7 a zveřejňují cloudový software na Internet. AGIC sleduje cluster hostitele Kubernetes a průběžně aktualizuje Application Gateway a zpřístupňuje vybrané služby na internetu.

Další informace o doplňku AGIC pro AKS najdete v tématu co je Application Gateway kontrolerpříchozího přenosu dat?.

Ukončení protokolu SSL/TLS

Ukončení protokolu SSL/TLS je další běžná funkce příchozího přenosu dat. V případě rozsáhlých webových aplikací, které jsou k dispozici prostřednictvím protokolu HTTPS, zpracovává příchozí prostředek protokol TLS namísto samotné aplikace. Pokud chcete zajistit automatické generování a konfiguraci certifikace TLS, můžete nakonfigurovat prostředek příchozího přenosu dat tak, aby používal zprostředkovatele, jako je například "šifrovat".

Další informace o konfiguraci kontroleru NGINX příchozího přenosu dat pomocí šifry najdete v tématu příchozí a TLS.

Zachování IP adresy zdrojového klienta

Nakonfigurujte kontroler příchozího přenosu dat, aby se zachovala zdrojová IP adresa klienta v požadavcích na kontejnery v clusteru AKS. Když váš kontroler příchozího přenosu směruje požadavek klienta na kontejner v clusteru AKS, původní zdrojová IP adresa této žádosti není k dispozici pro cílový kontejner. Když povolíte zachování IP adresy zdrojového klienta, je zdrojová IP adresa pro klienta k dispozici v hlavičce žádosti v části X-předáno-pro.

Pokud používáte zachování IP adresy zdrojového klienta v řadiči příchozího přenosu dat, nemůžete použít průchozí protokol TLS. U jiných služeb, jako je třeba typ Vyrovnávání zatížení sítě, můžete použít předávání IP adres klienta a předávací protokol TLS.

Skupiny zabezpečení sítě

Skupina zabezpečení sítě filtruje provoz pro virtuální počítače, jako jsou AKS uzly. Při vytváření služeb, jako je třeba nástroj pro vyrovnávání zatížení, platforma Azure automaticky konfiguruje všechna nezbytná pravidla skupiny zabezpečení sítě.

Nemusíte ručně konfigurovat pravidla skupiny zabezpečení sítě pro filtrování provozu pro lusky v clusteru AKS. Jednoduše definujte všechny požadované porty a předávání jako součást vašich manifestů služby Kubernetes. Umožněte, aby platforma Azure vytvořila nebo aktualizovala příslušná pravidla.

Zásady sítě můžete použít také k automatickému použití pravidel filtru přenosu na lusky.

Zásady sítě

Ve výchozím nastavení mohou všechny lusky v clusteru AKS odesílat a přijímat přenosy bez omezení. Pro lepší zabezpečení definujte pravidla, která řídí tok přenosů, například:

  • Back-endové aplikace se zveřejňují jenom u požadovaných služeb front-endu.
  • Součásti databáze jsou dostupné jenom pro aplikační vrstvy, které k nim připojovat.

Zásada sítě je funkce Kubernetes, která je dostupná v AKS, která umožňuje řídit tok přenosů mezi lusky. V závislosti na nastaveních, jako jsou přiřazené popisky, obory názvů nebo přenosový port, povolíte nebo zakážete provoz. I když jsou skupiny zabezpečení sítě lepší pro uzly AKS, zásady sítě představují pružnější způsob, jak řídit tok provozu pro lusky. V případě, že se v clusteru AKS dynamicky vytvářejí lusky, je možné automaticky použít požadované zásady sítě.

Další informace najdete v tématu zabezpečení provozu mezi lusky pomocí zásad sítě ve službě Azure Kubernetes Service (AKS).

Další kroky

Pokud chcete začít používat AKS sítě, vytvořte a nakonfigurujte cluster AKS s vlastními rozsahy IP adres s využitím kubenet nebo Azure CNI.

Související osvědčené postupy najdete v tématu osvědčené postupy pro připojení k síti a zabezpečení v AKS.

Další informace o základních konceptech Kubernetes a AKS najdete v následujících článcích: