Continuidade de negócios e recuperação de desastre em escala empresarial para o serviço kubernetes do AzureEnterprise-scale business continuity and disaster recovery for Azure Kubernetes Service

Sua organização precisa projetar recursos adequados de nível de plataforma do AKS (serviço kubernetes do Azure) para atender a seus requisitos específicos.Your organization needs to design suitable Azure Kubernetes Service (AKS) platform-level capabilities to meet its specific requirements. Esses serviços de aplicativo têm requisitos relacionados ao RTO (objetivo de tempo de recuperação) e ao RPO (objetivo de ponto de recuperação).These application services have requirements related to recovery time objective (RTO) and recovery point objective (RPO). Há várias considerações a serem abordadas para a recuperação de desastre AKS.There are multiple considerations to address for AKS disaster recovery. Sua primeira etapa é definir um SLA (contrato de nível de serviço) para sua infraestrutura e aplicativo.Your first step is to define a service-level agreement (SLA) for your infrastructure and application. Saiba mais sobre o SLA para o AKs (serviço kubernetes do Azure).Learn about the SLA for Azure Kubernetes Service (AKS). Consulte a seção detalhes do SLA para obter informações sobre cálculos de tempo de atividade mensal.See the SLA details section for information about monthly uptime calculations.

Considerações sobre o designDesign considerations

Considere os seguintes fatores:Consider the following factors:

  • O cluster AKS deve usar vários nós em um pool de nós para fornecer o nível mínimo de disponibilidade para seu aplicativo.The AKS cluster should use multiple nodes in a node pool to provide the minimum level of availability for your application.

  • Defina limites e solicitações de Pod.Set pod requests and limits. Definir esses limites permite kubernetes:Setting these limits lets Kubernetes:

    • Forneça com eficiência recursos de CPU e memória para os pods.Efficiently give CPU and memory resources to the pods.

    • Ter maior densidade de contêiner em um nó.Have higher container density on a node.

    Os limites também podem aumentar a confiabilidade com custos reduzidos devido ao melhor uso do hardware.Limits can also increase reliability with reduced costs because of better use of hardware.

  • Adequação AKS para conjuntos de disponibilidade ou zonas de disponibilidade .AKS suitability for Availability Zones or availability sets.

    • Escolha uma região que oferece suporte às Zonas de Disponibilidade.Choose a region that supports Availability Zones.

    • Zonas de Disponibilidade só pode ser definido quando o pool de nós é criado e não pode ser alterado posteriormente.Availability Zones can only be set when the node pool is created and can't be changed later. O suporte a vários fusos só se aplica a pools de nós.Multizone support only applies to node pools.

    • Para obter um benefício de zona completa, todas as dependências de serviço também devem dar suporte a zonas.For complete zonal benefit, all service dependencies must also support zones. Se um serviço dependente não oferecer suporte a zonas, é possível que uma falha de zona cause a falha desse serviço.If a dependent service doesn't support zones, it's possible that a zone failure could cause that service to fail.

    • Para obter maior disponibilidade além do que Zonas de Disponibilidade pode obter, execute vários clusters AKS em diferentes regiões emparelhadas.For higher availability beyond what Availability Zones can achieve, run multiple AKS clusters in different paired regions. Se um recurso do Azure oferecer suporte à redundância geográfica, forneça o local em que o serviço redundante terá sua região secundária.If an Azure resource supports geo-redundancy, provide the location where the redundant service will have its secondary region.

  • Você deve estar ciente das diretrizes para a recuperação de desastres no AKs.You should be aware of guidelines for disaster recovery in AKS. Em seguida, considere se eles se aplicam aos clusters AKS que você usa para Azure Dev Spaces.Then consider whether they apply to the AKS clusters that you use for Azure Dev Spaces.

  • Crie backups de aplicativos e dados de forma consistente.Consistently create backups for applications and data.

    • Um serviço sem estado pode ser replicado com eficiência.A non-stateful service can be replicated efficiently.

    • Se você precisar armazenar o estado no cluster (não recomendado), certifique-se de fazer backup dos dados com frequência na região emparelhada.If you need to store state in the cluster (not recommended), make sure you back up the data frequently in the paired region.

  • Atualização e manutenção do cluster.Cluster update and maintenance.

    • Sempre mantenha o cluster atualizado.Always keep your cluster up to date.

    • Lembre-se do processo de liberação e reprovação.Be aware of the release and deprecation process.

    • Planeje suas atualizações e manutenção com antecedência.Plan your updates and maintenance in advance.

  • Conectividade de rede se ocorrer um failover.Network connectivity if a failover occurs.

    • Escolha um roteador de tráfego que possa distribuir o tráfego entre zonas ou regiões, dependendo do seu requisito.Choose a traffic router that can distribute traffic across zones or regions, depending on your requirement. Essa arquitetura implanta Azure Load Balancer porque ela pode distribuir tráfego não-Web entre zonas.This architecture deploys Azure Load Balancer because it can distribute non-web traffic across zones.

    • Se você precisar distribuir o tráfego entre regiões, considere usar a porta frontal do Azure.If you need to distribute traffic across regions, consider using Azure Front Door.

  • Failovers planejados e não planejados.Planned and unplanned failovers.

    • Ao configurar cada serviço do Azure, escolha recursos que dão suporte à recuperação de desastre.When setting up each Azure service, choose features that support disaster recovery. Por exemplo, nessa arquitetura, habilite o registro de contêiner do Azure para replicação geográfica.For example, in this architecture, enable Azure Container Registry for geo-replication. Se uma região ficar inativa, você ainda poderá efetuar pull de imagens da região replicada.If a region goes down, you can still pull images from the replicated region.
  • Manter os recursos de DevOps de engenharia para alcançar metas de nível de serviço.Maintain engineering DevOps capabilities to reach service level goals.

  • Determine se você precisa de um SLA com suporte financeiro para o ponto de extremidade do servidor de API do kubernetes.Determine whether you need a financially backed SLA for your Kubernetes API server endpoint.

Recomendações sobre designDesign recommendations

Veja a seguir as práticas recomendadas para seu design:The following are best practices for your design:

  • Use três nós para o pool de nós do sistema.Use three nodes for the system node pool. Para o pool de nós de usuário, comece sem menos de dois nós.For the user node pool, start with no less than two nodes. Se você precisar de maior disponibilidade, configure mais nós.If you need higher availability, set up more nodes.

  • Isole seu aplicativo dos serviços do sistema colocando-o em um pool de nós separado.Isolate your application from the system services by placing it in a separate node pool. Dessa forma, os serviços Kubernetess são executados em nós dedicados e não concorrem com outros serviços.This way, Kubernetes services run on dedicated nodes and don't compete with other services. Use marcas, rótulos e os totais para identificar o pool de nós para agendar sua carga de trabalho.Use tags, labels, and taints to identify the node pool to schedule your workload.

  • A manutenção regular do cluster, como a criação de atualizações oportunas, é crucial para a confiabilidade.Regular upkeep of your cluster like making timely updates is crucial for reliability. Lembre-se da janela com suporte das versões do kubernetes no AKs e planeje suas atualizações com antecedência.Be mindful of supported window of Kubernetes versions on AKS and plan your updates in advance. Além disso, é recomendável monitorar a integridade do pods através de investigações.Also, monitoring the health of the pods through probes is recommended.

  • Sempre que possível, remova o estado do serviço de contêineres internos.Whenever possible, remove service state from inside containers. Em vez disso, use uma PaaS (plataforma como serviço) do Azure que dá suporte à replicação em várias regiões.Instead, use an Azure platform as a service (PaaS) that supports multiregion replication.

  • Verifique os recursos de Pod.Ensure pod resources. É altamente recomendável que as implantações especifiquem os requisitos de recursos de Pod.It's highly recommended that deployments specify pod resource requirements. O Agendador pode então agendar adequadamente o pod.The scheduler can then appropriately schedule the pod. As depreciações de confiabilidade são significativamente quando os pods não estão agendados.Reliability depreciates significantly when pods aren't scheduled.

  • Configure várias réplicas na implantação para lidar com interrupções, como falhas de hardware.Set up multiple replicas in the deployment to handle disruptions like hardware failures. Para eventos planejados, como atualizações e upgrades, um orçamento de interrupção pode garantir que exista o número necessário de réplicas de pod para lidar com a carga de aplicativo esperada.For planned events like updates and upgrades, a disruption budget can ensure the required number of pod replicas exist to handle expected application load.

  • Seus aplicativos podem usar o armazenamento do Azure para seus dados.Your applications might use Azure Storage for their data. Como seus aplicativos estão espalhados por vários clusters AKS em regiões diferentes, você precisa manter o armazenamento sincronizado.Because your applications are spread across multiple AKS clusters in different regions, you need to keep the storage synced. Aqui estão duas maneiras comuns de replicar o armazenamento:Here are two common ways to replicate storage:

    • Replicação assíncrona baseada em infraestruturaInfrastructure-based asynchronous replication

    • Replicação assíncrona baseada em aplicativoApplication-based asynchronous replication

  • Estimar limites de Pod.Estimate pod limits. Testar e estabelecer uma linha de base.Test and establish a baseline. Comece com valores iguais para solicitações e limites.Start with equal values for requests and limits. Em seguida, ajuste gradualmente esses valores até que você tenha estabelecido um limite que pode causar instabilidade no cluster.Then, gradually tune those values until you've established a threshold that can cause instability in the cluster. Os limites de Pod podem ser especificados em seus manifestos de implantação.Pod limits can be specified in your deployment manifests.

    Os recursos internos fornecem uma solução para a tarefa complexa de lidar com falhas e interrupções na arquitetura de serviço.The built-in features provide a solution to the complex task of handling failures and disruptions in service architecture. Essas configurações ajudam a simplificar a automação de design e implantação.These configurations help to simplify both design and deployment automation. Quando uma organização definiu um padrão para o SLA, RTO e RPO, ela pode usar serviços internos para kubernetes e o Azure para atingir suas metas de negócios.When an organization has defined a standard for the SLA, RTO, and RPO, it can use built-in services to Kubernetes and Azure to achieve its business goals.

  • Definir orçamentos de interrupção de Pod.Set pod disruption budgets. Essa configuração verifica quantas réplicas em uma implantação podem ser desativadas durante um evento de atualização ou atualização.This setting checks how many replicas in a deployment you can take down during an update or upgrade event.

  • Impor cotas de recursos nos namespaces de serviço.Enforce resource quotas on the service namespaces. A cota de recursos em um namespace garantirá que as solicitações de Pod e os limites sejam definidos corretamente em uma implantação.The resource quota on a namespace will ensure pod requests and limits are properly set on a deployment.

    • A configuração de cotas de recursos no nível de cluster pode causar problemas ao implantar serviços de parceiros que não têm solicitações e limites adequados.Setting resources quotas at the cluster level can cause problems when deploying partner services that don't have proper requests and limits.
  • Execute regularmente a versão mais recente da kube-advisor ferramenta de código-fonte aberto para detectar problemas no cluster.Regularly run the latest version of the kube-advisor open-source tool to detect issues in your cluster.

  • Armazene suas imagens de contêiner no registro de contêiner do Azure e replique geograficamente o registro para cada região do AKS.Store your container images in Azure Container Registry and geo-replicate the registry to each AKS region.

  • O AKS pode ser usado como um serviço gratuito, mas essa camada não oferece um SLA com suporte financeiro.AKS can be used as a free service, but that tier doesn't offer a financially backed SLA. Para obter esse SLA, você precisa adicionar um SLA de tempo de atividade ao que comprar.To get that SLA, you have to add an uptime SLA to what you buy. Recomendamos que todos os clusters de produção usem essa opção.We recommend all production clusters use this option. Reserve clusters sem essa opção para clusters de pré-produção.Reserve clusters without this option for pre-production clusters. Quando combinado com Zonas de Disponibilidade, o SLA do servidor de API kubernetes aumenta para 99,95%.When combined with Availability Zones, the Kubernetes API server SLA is increased to 99.95%. Seus pools de nós e outros recursos são cobertos por seu próprio SLA.Your node pools, and other resources are covered under their own SLA.

  • Use várias regiões e locais de emparelhamento para conectividade do ExpressRoute .Use multiple regions and peering locations for ExpressRoute connectivity.

    Se ocorrer uma interrupção afetando uma região do Azure ou um local do provedor de emparelhamento, uma arquitetura de rede híbrida redundante pode ajudar a garantir a conectividade entre locais ininterrupta.If an outage affecting an Azure region or peering provider location occurs, a redundant hybrid network architecture can help ensure uninterrupted cross-premises connectivity.

  • Regiões de interconexão com emparelhamento de rede virtual global.Interconnect regions with global virtual network peering. Se os clusters precisarem se comunicar entre si, conectar ambas as redes virtuais entre si pode ser obtido por meio do emparelhamento de rede virtual.If the clusters need to talk to each other, connecting both virtual networks to each other can be achieved through virtual network peering. Essa tecnologia interconecta redes virtuais entre si, fornecendo alta largura de banda na rede de backbone da Microsoft, mesmo em regiões geográficas diferentes.This technology interconnects virtual networks to each other providing high bandwidth across Microsoft's backbone network, even across different geographic regions.

  • Usando o protocolo anycast baseado em TCP dividido, a porta frontal do Azure garante que seus usuários finais se conectem imediatamente ao ponto de presença da porta frontal mais próximo.Using split TCP-based anycast protocol, Azure Front Door ensures that your end users promptly connect to the nearest Front Door point of presence. Outros recursos da porta frontal do Azure incluem:Other features of Azure Front Door include:

    • Encerramento de TLSTLS termination

    • Domínio personalizadoCustom domain

    • Firewall do Aplicativo WebWeb Application Firewall

    • Reconfiguração de URLURL rewrite

    • Afinidade de sessãoSession affinity

    Examine as necessidades do tráfego do aplicativo para saber qual solução é a mais adequada.Review the needs of your application traffic to learn which solution is the most suitable.