Podstawowe pojęcia Kubernetes dla usługi Azure Kubernetes Service (AKS)Kubernetes core concepts for Azure Kubernetes Service (AKS)

Gdy Programowanie aplikacji przenosi się do podejścia opartego na kontenerach, trzeba zorganizować i zarządzać zasobami.As application development moves towards a container-based approach, the need to orchestrate and manage resources is important. Kubernetes to wiodąca platforma zapewniająca niezawodne planowanie obciążeń aplikacji odpornych na błędy.Kubernetes is the leading platform that provides the ability to provide reliable scheduling of fault-tolerant application workloads. Usługa Azure Kubernetes Service (AKS) to zarządzana oferta Kubernetes, która ułatwia wdrażanie aplikacji opartych na kontenerach i zarządzanie nimi.Azure Kubernetes Service (AKS) is a managed Kubernetes offering that further simplifies container-based application deployment and management.

W tym artykule wprowadzono podstawowe składniki infrastruktury Kubernetes, takie jak płaszczyzna kontroli, węzłyi Pule węzłów.This article introduces the core Kubernetes infrastructure components such as the control plane, nodes, and node pools. Wprowadzono również zasoby obciążenia , takie jak zbiory , wdrożeniai zestawy, wraz z sposobem grupowania zasobów w przestrzeni nazw.Workload resources such as pods, deployments, and sets are also introduced, along with how to group resources into namespaces.

Co to jest Kubernetes?What is Kubernetes?

Kubernetes to gwałtownie rozwijający się platforma, która zarządza aplikacjami opartymi na kontenerach i skojarzonymi z nimi składnikami sieci i magazynu.Kubernetes is a rapidly evolving platform that manages container-based applications and their associated networking and storage components. Fokus dotyczy obciążeń aplikacji, a nie podstawowych składników infrastruktury.The focus is on the application workloads, not the underlying infrastructure components. Kubernetes zapewnia deklaracyjne podejście do wdrożeń, które są obsługiwane przez niezawodny zestaw interfejsów API dla operacji zarządzania.Kubernetes provides a declarative approach to deployments, backed by a robust set of APIs for management operations.

Możesz tworzyć i uruchamiać nowoczesne, przenośne, oparte na mikrousługach aplikacje, które korzystają z Kubernetes organizowania i zarządzania dostępnością tych składników aplikacji.You can build and run modern, portable, microservices-based applications that benefit from Kubernetes orchestrating and managing the availability of those application components. Usługa Kubernetes obsługuje zarówno bezstanowe, jak i stanowe aplikacje jako zespoły postępują zgodnie z wdrażaniem aplikacji opartych na mikrousługach.Kubernetes supports both stateless and stateful applications as teams progress through the adoption of microservices-based applications.

Jako otwarta platforma Kubernetes umożliwia tworzenie aplikacji przy użyciu preferowanego języka programowania, systemu operacyjnego, bibliotek lub magistrali obsługi komunikatów.As an open platform, Kubernetes allows you to build your applications with your preferred programming language, OS, libraries, or messaging bus. Istniejące narzędzia ciągłej integracji i ciągłego dostarczania (CI/CD) można zintegrować z usługą Kubernetes w celu planowania i wdrażania wersji.Existing continuous integration and continuous delivery (CI/CD) tools can integrate with Kubernetes to schedule and deploy releases.

Usługa Azure Kubernetes Service (AKS) oferuje zarządzaną usługę Kubernetes, która zmniejsza złożoność wdrażania i podstawowych zadań zarządzania, w tym koordynowania uaktualnień.Azure Kubernetes Service (AKS) provides a managed Kubernetes service that reduces the complexity for deployment and core management tasks, including coordinating upgrades. Płaszczyzna kontroli AKS jest zarządzana przez platformę Azure i płacisz tylko za węzły AKS, na których działają aplikacje.The AKS control plane is managed by the Azure platform, and you only pay for the AKS nodes that run your applications. AKS jest tworzona na podstawie aparatu usługi Azure Kubernetes (AKS-Engine) typu open source.AKS is built on top of the open-source Azure Kubernetes Service Engine (aks-engine).

Architektura klastra KubernetesKubernetes cluster architecture

Klaster Kubernetes jest podzielony na dwa składniki:A Kubernetes cluster is divided into two components:

  • Węzły płaszczyzny kontroli zapewniają podstawowe usługi Kubernetes i aranżację obciążeń aplikacji.Control plane nodes provide the core Kubernetes services and orchestration of application workloads.
  • Węzły uruchamiają obciążenia aplikacji.Nodes run your application workloads.

Kubernetes i płaszczyzny kontroli

Płaszczyzna sterowaniaControl plane

Podczas tworzenia klastra AKS, zostanie automatycznie utworzona i skonfigurowana płaszczyzna kontroli.When you create an AKS cluster, a control plane is automatically created and configured. Ta płaszczyzna kontroli jest udostępniana jako zarządzany zasób platformy Azure, który został podzielny przez użytkownika.This control plane is provided as a managed Azure resource abstracted from the user. Dla płaszczyzny kontroli nie ma kosztu, tylko węzły, które są częścią klastra AKS.There's no cost for the control plane, only the nodes that are part of the AKS cluster. Płaszczyzna kontroli i jej zasoby znajdują się tylko w regionie, w którym został utworzony klaster.The control plane and its resources reside only on the region where you created the cluster.

Płaszczyzna kontroli obejmuje następujące podstawowe składniki Kubernetes:The control plane includes the following core Kubernetes components:

  • polecenia-apiserver — serwer interfejsu API to sposób, w jaki są ujawniane bazowe interfejsy API Kubernetes.kube-apiserver - The API server is how the underlying Kubernetes APIs are exposed. Ten składnik zapewnia interakcję z narzędziami do zarządzania, takimi jak kubectl lub pulpitem nawigacyjnym Kubernetes.This component provides the interaction for management tools, such as kubectl or the Kubernetes dashboard.
  • etcd — aby zachować stan klastra Kubernetes i konfiguracji, etcd wysoka dostępność to kluczowy magazyn wartości w ramach Kubernetes.etcd - To maintain the state of your Kubernetes cluster and configuration, the highly available etcd is a key value store within Kubernetes.
  • polecenia-Scheduler — podczas tworzenia lub skalowania aplikacji harmonogram określa węzły, które mogą uruchamiać obciążenie i je uruchamia.kube-scheduler - When you create or scale applications, the Scheduler determines what nodes can run the workload and starts them.
  • polecenia-Controller-Manager — Menedżer kontrolerów widzi kilka mniejszych kontrolerów, które wykonują takie działania, jak replikowanie i obsługa operacji węzła.kube-controller-manager - The Controller Manager oversees a number of smaller Controllers that perform actions such as replicating pods and handling node operations.

AKS zapewnia jednodostępną płaszczyznę kontroli z dedykowanym serwerem interfejsu API, harmonogramem itd. Zdefiniuj liczbę i rozmiar węzłów, a platforma Azure skonfiguruje bezpieczną komunikację między płaszczyzną i węzłami.AKS provides a single-tenant control plane, with a dedicated API server, Scheduler, etc. You define the number and size of the nodes, and the Azure platform configures the secure communication between the control plane and nodes. Interakcja z płaszczyzną kontroli odbywa się za pomocą interfejsów API Kubernetes, takich jak kubectl lub pulpitu nawigacyjnego Kubernetes.Interaction with the control plane occurs through Kubernetes APIs, such as kubectl or the Kubernetes dashboard.

Ta płaszczyzna kontroli zarządzanej oznacza, że nie trzeba konfigurować składników, takich jak magazyn etcd o wysokiej dostępności, ale oznacza to również, że nie można bezpośrednio uzyskać dostępu do płaszczyzny kontroli.This managed control plane means you don't need to configure components like a highly available etcd store, but it also means you can't access the control plane directly. Uaktualnienia do Kubernetes są zorganizowane za pomocą interfejsu wiersza polecenia platformy Azure lub Azure Portal, który uaktualnia płaszczyznę kontroli, a następnie węzły.Upgrades to Kubernetes are orchestrated through the Azure CLI or Azure portal, which upgrades the control plane and then the nodes. Aby rozwiązać ewentualne problemy, można przejrzeć dzienniki płaszczyzny kontroli za pomocą dzienników Azure Monitor.To troubleshoot possible issues, you can review the control plane logs through Azure Monitor logs.

Jeśli konieczne jest skonfigurowanie płaszczyzny kontroli w określony sposób lub konieczność bezpośredniego dostępu do niej, można wdrożyć własny klaster Kubernetes przy użyciu aparatu AKS.If you need to configure the control plane in a particular way or need direct access to it, you can deploy your own Kubernetes cluster using aks-engine.

W przypadku skojarzonych najlepszych rozwiązań należy zapoznać się z najlepszymi rozwiązaniami dotyczącymi zabezpieczeń i uaktualnień klastra w programie AKS.For associated best practices, see Best practices for cluster security and upgrades in AKS.

Węzły i pule węzłówNodes and node pools

Aby uruchamiać aplikacje i usługi pomocnicze, potrzebny jest węzełKubernetes.To run your applications and supporting services, you need a Kubernetes node. Klaster AKS ma co najmniej jeden węzeł, który jest maszyną wirtualną platformy Azure, na której działa składniki węzła Kubernetes i środowisko uruchomieniowe kontenera:An AKS cluster has one or more nodes, which is an Azure virtual machine (VM) that runs the Kubernetes node components and container runtime:

  • kubeletJest to Agent Kubernetes, który przetwarza żądania aranżacji z płaszczyzny kontroli i planowania uruchamiania żądanych kontenerów.The kubelet is the Kubernetes agent that processes the orchestration requests from the control plane and scheduling of running the requested containers.
  • Sieć wirtualna jest obsługiwana przez polecenia-proxy w każdym węźle.Virtual networking is handled by the kube-proxy on each node. Serwer proxy kieruje ruchem sieciowym i zarządza adresami IP dla usług i zasobników.The proxy routes network traffic and manages IP addressing for services and pods.
  • Środowisko uruchomieniowe kontenera to składnik, który umożliwia aplikacjom kontenerowym uruchamianie i współdziałanie z dodatkowymi zasobami, takimi jak sieć wirtualna i magazyn.The container runtime is the component that allows containerized applications to run and interact with additional resources such as the virtual network and storage. W AKS, Moby jest używany jako środowisko uruchomieniowe kontenera.In AKS, Moby is used as the container runtime.

Maszyna wirtualna platformy Azure i obsługa zasobów dla węzła Kubernetes

Rozmiar maszyny wirtualnej platformy Azure dla węzłów definiuje liczbę procesorów CPU, ilość pamięci oraz ilość dostępnego miejsca do magazynowania (na przykład dysk SSD o wysokiej wydajności lub zwykły dysk twardy).The Azure VM size for your nodes defines how many CPUs, how much memory, and the size and type of storage available (such as high-performance SSD or regular HDD). Jeśli przewidywane jest zapotrzebowanie na aplikacje wymagające dużej ilości zasobów procesora CPU i pamięci lub magazynu o wysokiej wydajności, należy odpowiednio zaplanować rozmiar węzła.If you anticipate a need for applications that require large amounts of CPU and memory or high-performance storage, plan the node size accordingly. Możesz również skalować liczbę węzłów w klastrze AKS, aby sprostać zapotrzebowaniem.You can also scale out the number of nodes in your AKS cluster to meet demand.

W AKS obraz maszyny wirtualnej dla węzłów w klastrze jest obecnie oparty na Ubuntu Linux lub Windows Server 2019.In AKS, the VM image for the nodes in your cluster is currently based on Ubuntu Linux or Windows Server 2019. Podczas tworzenia klastra AKS lub skalowania liczby węzłów platforma Azure tworzy żądaną liczbę maszyn wirtualnych i konfiguruje je.When you create an AKS cluster or scale out the number of nodes, the Azure platform creates the requested number of VMs and configures them. Nie istnieje ręczna konfiguracja do wykonania.There's no manual configuration for you to perform. Węzły agentów są rozliczane jako standardowe maszyny wirtualne, w związku z czym wszelkie zniżki na używanym rozmiarze maszyny wirtualnej (w tym rezerwacje platformy Azure) są automatycznie stosowane.Agent nodes are billed as standard virtual machines, so any discounts you have on the VM size you're using (including Azure reservations) are automatically applied.

Jeśli konieczne jest użycie innego systemu operacyjnego hosta, środowiska uruchomieniowego kontenera lub dołączenie pakietów niestandardowych, można wdrożyć własny klaster Kubernetes przy użyciu aparatu AKS.If you need to use a different host OS, container runtime, or include custom packages, you can deploy your own Kubernetes cluster using aks-engine. aks-engineFunkcje wersji nadrzędnej i udostępniają opcje konfiguracji, zanim są oficjalnie obsługiwane w klastrach AKS.The upstream aks-engine releases features and provides configuration options before they are officially supported in AKS clusters. Na przykład jeśli chcesz użyć środowiska uruchomieniowego kontenera innego niż Moby, możesz użyć aks-engine programu, aby skonfigurować i wdrożyć klaster Kubernetes, który spełnia Twoje bieżące potrzeby.For example, if you wish to use a container runtime other than Moby, you can use aks-engine to configure and deploy a Kubernetes cluster that meets your current needs.

Rezerwacje zasobówResource reservations

Zasoby węzła są używane przez AKS, aby uczynić węzeł funkcją jako częścią klastra.Node resources are utilized by AKS to make the node function as part of your cluster. To użycie może stworzyć niezgodność między całkowitymi zasobami węzła a zasobami, które można przydzielić, gdy są używane w AKS.This usage can create a discrepancy between your node's total resources and the resources allocatable when used in AKS. Te informacje mają na celu zanotowanie, kiedy należy ustawić żądania i limity dla wdrożonych przez użytkownika zasobników.This information is important to note when setting requests and limits for user deployed pods.

Aby znaleźć zasoby przydzielane przez węzeł, uruchom polecenie:To find a node's allocatable resources, run:

kubectl describe node [NODE_NAME]

Aby zachować wydajność i funkcjonalność węzła, zasoby są zastrzeżone dla każdego węzła przez AKS.To maintain node performance and functionality, resources are reserved on each node by AKS. W miarę zwiększania się liczby zasobów, rezerwacja zasobów rośnie ze względu na większą ilość potrzebnych do zarządzania użytkownikami.As a node grows larger in resources, the resource reservation grows due to a higher amount of user deployed pods needing management.

Uwaga

Używanie dodatków AKS, takich jak Container Insights (OMS), będzie zużywać dodatkowe zasoby węzła.Using AKS add-ons such as Container Insights (OMS) will consume additional node resources.

  • Procesor CPU zarezerwowany przez procesor CPU zależy od typu węzła i konfiguracji klastra, co może spowodować mniejsze możliwości przydzielania CPU z powodu uruchamiania dodatkowych funkcjiCPU - reserved CPU is dependent on node type and cluster configuration, which may cause less allocatable CPU due to running additional features
Rdzenie procesora CPU na hościeCPU cores on host 11 22 44 88 1616 3232 6464
Polecenia — zarezerwowane (millicores)Kube-reserved (millicores) 6060 100100 140140 180180 260260 420420 740740
  • Pamięć używana przez AKS zawiera sumę dwóch wartości.Memory - memory utilized by AKS includes the sum of two values.
  1. Demon kubelet został zainstalowany we wszystkich węzłach agenta Kubernetes w celu zarządzania tworzeniem i kończeniem kontenera.The kubelet daemon is installed on all Kubernetes agent nodes to manage container creation and termination. Domyślnie w systemie AKS ten demon ma następującą regułę wykluczania: Memory. available<750Mi, co oznacza, że w każdym momencie węzeł musi mieć co najmniej 750.By default on AKS, this daemon has the following eviction rule: memory.available<750Mi, which means a node must always have at least 750 Mi allocatable at all times. Gdy host jest poniżej tego progu dostępnej pamięci, kubelet zakończy jeden z uruchomionych zasobników, aby zwolnić pamięć na komputerze hosta i chronić ją.When a host is below that threshold of available memory, the kubelet will terminate one of the running pods to free memory on the host machine and protect it. Ta akcja jest wyzwalana, gdy ilość dostępnej pamięci nie przekracza progu 750Mi.This action is triggered once available memory decreases beyond the 750Mi threshold.

  2. Druga wartość to regresywnycha szybkość rezerwacji pamięci dla demona kubelet do prawidłowego działania (polecenia-zarezerwowane).The second value is a regressive rate of memory reservations for the kubelet daemon to properly function (kube-reserved).

    • 25% pierwszego 4 GB pamięci25% of the first 4 GB of memory
    • 20% z następnych 4 GB pamięci (do 8 GB)20% of the next 4 GB of memory (up to 8 GB)
    • 10% z następnych 8 GB pamięci (do 16 GB)10% of the next 8 GB of memory (up to 16 GB)
    • 6% następnego 112 GB pamięci (do 128 GB)6% of the next 112 GB of memory (up to 128 GB)
    • 2% każdej pamięci powyżej 128 GB2% of any memory above 128 GB

Powyższe zasady dotyczące pamięci i alokacji procesora są używane w celu zachowania poprawnego działania węzłów agenta, w tym pewnych systemów hostingu, które mają kluczowe znaczenie dla kondycji klastra.The above rules for memory and CPU allocation are used to keep agent nodes healthy, including some hosting system pods that are critical to cluster health. Te reguły alokacji powodują również, że węzeł raportuje mniejszą alokację pamięci i procesora CPU niż zwykle, jeśli nie był częścią klastra Kubernetes.These allocation rules also cause the node to report less allocatable memory and CPU than it normally would if it were not part of a Kubernetes cluster. Nie można zmienić powyższych rezerwacji zasobów.The above resource reservations can't be changed.

Na przykład, jeśli węzeł zawiera 7 GB, zgłasza 34% pamięci nie można przydzielić, łącznie z progiem wykluczeń 750Mi.For example, if a node offers 7 GB, it will report 34% of memory not allocatable including the 750Mi hard eviction threshold.

0.75 + (0.25*4) + (0.20*3) = 0.75GB + 1GB + 0.6GB = 2.35GB / 7GB = 33.57% reserved

Oprócz rezerwacji dla samego Kubernetes, podstawowy system operacyjny węzła również rezerwuje ilość zasobów procesora i pamięci do obsługi funkcji systemu operacyjnego.In addition to reservations for Kubernetes itself, the underlying node OS also reserves an amount of CPU and memory resources to maintain OS functions.

Aby zapoznać się z najlepszymi rozwiązaniami, zobacz najlepsze rozwiązania dotyczące podstawowych funkcji usługi Scheduler w AKS.For associated best practices, see Best practices for basic scheduler features in AKS.

Pule węzłówNode pools

Węzły tej samej konfiguracji są pogrupowane w Pule węzłów.Nodes of the same configuration are grouped together into node pools. Klaster Kubernetes zawiera co najmniej jedną pulę węzłów.A Kubernetes cluster contains one or more node pools. Początkowa liczba węzłów i rozmiar są definiowane podczas tworzenia klastra AKS, który tworzy domyślną pulę węzłów.The initial number of nodes and size are defined when you create an AKS cluster, which creates a default node pool. Ta domyślna pula węzłów w AKS zawiera podstawowe maszyny wirtualne, na których są uruchomione węzły agentów.This default node pool in AKS contains the underlying VMs that run your agent nodes.

Uwaga

Aby zapewnić niezawodne działanie klastra, należy uruchomić co najmniej 2 (dwa) węzły w domyślnej puli węzłów.To ensure your cluster operates reliably, you should run at least 2 (two) nodes in the default node pool.

Po skalowaniu lub uaktualnieniu klastra AKS akcja jest wykonywana względem domyślnej puli węzłów.When you scale or upgrade an AKS cluster, the action is performed against the default node pool. Możesz również wybrać skalowanie lub uaktualnianie określonej puli węzłów.You can also choose to scale or upgrade a specific node pool. W przypadku operacji uaktualniania uruchomione kontenery są planowane w innych węzłach w puli węzłów do momentu, aż wszystkie węzły zostaną pomyślnie uaktualnione.For upgrade operations, running containers are scheduled on other nodes in the node pool until all the nodes are successfully upgraded.

Aby uzyskać więcej informacji na temat używania wielu pul węzłów w AKS, zobacz Tworzenie wielu pul węzłów i zarządzanie nimi w klastrze w AKS.For more information about how to use multiple node pools in AKS, see Create and manage multiple node pools for a cluster in AKS.

Selektory węzłówNode selectors

W klastrze AKS zawierającym wiele pul węzłów może być konieczne poinformowanie usługi Kubernetes Scheduler, której puli węzłów użyć dla danego zasobu.In an AKS cluster that contains multiple node pools, you may need to tell the Kubernetes Scheduler which node pool to use for a given resource. Na przykład kontrolery transferu danych przychodzących nie powinny działać w węzłach systemu Windows Server.For example, ingress controllers shouldn't run on Windows Server nodes. Selektory węzłów umożliwiają definiowanie różnych parametrów, takich jak węzeł systemu operacyjnego, w celu kontrolowania, gdzie należy zaplanować.Node selectors let you define various parameters, such as the node OS, to control where a pod should be scheduled.

Poniższy przykład podstawowy zaplanuje wystąpienie NGINX w węźle systemu Linux przy użyciu selektora węzła "beta.Kubernetes.IO/OS": Linux:The following basic example schedules an NGINX instance on a Linux node using the node selector "beta.kubernetes.io/os": linux:

kind: Pod
apiVersion: v1
metadata:
  name: nginx
spec:
  containers:
    - name: myfrontend
      image: nginx:1.15.12
  nodeSelector:
    "beta.kubernetes.io/os": linux

Aby uzyskać więcej informacji na temat sposobu kontrolowania, gdzie są planowane planowanie, zobacz najlepsze rozwiązania dotyczące zaawansowanych funkcji usługi Scheduler w AKS.For more information on how to control where pods are scheduled, see Best practices for advanced scheduler features in AKS.

ZasobnikówPods

Kubernetes używa zasobników do uruchomienia wystąpienia aplikacji.Kubernetes uses pods to run an instance of your application. Element pod reprezentuje pojedyncze wystąpienie aplikacji.A pod represents a single instance of your application. Zasobniki zwykle mają 1:1 mapowania z kontenerem, chociaż istnieją zaawansowane scenariusze, w których część może zawierać wiele kontenerów.Pods typically have a 1:1 mapping with a container, although there are advanced scenarios where a pod may contain multiple containers. Te wielokontenerowe działy są planowane razem w tym samym węźle i umożliwiają kontenerom udostępnianie powiązanych zasobów.These multi-container pods are scheduled together on the same node, and allow containers to share related resources.

Podczas tworzenia elementu pod można zdefiniować żądania zasobów , aby zażądać określonej ilości zasobów procesora CPU lub pamięci.When you create a pod, you can define resource requests to request a certain amount of CPU or memory resources. Harmonogram Kubernetes próbuje zaplanować uruchomienie programu w węźle z dostępnymi zasobami w celu spełnienia żądania.The Kubernetes Scheduler tries to schedule the pods to run on a node with available resources to meet the request. Można również określić maksymalne limity zasobów uniemożliwiające korzystanie z zbyt dużej ilości zasobów obliczeniowych z bazowego węzła.You can also specify maximum resource limits that prevent a given pod from consuming too much compute resource from the underlying node. Najlepszym rozwiązaniem jest uwzględnienie limitów zasobów dla wszystkich zasobników, aby pomóc harmonogramowi Kubernetes zrozumieć, które zasoby są zbędne i dozwolone.A best practice is to include resource limits for all pods to help the Kubernetes Scheduler understand which resources are needed and permitted.

Aby uzyskać więcej informacji, zobacz Kubernetes i Kubernetes pod cykl życia.For more information, see Kubernetes pods and Kubernetes pod lifecycle.

A pod jest zasobem logicznym, ale kontenery są, w których są uruchamiane obciążenia aplikacji.A pod is a logical resource, but the container(s) are where the application workloads run. Zasobniki to zazwyczaj tymczasowe, jednorazowe zasoby, a indywidualnie zaplanowane zasobniki nie mogą mieć niektórych funkcji wysokiej dostępności i nadmiarowości Kubernetes.Pods are typically ephemeral, disposable resources, and individually scheduled pods miss some of the high availability and redundancy features Kubernetes provides. Zamiast tego są wdrażane i zarządzane przez KontroleryKubernetes, takie jak kontroler wdrażania.Instead, pods are deployed and managed by Kubernetes Controllers, such as the Deployment Controller.

Wdrożenia i manifesty YAMLDeployments and YAML manifests

Wdrożenie reprezentuje jeden lub więcej identycznych zasobników zarządzanych przez kontroler wdrażania Kubernetes.A deployment represents one or more identical pods, managed by the Kubernetes Deployment Controller. Wdrożenie definiuje liczbę replik (na podst.) do utworzenia, a usługa Kubernetes Scheduler gwarantuje, że w przypadku wystąpienia problemów z planami lub w węzłach w dobrej kondycji są planowane dodatkowe numery.A deployment defines the number of replicas (pods) to create, and the Kubernetes Scheduler ensures that if pods or nodes encounter problems, additional pods are scheduled on healthy nodes.

Możesz zaktualizować wdrożenia, aby zmienić konfigurację zasobników, używanego obrazu kontenera lub dołączonego magazynu.You can update deployments to change the configuration of pods, container image used, or attached storage. Kontroler wdrożenia opróżnia i kończy daną liczbę replik, tworzy repliki z nowej definicji wdrożenia i kontynuuje proces do momentu zaktualizowania wszystkich replik we wdrożeniu.The Deployment Controller drains and terminates a given number of replicas, creates replicas from the new deployment definition, and continues the process until all replicas in the deployment are updated.

Większość aplikacji bezstanowych w AKS powinna używać modelu wdrażania zamiast planowania pojedynczych zasobników.Most stateless applications in AKS should use the deployment model rather than scheduling individual pods. Kubernetes może monitorować kondycję i stan wdrożeń, aby upewnić się, że wymagana liczba replik działa w ramach klastra.Kubernetes can monitor the health and status of deployments to ensure that the required number of replicas run within the cluster. W przypadku zaplanowania tylko pojedynczych zasobników te nie są ponownie uruchamiane, Jeśli napotkają problem, i nie są ponownie planowane w węzłach o dobrej kondycji, jeśli ich bieżący węzeł napotka problem.When you only schedule individual pods, the pods aren't restarted if they encounter a problem, and aren't rescheduled on healthy nodes if their current node encounters a problem.

Jeśli aplikacja wymaga, aby kworum wystąpień było zawsze dostępne do podejmowania decyzji dotyczących zarządzania, nie chcesz, aby proces aktualizacji mógł przerwać tę możliwość.If an application requires a quorum of instances to always be available for management decisions to be made, you don't want an update process to disrupt that ability. Budżety na zakłócenia mogą służyć do definiowania liczby replik w ramach wdrożenia, które mogą zostać wyłączone podczas uaktualniania aktualizacji lub węzła.Pod Disruption Budgets can be used to define how many replicas in a deployment can be taken down during an update or node upgrade. Na przykład jeśli w danym wdrożeniu znajduje się pięć (5) replik, można zdefiniować zakłócenia pod kątem wartości 4 , aby zezwolić na usunięcie lub ponowne zaplanowanie jednej repliki.For example, if you have five (5) replicas in your deployment, you can define a pod disruption of 4 to only permit one replica from being deleted/rescheduled at a time. Podobnie jak w przypadku limitów zasobów, najlepszym rozwiązaniem jest zdefiniowanie budżetów w aplikacjach, które wymagają minimalnej liczby replik, aby zawsze były obecne.As with pod resource limits, a best practice is to define pod disruption budgets on applications that require a minimum number of replicas to always be present.

Wdrożenia są zwykle tworzone i zarządzane przy użyciu programu kubectl create lub kubectl apply .Deployments are typically created and managed with kubectl create or kubectl apply. Aby utworzyć wdrożenie, należy zdefiniować plik manifestu w formacie YAML (YAML Ain't Markup Language).To create a deployment, you define a manifest file in the YAML (YAML Ain't Markup Language) format. Poniższy przykład tworzy podstawowe wdrożenie serwera sieci Web NGINX.The following example creates a basic deployment of the NGINX web server. Wdrożenie określa trzy (3) repliki do utworzenia i wymaga, aby port 80 był otwarty w kontenerze.The deployment specifies three (3) replicas to be created, and requires port 80 to be open on the container. Żądania zasobów i limity są również zdefiniowane dla procesora CPU i pamięci.Resource requests and limits are also defined for CPU and memory.

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:1.15.2
        ports:
        - containerPort: 80
        resources:
          requests:
            cpu: 250m
            memory: 64Mi
          limits:
            cpu: 500m
            memory: 256Mi

Bardziej złożone aplikacje można utworzyć, uwzględniając także usługi, takie jak moduły równoważenia obciążenia w manifeście YAML.More complex applications can be created by also including services such as load balancers within the YAML manifest.

Aby uzyskać więcej informacji, zobacz Kubernetes Deployments.For more information, see Kubernetes deployments.

Zarządzanie pakietami za pomocą HelmPackage management with Helm

Typowym podejściem do zarządzania aplikacjami w programie Kubernetes jest Helm.A common approach to managing applications in Kubernetes is with Helm. Możesz tworzyć i używać istniejących publicznych wykresów Helm, które zawierają spakowaną wersję kodu aplikacji i manifestów YAML Kubernetes do wdrażania zasobów.You can build and use existing public Helm charts that contain a packaged version of application code and Kubernetes YAML manifests to deploy resources. Te wykresy Helm mogą być przechowywane lokalnie lub często w repozytorium zdalnym, takim jak repozytorium wykresu programu Azure Container Registry Helm.These Helm charts can be stored locally, or often in a remote repository, such as an Azure Container Registry Helm chart repo.

Aby użyć Helm, zainstaluj klienta programu Helm na komputerze lub Użyj klienta Helm w Azure Cloud Shell.To use Helm, install the Helm client on your computer, or use the Helm client in the Azure Cloud Shell. Możesz wyszukać i utworzyć wykresy Helm z klientem, a następnie zainstalować je w klastrze Kubernetes.You can search for or create Helm charts with the client, and then install them to your Kubernetes cluster. Aby uzyskać więcej informacji, zobacz Instalowanie istniejących aplikacji przy użyciu usługi Helm w AKS.For more information, see Install existing applications with Helm in AKS.

StatefulSets i DaemonSetsStatefulSets and DaemonSets

Kontroler wdrażania używa usługi Kubernetes Scheduler, aby uruchomić daną liczbę replik w dowolnym z dostępnych zasobów.The Deployment Controller uses the Kubernetes Scheduler to run a given number of replicas on any available node with available resources. Takie podejście do używania wdrożeń może być wystarczające dla aplikacji bezstanowych, ale nie dla aplikacji, które wymagają trwałej konwencji nazewnictwa lub magazynu.This approach of using deployments may be sufficient for stateless applications, but not for applications that require a persistent naming convention or storage. W przypadku aplikacji, które wymagają repliki w każdym węźle lub wybranych węzłów w klastrze, kontroler wdrożenia nie sprawdza, jak repliki są dystrybuowane między węzłami.For applications that require a replica to exist on each node, or selected nodes, within a cluster, the Deployment Controller doesn't look at how replicas are distributed across the nodes.

Istnieją dwa zasoby Kubernetes, które umożliwiają zarządzanie tymi typami aplikacji:There are two Kubernetes resources that let you manage these types of applications:

  • StatefulSets — utrzymuje stan aplikacji poza indywidualnym cyklem życia, takim jak magazyn.StatefulSets - Maintain the state of applications beyond an individual pod lifecycle, such as storage.
  • DaemonSets — upewnij się, że uruchomione wystąpienie w każdym węźle jest wczesne w procesie ładowania początkowego Kubernetes.DaemonSets - Ensure a running instance on each node, early in the Kubernetes bootstrap process.

StatefulSetsStatefulSets

Nowoczesne opracowywanie aplikacji jest często stosowane w przypadku aplikacji bezstanowych, ale StatefulSets można używać w przypadku aplikacji stanowych, takich jak aplikacje, które zawierają składniki bazy danych.Modern application development often aims for stateless applications, but StatefulSets can be used for stateful applications, such as applications that include database components. StatefulSet jest podobny do wdrożenia w przypadku tworzenia co najmniej jednego identycznego zasobnika i zarządzania nim.A StatefulSet is similar to a deployment in that one or more identical pods are created and managed. Repliki w StatefulSet wykonują bezpieczne, sekwencyjne podejście do wdrożenia, skalowania, uaktualnienia i zakończenia.Replicas in a StatefulSet follow a graceful, sequential approach to deployment, scale, upgrades, and terminations. W przypadku StatefulSet (jako repliky są ponownie zaplanowane) Konwencja nazewnictwa, nazwy sieciowe i magazyn pozostają.With a StatefulSet (as replicas are rescheduled) the naming convention, network names, and storage persist.

Aplikację można zdefiniować w formacie YAML za pomocą programu kind: StatefulSet , a kontroler StatefulSet obsługuje wdrażanie wymaganych replik i zarządzanie nimi.You define the application in YAML format using kind: StatefulSet, and the StatefulSet Controller then handles the deployment and management of the required replicas. Dane są zapisywane w magazynie trwałym, udostępnianym przez usługę Azure Managed Disks lub Azure Files.Data is written to persistent storage, provided by Azure Managed Disks or Azure Files. W przypadku programu StatefulSets podstawowy magazyn trwały pozostaje nawet wtedy, gdy StatefulSet zostanie usunięta.With StatefulSets, the underlying persistent storage remains even when the StatefulSet is deleted.

Aby uzyskać więcej informacji, zobacz Kubernetes StatefulSets.For more information, see Kubernetes StatefulSets.

Repliki w StatefulSet są zaplanowane i uruchamiane w dowolnym z dostępnych węzłów w klastrze AKS.Replicas in a StatefulSet are scheduled and run across any available node in an AKS cluster. Jeśli chcesz upewnić się, że co najmniej jeden z tych zestawów jest uruchomiony w węźle, możesz zamiast tego użyć elementu daemonset.If you need to ensure that at least one pod in your Set runs on a node, you can instead use a DaemonSet.

DaemonSetsDaemonSets

W przypadku konkretnych kolekcji dzienników lub potrzeb związanych z monitorowaniem może być konieczne uruchomienie danego elementu pod względem wszystkich lub wybranych węzłów.For specific log collection or monitoring needs, you may need to run a given pod on all, or selected, nodes. Elementu daemonset ponownie służy do wdrożenia co najmniej jednego identycznego zasobnika, ale kontroler elementu daemonset zapewnia, że każdy określony węzeł uruchamia wystąpienie elementu.A DaemonSet is again used to deploy one or more identical pods, but the DaemonSet Controller ensures that each node specified runs an instance of the pod.

Przed uruchomieniem domyślnego harmonogramu Kubernetes w kontrolerze elementu daemonset można zaplanować w węzłach na wczesny proces rozruchu klastra.The DaemonSet Controller can schedule pods on nodes early in the cluster boot process, before the default Kubernetes scheduler has started. Pozwala to zagwarantować, że zasobniki w elementu daemonset są uruchamiane przed zaplanowaniem tradycyjnych zasobników we wdrożeniu lub StatefulSet.This ability ensures that the pods in a DaemonSet are started before traditional pods in a Deployment or StatefulSet are scheduled.

Podobnie jak w przypadku StatefulSets, elementu daemonset jest definiowana jako część definicji YAML za pomocą kind: DaemonSet .Like StatefulSets, a DaemonSet is defined as part of a YAML definition using kind: DaemonSet.

Aby uzyskać więcej informacji, zobacz Kubernetes DaemonSets.For more information, see Kubernetes DaemonSets.

Uwaga

W przypadku używania dodatku węzłów wirtualnychDaemonSets nie utworzy zasobnika w węźle wirtualnym.If using the Virtual Nodes add-on, DaemonSets will not create pods on the virtual node.

NamespacesNamespaces

Zasoby Kubernetes, takie jak grupy miar i wdrożenia, są logicznie pogrupowane w przestrzeni nazw.Kubernetes resources, such as pods and Deployments, are logically grouped into a namespace. Dzięki tym grupom można logicznie podzielić klaster AKS i ograniczyć dostęp do tworzenia, wyświetlania i zarządzania zasobami.These groupings provide a way to logically divide an AKS cluster and restrict access to create, view, or manage resources. Można na przykład utworzyć przestrzenie nazw w celu oddzielenia grup firmy.You can create namespaces to separate business groups, for example. Użytkownicy mogą korzystać tylko z zasobami w ramach przypisanych przestrzeni nazw.Users can only interact with resources within their assigned namespaces.

Kubernetes przestrzenie nazw, aby logicznie podzielić zasoby i aplikacje

Podczas tworzenia klastra AKS dostępne są następujące przestrzenie nazw:When you create an AKS cluster, the following namespaces are available:

  • default — Ta przestrzeń nazw to miejsce, w którym domyślnie tworzone są i wdrożenia, gdy żaden z nich nie jest dostarczany.default - This namespace is where pods and deployments are created by default when none is provided. W mniejszych środowiskach można wdrażać aplikacje bezpośrednio w domyślnej przestrzeni nazw bez tworzenia dodatkowych rozbarwień logicznych.In smaller environments, you can deploy applications directly into the default namespace without creating additional logical separations. W przypadku korzystania z interfejsu API Kubernetes, takiego jak with kubectl get pods , domyślna przestrzeń nazw jest używana, gdy nie jest określony.When you interact with the Kubernetes API, such as with kubectl get pods, the default namespace is used when none is specified.
  • polecenia-system — Ta przestrzeń nazw to miejsce, w którym istnieją podstawowe zasoby, takie jak usługa DNS i serwer proxy lub pulpit nawigacyjny Kubernetes.kube-system - This namespace is where core resources exist, such as network features like DNS and proxy, or the Kubernetes dashboard. Zwykle nie są wdrażane własne aplikacje w tej przestrzeni nazw.You typically don't deploy your own applications into this namespace.
  • polecenia-Public — Ta przestrzeń nazw zazwyczaj nie jest używana, ale może być używana do wyświetlania zasobów w całym klastrze i może być wyświetlana przez dowolnego użytkownika.kube-public - This namespace is typically not used, but can be used for resources to be visible across the whole cluster, and can be viewed by any user.

Aby uzyskać więcej informacji, zobacz Kubernetes przestrzenie nazw.For more information, see Kubernetes namespaces.

Następne krokiNext steps

W tym artykule omówiono niektóre podstawowe składniki Kubernetes oraz sposób ich stosowania do klastrów AKS.This article covers some of the core Kubernetes components and how they apply to AKS clusters. Aby uzyskać więcej informacji na temat podstawowych pojęć związanych z Kubernetes i AKS, zobacz następujące artykuły:For more information on core Kubernetes and AKS concepts, see the following articles: