Conceitos principais do kubernetes para o serviço kubernetes do Azure (AKS)Kubernetes core concepts for Azure Kubernetes Service (AKS)

À medida que o desenvolvimento de aplicativos se move para uma abordagem baseada em contêiner, a necessidade de orquestrar e gerenciar recursos é importante.As application development moves towards a container-based approach, the need to orchestrate and manage resources is important. O kubernetes é a plataforma líder que fornece a capacidade de fornecer um agendamento confiável de cargas de trabalho de aplicativos tolerantes a falhas.Kubernetes is the leading platform that provides the ability to provide reliable scheduling of fault-tolerant application workloads. O AKS (serviço kubernetes do Azure) é uma oferta de kubernetes gerenciada que simplifica ainda mais a implantação e o gerenciamento de aplicativos baseados em contêineres.Azure Kubernetes Service (AKS) is a managed Kubernetes offering that further simplifies container-based application deployment and management.

Este artigo apresenta os principais componentes de infraestrutura kubernetes, como o mestre de cluster, nóse pools de nós.This article introduces the core Kubernetes infrastructure components such as the cluster master, nodes, and node pools. Recursos de carga de trabalho como pods, implantaçõese conjuntos também são introduzidos, juntamente com como agrupar recursos em namespaces.Workload resources such as pods, deployments, and sets are also introduced, along with how to group resources into namespaces.

O que é o Kubernetes?What is Kubernetes?

O kubernetes é uma plataforma em rápida evolução que gerencia aplicativos baseados em contêiner e seus componentes de rede e armazenamento associados.Kubernetes is a rapidly evolving platform that manages container-based applications and their associated networking and storage components. O foco está nas cargas de trabalho do aplicativo, não nos componentes subjacentes da infraestrutura.The focus is on the application workloads, not the underlying infrastructure components. O kubernetes fornece uma abordagem declarativa às implantações, apoiadas por um conjunto robusto de APIs para operações de gerenciamento.Kubernetes provides a declarative approach to deployments, backed by a robust set of APIs for management operations.

Você pode criar e executar aplicativos modernos, portáteis e com base em microserviços que se beneficiam do kubernetes orquestrando e gerenciando a disponibilidade desses componentes de aplicativos.You can build and run modern, portable, microservices-based applications that benefit from Kubernetes orchestrating and managing the availability of those application components. O kubernetes dá suporte a aplicativos com e sem estado, uma vez que as equipes avançam por meio da adoção de aplicativos baseados em microserviços.Kubernetes supports both stateless and stateful applications as teams progress through the adoption of microservices-based applications.

Como uma plataforma aberta, o kubernetes permite que você crie seus aplicativos com a linguagem de programação, o sistema operacional, as bibliotecas ou o barramento de sistema de mensagens preferencial.As an open platform, Kubernetes allows you to build your applications with your preferred programming language, OS, libraries, or messaging bus. As ferramentas de CI/CD (integração contínua e entrega contínua) podem ser integradas com o kubernetes para agendar e implantar versões.Existing continuous integration and continuous delivery (CI/CD) tools can integrate with Kubernetes to schedule and deploy releases.

O AKS (serviço kubernetes do Azure) fornece um serviço gerenciado kubernetes que reduz a complexidade das tarefas de implantação e gerenciamento de núcleo, incluindo a coordenação de atualizações.Azure Kubernetes Service (AKS) provides a managed Kubernetes service that reduces the complexity for deployment and core management tasks, including coordinating upgrades. Os mestres de cluster do AKS são gerenciados pela plataforma do Azure e você paga apenas pelos nós do AKS que executam seus aplicativos.The AKS cluster masters are managed by the Azure platform, and you only pay for the AKS nodes that run your applications. O AKS é criado sobre o mecanismo de serviço de kubernetes do Azure de software livre (AKs-Engine).AKS is built on top of the open-source Azure Kubernetes Service Engine (aks-engine).

Arquitetura de cluster kubernetesKubernetes cluster architecture

Um cluster kubernetes é dividido em dois componentes:A Kubernetes cluster is divided into two components:

  • Nós de mestre de cluster fornecem os principais serviços Kubernetess e a orquestração de cargas de trabalho de aplicativo.Cluster master nodes provide the core Kubernetes services and orchestration of application workloads.
  • Os nós executam as cargas de trabalho do aplicativo.Nodes run your application workloads.

Componentes de nó e mestre de cluster kubernetes

Mestre de clusterCluster master

Quando você cria um cluster AKS, um mestre de cluster é automaticamente criado e configurado.When you create an AKS cluster, a cluster master is automatically created and configured. Esse mestre de cluster é fornecido como um recurso gerenciado do Azure extraído do usuário.This cluster master is provided as a managed Azure resource abstracted from the user. Não há custo para o mestre de cluster, somente os nós que fazem parte do cluster AKS.There's no cost for the cluster master, only the nodes that are part of the AKS cluster.

O mestre de cluster inclui os seguintes componentes principais do kubernetes:The cluster master includes the following core Kubernetes components:

  • Kube-apiserver -o servidor de API é como as APIs de kubernetes subjacentes são expostas.kube-apiserver - The API server is how the underlying Kubernetes APIs are exposed. Esse componente fornece a interação para ferramentas de gerenciamento, kubectl como o ou o painel do kubernetes.This component provides the interaction for management tools, such as kubectl or the Kubernetes dashboard.
  • etcd -para manter o estado do seu cluster kubernetes e a configuração, o etcd altamente disponível é um repositório de valor de chave dentro de kubernetes.etcd - To maintain the state of your Kubernetes cluster and configuration, the highly available etcd is a key value store within Kubernetes.
  • Kube-Scheduler -quando você cria ou dimensiona aplicativos, o Agendador determina quais nós podem executar a carga de trabalho e os inicia.kube-scheduler - When you create or scale applications, the Scheduler determines what nodes can run the workload and starts them.
  • Kube-Controller-Manager -o Gerenciador do controlador supervisiona uma série de controladores menores que executam ações como replicar pods e manipular operações de nó.kube-controller-manager - The Controller Manager oversees a number of smaller Controllers that perform actions such as replicating pods and handling node operations.

O AKS fornece um mestre de cluster de locatário único, com um servidor de API dedicado, o Agendador, etc. Você define o número e o tamanho dos nós e a plataforma Azure configura a comunicação segura entre o mestre de cluster e os nós.AKS provides a single-tenant cluster master, 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 cluster master and nodes. A interação com o mestre de cluster ocorre por meio de APIs kubernetes, como kubectl ou o painel kubernetes.Interaction with the cluster master occurs through Kubernetes APIs, such as kubectl or the Kubernetes dashboard.

Esse mestre de cluster gerenciado significa que você não precisa configurar componentes como um repositório etcd altamente disponível, mas também significa que você não pode acessar o mestre de cluster diretamente.This managed cluster master means that you don't need to configure components like a highly available etcd store, but it also means that you can't access the cluster master directly. Atualizações para kubernetes são orquestradas por meio do CLI do Azure ou portal do Azure, que atualiza o mestre de cluster e, em seguida, os nós.Upgrades to Kubernetes are orchestrated through the Azure CLI or Azure portal, which upgrades the cluster master and then the nodes. Para solucionar possíveis problemas, você pode examinar os logs do mestre de cluster por meio de logs de Azure Monitor.To troubleshoot possible issues, you can review the cluster master logs through Azure Monitor logs.

Se precisar configurar o mestre de cluster de forma específica ou precisar de acesso direto a eles, você poderá implantar seu próprio cluster kubernetes usando o AKs-Engine.If you need to configure the cluster master in a particular way or need direct access to them, you can deploy your own Kubernetes cluster using aks-engine.

Para obter as práticas recomendadas associadas, consulte práticas recomendadas para segurança e atualizações de cluster no AKs.For associated best practices, see Best practices for cluster security and upgrades in AKS.

Nós e pools de nósNodes and node pools

Para executar seus aplicativos e serviços de suporte, você precisa de um kubernetes.To run your applications and supporting services, you need a Kubernetes node. Um cluster AKS tem um ou mais nós, que é uma VM (máquina virtual) do Azure que executa os componentes do nó kubernetes e o tempo de execução do contêiner:An AKS cluster has one or more nodes, which is an Azure virtual machine (VM) that runs the Kubernetes node components and container runtime:

  • O kubelet é o agente kubernetes que processa as solicitações de orquestração do mestre de cluster e do agendamento da execução dos contêineres solicitados.The kubelet is the Kubernetes agent that processes the orchestration requests from the cluster master and scheduling of running the requested containers.
  • A rede virtual é manipulada pelo Kube-proxy em cada nó.Virtual networking is handled by the kube-proxy on each node. O proxy roteia o tráfego de rede e gerencia o endereçamento IP para serviços e pods.The proxy routes network traffic and manages IP addressing for services and pods.
  • O tempo de execução do contêiner é o componente que permite que aplicativos em contêineres sejam executados e interajam com recursos adicionais, como a rede virtual e o armazenamento.The container runtime is the component that allows containerized applications to run and interact with additional resources such as the virtual network and storage. Em AKS, Moby é usado como o tempo de execução do contêiner.In AKS, Moby is used as the container runtime.

Máquina virtual do Azure e recursos de suporte para um nó kubernetes

O tamanho da VM do Azure para seus nós define quantas CPUs, quanta memória e o tamanho e o tipo de armazenamento disponíveis (como SSD de alto desempenho ou HDD normal).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). Se você antecipar a necessidade de aplicativos que exigem grandes quantidades de CPU e memória ou armazenamento de alto desempenho, planeje o tamanho do nó de acordo.If you anticipate a need for applications that require large amounts of CPU and memory or high-performance storage, plan the node size accordingly. Você também pode escalar verticalmente o número de nós em seu cluster AKS para atender à demanda.You can also scale up the number of nodes in your AKS cluster to meet demand.

No AKS, a imagem de VM para os nós no cluster está atualmente baseada no Ubuntu Linux ou no Windows Server 2019.In AKS, the VM image for the nodes in your cluster is currently based on Ubuntu Linux or Windows Server 2019. Quando você cria um cluster AKS ou escala verticalmente o número de nós, a plataforma Azure cria o número solicitado de VMs e os configura.When you create an AKS cluster or scale up the number of nodes, the Azure platform creates the requested number of VMs and configures them. Não há nenhuma configuração manual a ser executada.There's no manual configuration for you to perform. Os nós de agente são cobrados como máquinas virtuais padrão, portanto, os descontos que você tem no tamanho da VM que você está usando (incluindo as reservas do Azure) são aplicados automaticamente.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.

Se você precisar usar um sistema operacional host diferente, tempo de execução de contêiner ou incluir pacotes personalizados, poderá implantar seu próprio cluster kubernetes usando o AKs-Engine.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. O upstream aks-engine libera recursos e fornece opções de configuração antes de terem suporte oficial em clusters AKS.The upstream aks-engine releases features and provides configuration options before they are officially supported in AKS clusters. Por exemplo, se você quiser usar um tempo de execução de contêiner diferente de Moby, poderá usar aks-engine para configurar e implantar um cluster kubernetes que atenda às suas necessidades atuais.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.

Reservas de recursosResource reservations

Os recursos de nó são utilizados pelo AKS para fazer a função de nó como parte do cluster.Node resources are utilized by AKS to make the node function as part of your cluster. Isso pode criar um discrepency entre os recursos totais do seu nó e os recursos que se encontram quando usados em AKS.This can create a discrepency between your node's total resources and the resources allocatable when used in AKS. Isso é importante para observar ao definir solicitações e limites para pods implantados pelo usuário.This is important to note when setting requests and limits for user deployed pods.

Para localizar os recursos de localização de um nó, execute:To find a node's allocatable resources run:

kubectl describe node [NODE_NAME]

Para manter o desempenho e a funcionalidade do nó, os recursos são reservados em cada nó por AKS.To maintain node performance and functionality, resources are reserved on each node by AKS. À medida que um nó cresce mais em recursos, a reserva de recursos aumenta devido a uma quantidade maior de pods implantados pelo usuário que precisam de gerenciamento.As a node grows larger in resources, the resource reservation grows due to a higher amount of user deployed pods needing management.

Nota

O uso de Complementos, como OMS, consumirá recursos de nó adicionais.Using add-ons such as OMS will consume additional node resources.

  • A CPU reservada para CPU depende do tipo de nó e da configuração de cluster, o que pode causar menos inlocalizável de CPU devido à execução de recursos adicionaisCPU - reserved CPU is dependent on node type and cluster configuration which may cause less allocatable CPU due to running additional features
Núcleos de CPU no hostCPU cores on host 11 22 44 88 1616 3232 6464
Kube-reservado (milicores)Kube-reserved (millicores) 6060 100100 140140 180180 260260 420420 740740
  • A reserva de memória da memória segue uma taxa progressivaMemory - reservation of memory follows a progressive rate
    • 25% dos primeiros 4 GB de memória25% of the first 4 GB of memory
    • 20% dos próximos 4 GB de memória (até 8 GB)20% of the next 4 GB of memory (up to 8 GB)
    • 10% dos próximos 8 GB de memória (até 16 GB)10% of the next 8 GB of memory (up to 16 GB)
    • 6% dos próximos 112 GB de memória (até 128 GB)6% of the next 112 GB of memory (up to 128 GB)
    • 2% de qualquer memória acima de 128 GB2% of any memory above 128 GB

Essas reservas significam que a quantidade de CPU e memória disponíveis para seus aplicativos pode parecer menos do que o próprio nó contém.These reservations mean that the amount of available CPU and memory for your applications may appear less than the node itself contains. Se houver restrições de recursos devido ao número de aplicativos que você executa, essas reservas garantirão que a CPU e a memória permaneçam disponíveis para os principais componentes do kubernetes.If there are resource constraints due to the number of applications that you run, these reservations ensure CPU and memory remains available for the core Kubernetes components. As reservas de recursos não podem ser alteradas.The resource reservations can't be changed.

O so do nó subjacente também requer alguma quantidade de recursos de CPU e memória para concluir suas próprias funções principais.The underlying node OS also requires some amount of CPU and memory resources to complete its own core functions.

Para obter as práticas recomendadas associadas, consulte práticas recomendadas para recursos básicos do Agendador no AKs.For associated best practices, see Best practices for basic scheduler features in AKS.

Conjuntos de nósNode pools

Os nós da mesma configuração são agrupados em pools de nós.Nodes of the same configuration are grouped together into node pools. Um cluster kubernetes contém um ou mais pools de nós.A Kubernetes cluster contains one or more node pools. O número inicial de nós e tamanho é definido quando você cria um cluster AKS, que cria um pool de nós padrão.The initial number of nodes and size are defined when you create an AKS cluster, which creates a default node pool. Esse pool de nós padrão no AKS contém as VMs subjacentes que executam seus nós de agente.This default node pool in AKS contains the underlying VMs that run your agent nodes. O suporte ao pool de vários nós está atualmente em visualização no AKS.Multiple node pool support is currently in preview in AKS.

Nota

Para garantir que o cluster opere de forma confiável, você deve executar pelo menos 2 (dois) nós no pool de nós padrão.To ensure your cluster to operate reliably, you should run at least 2 (two) nodes in the default node pool.

Quando você dimensiona ou atualiza um cluster AKS, a ação é executada no pool de nós padrão.When you scale or upgrade an AKS cluster, the action is performed against the default node pool. Você também pode optar por dimensionar ou atualizar um pool de nós específico.You can also choose to scale or upgrade a specific node pool. Para operações de atualização, os contêineres em execução são agendados em outros nós no pool de nós até que todos os nós sejam atualizados com êxito.For upgrade operations, running containers are scheduled on other nodes in the node pool until all the nodes are successfully upgraded.

Para obter mais informações sobre como usar vários pools de nós no AKS, consulte criar e gerenciar vários pools de nós para um cluster no 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.

Seletores de nóNode selectors

Em um cluster AKS que contém vários pools de nós, talvez seja necessário informar ao agendador de kubernetes qual pool de nós usar para um determinado recurso.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. Por exemplo, controladores de entrada não devem ser executados em nós do Windows Server (atualmente em visualização no AKS).For example, ingress controllers shouldn't run on Windows Server nodes (currently in preview in AKS). Os seletores de nó permitem definir vários parâmetros, como o sistema operacional do nó, para controlar onde um pod deve ser agendado.Node selectors let you define various parameters, such as the node OS, to control where a pod should be scheduled.

O exemplo básico a seguir agenda uma instância de NGINX em um nó do Linux usando o seletor de nó "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

Para obter mais informações sobre como controlar onde os pods estão agendados, consulte práticas recomendadas para recursos avançados do Agendador no AKs.For more information on how to control where pods are scheduled, see Best practices for advanced scheduler features in AKS.

PodsPods

O kubernetes usa pods para executar uma instância do seu aplicativo.Kubernetes uses pods to run an instance of your application. Um pod representa uma única instância do seu aplicativo.A pod represents a single instance of your application. Os pods normalmente têm um mapeamento 1:1 com um contêiner, embora haja cenários avançados em que um pod pode conter vários contêineres.Pods typically have a 1:1 mapping with a container, although there are advanced scenarios where a pod may contain multiple containers. Esses pods de vários contêineres são agendados juntos no mesmo nó e permitem que os contêineres compartilhem recursos relacionados.These multi-container pods are scheduled together on the same node, and allow containers to share related resources.

Ao criar um pod, você pode definir limites de recursos para solicitar uma determinada quantidade de recursos de CPU ou memória.When you create a pod, you can define resource limits to request a certain amount of CPU or memory resources. O Agendador kubernetes tenta agendar o pods para ser executado em um nó com recursos disponíveis para atender à solicitação.The Kubernetes Scheduler tries to schedule the pods to run on a node with available resources to meet the request. Você também pode especificar limites máximos de recursos que impedem que um determinado Pod consuma muitos recursos de computação do nó subjacente.You can also specify maximum resource limits that prevent a given pod from consuming too much compute resource from the underlying node. Uma prática recomendada é incluir limites de recursos para todos os pods para ajudar o Agendador kubernetes a entender quais recursos são necessários e permitidos.A best practice is to include resource limits for all pods to help the Kubernetes Scheduler understand which resources are needed and permitted.

Para obter mais informações, consulte kubernetes pods e ciclo de vida do pod kubernetes.For more information, see Kubernetes pods and Kubernetes pod lifecycle.

Um pod é um recurso lógico, mas os contêineres são onde as cargas de trabalho do aplicativo são executadas.A pod is a logical resource, but the container(s) are where the application workloads run. Os pods são normalmente efêmeras, recursos descartáveis e pods agendados individuais perdem alguns dos recursos de alta disponibilidade e redundância que o kubernetes fornece.Pods are typically ephemeral, disposable resources, and individually scheduled pods miss some of the high availability and redundancy features Kubernetes provides. Em vez disso, os pods geralmente são implantados e gerenciados por controladoreskubernetes, como o controlador de implantação.Instead, pods are usually deployed and managed by Kubernetes Controllers, such as the Deployment Controller.

Implantações e manifestos YAMLDeployments and YAML manifests

Uma implantação representa um ou mais pods idênticos, gerenciados pelo controlador de implantação kubernetes.A deployment represents one or more identical pods, managed by the Kubernetes Deployment Controller. Uma implantação define o número de réplicas (PODS) a serem criadas, e o Agendador kubernetes garante que, se os pods ou os nós encontrarem problemas, os pods adicionais serão agendados em nós íntegros.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.

Você pode atualizar implantações para alterar a configuração de pods, imagem de contêiner usada ou armazenamento anexado.You can update deployments to change the configuration of pods, container image used, or attached storage. O controlador de implantação drena e encerra um determinado número de réplicas, cria réplicas da nova definição de implantação e continua o processo até que todas as réplicas na implantação sejam atualizadas.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.

A maioria dos aplicativos sem estado no AKS deve usar o modelo de implantação em vez de agendar pods individuais.Most stateless applications in AKS should use the deployment model rather than scheduling individual pods. O kubernetes pode monitorar a integridade e o status das implantações para garantir que o número necessário de réplicas seja executado dentro do cluster.Kubernetes can monitor the health and status of deployments to ensure that the required number of replicas run within the cluster. Quando você agenda apenas pods individuais, os pods não serão reiniciados se encontrarem um problema e não serão reagendados em nós íntegros se o nó atual encontrar um problema.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.

Se um aplicativo exigir um quorum de instâncias sempre estar disponível para que as decisões de gerenciamento sejam feitas, você não desejará um processo de atualização para interromper essa capacidade.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. Os orçamentos de interrupção de Pod podem ser usados para definir quantas réplicas em uma implantação podem ser desativadas durante uma atualização ou atualização de nó.Pod Disruption Budgets can be used to define how many replicas in a deployment can be taken down during an update or node upgrade. Por exemplo, se você tiver 5 réplicas em sua implantação, poderá definir uma interrupção de pod de 4 para permitir que apenas uma réplica seja excluída/reagendada de cada vez.For example, if you have 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. Assim como os limites de recursos de Pod, uma prática recomendada é definir orçamentos de interrupção de pod em aplicativos que exigem um número mínimo de réplicas para sempre estar presente.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.

As implantações normalmente são criadas e gerenciadas com kubectl create ou kubectl apply.Deployments are typically created and managed with kubectl create or kubectl apply. Para criar uma implantação, você define um arquivo de manifesto no formato YAML (YAML ainda não Markup Language).To create a deployment, you define a manifest file in the YAML (YAML Ain't Markup Language) format. O exemplo a seguir cria uma implantação básica do servidor Web NGINX.The following example creates a basic deployment of the NGINX web server. A implantação especifica 3 réplicas a serem criadas e essa porta 80 deve ser aberta no contêiner.The deployment specifies 3 replicas to be created, and that port 80 be open on the container. Os limites e as solicitações de recursos também são definidos para CPU e memória.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

Aplicativos mais complexos podem ser criados incluindo também serviços como balanceadores de carga no manifesto YAML.More complex applications can be created by also including services such as load balancers within the YAML manifest.

Para obter mais informações, consulte implantações do kubernetes.For more information, see Kubernetes deployments.

Gerenciamento de pacotes com HelmPackage management with Helm

Uma abordagem comum para gerenciar aplicativos no kubernetes é com o Helm.A common approach to managing applications in Kubernetes is with Helm. Você pode criar e usar os gráficos Helm públicos existentes que contêm uma versão empacotada do código do aplicativo e os manifestos kubernetes YAML para implantar recursos.You can build and use existing public Helm charts that contain a packaged version of application code and Kubernetes YAML manifests to deploy resources. Esses gráficos de Helm podem ser armazenados localmente ou com frequência em um repositório remoto, como o repositório de gráficos Helm do registro de contêiner do Azure.These Helm charts can be stored locally, or often in a remote repository, such as an Azure Container Registry Helm chart repo.

Para usar o Helm, um componente de servidor chamado de gaveta é instalado no cluster kubernetes.To use Helm, a server component called Tiller is installed in your Kubernetes cluster. O gaveta gerencia a instalação de gráficos no cluster.The Tiller manages the installation of charts within the cluster. O próprio cliente do Helm é instalado localmente no seu computador ou pode ser usado dentro do Azure cloud Shell.The Helm client itself is installed locally on your computer, or can be used within the Azure Cloud Shell. Você pode pesquisar ou criar gráficos Helm com o cliente e, em seguida, instalá-los em seu cluster kubernetes.You can search for or create Helm charts with the client, and then install them to your Kubernetes cluster.

O Helm inclui um componente de cliente e um componente de gaveta do servidor que cria recursos dentro do cluster kubernetes

Para obter mais informações, consulte install Applications with Helm in Azure kubernetes Service (AKs).For more information, see Install applications with Helm in Azure Kubernetes Service (AKS).

StatefulSets e DaemonSetsStatefulSets and DaemonSets

O controlador de implantação usa o Agendador kubernetes para executar um determinado número de réplicas em qualquer nó disponível com os recursos disponíveis.The Deployment Controller uses the Kubernetes Scheduler to run a given number of replicas on any available node with available resources. Essa abordagem de uso de implantações pode ser suficiente para aplicativos sem estado, mas não para aplicativos que exigem uma Convenção de nomenclatura persistente ou armazenamento.This approach of using deployments may be sufficient for stateless applications, but not for applications that require a persistent naming convention or storage. Para aplicativos que exigem que uma réplica exista em cada nó, ou nós selecionados, em um cluster, o controlador de implantação não examina como as réplicas são distribuídas entre os nós.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.

Há dois recursos de kubernetes que permitem gerenciar esses tipos de aplicativos:There are two Kubernetes resources that let you manage these types of applications:

  • StatefulSets – Mantenha o estado dos aplicativos além de um ciclo de vida de Pod individual, como o armazenamento.StatefulSets - Maintain the state of applications beyond an individual pod lifecycle, such as storage.
  • DaemonSets – garanta uma instância em execução em cada nó, no início do processo de inicialização do kubernetes.DaemonSets - Ensure a running instance on each node, early in the Kubernetes bootstrap process.

StatefulSetsStatefulSets

O desenvolvimento de aplicativos modernos geralmente se destina a aplicativos sem estado, mas o StatefulSets pode ser usado para aplicativos com estado, como aplicativos que incluem componentes de banco de dados.Modern application development often aims for stateless applications, but StatefulSets can be used for stateful applications, such as applications that include database components. Um com estado é semelhante a uma implantação, pois um ou mais pods idênticos são criados e gerenciados.A StatefulSet is similar to a deployment in that one or more identical pods are created and managed. As réplicas em um Statefulset seguem uma abordagem sequencial e normal para implantação, escala, atualizações e encerramentos.Replicas in a StatefulSet follow a graceful, sequential approach to deployment, scale, upgrades, and terminations. Com com estado, a Convenção de nomenclatura, os nomes de rede e o armazenamento persistem à medida que as réplicas são reagendadas.With a StatefulSet, the naming convention, network names, and storage persist as replicas are rescheduled.

Você define o aplicativo no formato YAML usando kind: StatefulSet, e o controlador com estado define a implantação e o gerenciamento das réplicas necessárias.You define the application in YAML format using kind: StatefulSet, and the StatefulSet Controller then handles the deployment and management of the required replicas. Os dados são gravados no armazenamento persistente, fornecido pelo Azure Managed Disks ou pelos arquivos do Azure.Data is written to persistent storage, provided by Azure Managed Disks or Azure Files. Com o StatefulSets, o armazenamento persistente subjacente permanece mesmo quando o com estado é excluído.With StatefulSets, the underlying persistent storage remains even when the StatefulSet is deleted.

Para obter mais informações, consulte kubernetes StatefulSets.For more information, see Kubernetes StatefulSets.

As réplicas em um Statefulset são agendadas e executadas em qualquer nó disponível em um cluster AKS.Replicas in a StatefulSet are scheduled and run across any available node in an AKS cluster. Se você precisar garantir que pelo menos um pod em seu conjunto seja executado em um nó, você poderá usar um 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

Para uma coleta de log específica ou necessidades de monitoramento, talvez seja necessário executar um determinado pod em todos os nós, ou selecionados.For specific log collection or monitoring needs, you may need to run a given pod on all, or selected, nodes. Um daemonset é usado novamente para implantar um ou mais pods idênticos, mas o controlador daemonset garante que cada nó especificado execute uma instância do pod.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.

O controlador Daemonset pode agendar pods nos nós no início do processo de inicialização do cluster antes que o Agendador kubernetes padrão seja iniciado.The DaemonSet Controller can schedule pods on nodes early in the cluster boot process, before the default Kubernetes scheduler has started. Essa capacidade garante que os pods em um Daemonset sejam iniciados antes que os pods tradicionais em uma implantação ou com estado sejam agendados.This ability ensures that the pods in a DaemonSet are started before traditional pods in a Deployment or StatefulSet are scheduled.

Como StatefulSets, um Daemonset é definido como parte de uma definição de YAML usando kind: DaemonSet.Like StatefulSets, a DaemonSet is defined as part of a YAML definition using kind: DaemonSet.

Para obter mais informações, consulte kubernetes DaemonSets.For more information, see Kubernetes DaemonSets.

Nota

Se você estiver usando o complemento de nós virtuais, o DaemonSets não criará pods no nó virtual.If using the Virtual Nodes add-on, DaemonSets will not create pods on the virtual node.

Espaços de nomesNamespaces

Recursos de kubernetes, como pods e implantações, são agrupados logicamente em um namespace.Kubernetes resources, such as pods and Deployments, are logically grouped into a namespace. Esses agrupamentos fornecem uma maneira de dividir logicamente um cluster AKS e restringir o acesso para criar, exibir ou gerenciar recursos.These groupings provide a way to logically divide an AKS cluster and restrict access to create, view, or manage resources. Você pode criar namespaces para grupos de negócios separados, por exemplo.You can create namespaces to separate business groups, for example. Os usuários só podem interagir com recursos dentro de seus namespaces atribuídos.Users can only interact with resources within their assigned namespaces.

Namespaces kubernetes para dividir logicamente os recursos e aplicativos

Quando você cria um cluster AKS, os seguintes namespaces estão disponíveis:When you create an AKS cluster, the following namespaces are available:

  • padrão – esse namespace é onde os pods e as implantações são criadas por padrão quando nenhuma é fornecida.default - This namespace is where pods and deployments are created by default when none is provided. Em ambientes menores, você pode implantar aplicativos diretamente no namespace padrão sem criar separações lógicas adicionais.In smaller environments, you can deploy applications directly into the default namespace without creating additional logical separations. Quando você interage com a API kubernetes, como com kubectl get pods, o namespace padrão é usado quando nenhum é especificado.When you interact with the Kubernetes API, such as with kubectl get pods, the default namespace is used when none is specified.
  • Kube-System -esse namespace é onde os principais recursos existem, como recursos de rede, como DNS e proxy, ou o painel do kubernetes.kube-system - This namespace is where core resources exist, such as network features like DNS and proxy, or the Kubernetes dashboard. Normalmente, você não implanta seus próprios aplicativos nesse namespace.You typically don't deploy your own applications into this namespace.
  • Kube-público -esse namespace normalmente não é usado, mas pode ser usado para que os recursos fiquem visíveis em todo o cluster e possam ser exibidos por qualquer usuário.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.

Para obter mais informações, consulte namespaces do kubernetes.For more information, see Kubernetes namespaces.

Passos seguintesNext steps

Este artigo aborda alguns dos componentes principais do kubernetes e como eles se aplicam aos clusters do AKS.This article covers some of the core Kubernetes components and how they apply to AKS clusters. Para obter informações adicionais sobre os principais conceitos de kubernetes e AKS, consulte os seguintes artigos:For additional information on core Kubernetes and AKS concepts, see the following articles: