「容器云架构」K8s 多区域部署介绍

简介: 「容器云架构」K8s 多区域部署介绍



背景


Kubernetes的设计使得单个Kubernetes集群可以跨多个故障区域multiple failure zones运行,通常这些区域(zones )位于称为区域(region)的逻辑分组中。主要的云提供商将一个区域定义为一组故障区域 failure zones(也称为可用性区域availability zones),这些区域提供一组一致的功能:在一个区域内,每个区域提供相同的api和服务。


典型的云架构旨在将一个区域中的故障同时损害另一个区域中的服务的可能性降至最低。


控制平面行为


所有控制平面组件都支持作为一个可交换资源池运行,每个组件复制一个。


部署群集控制平面时,请跨多个故障区域放置控制平面组件的副本。如果可用性是一个重要问题,请选择至少三个故障区域,并跨至少三个故障区域复制每个单独的控制平面组件(API服务器、调度器、etcd、群集控制器管理器)。如果您正在运行一个云控制器管理器,那么您还应该在您选择的所有故障区域中复制它。


注意:Kubernetes不为API服务器端点提供跨区域弹性。您可以使用各种技术来提高集群API服务器的可用性,包括DNS循环、SRV记录或具有运行状况检查的第三方负载平衡解决方案。


节点行为


Kubernetes自动将工作负载资源(如部署或状态集)的pod分布在集群中的不同节点上。这种传播有助于减少失败的影响。


当节点启动时,每个节点上的kubelet会自动向节点对象添加标签,该对象在kubernetesapi中表示特定的kubelet。这些标签可以包含区域信息。


如果集群跨越多个区域或区域,则可以将节点标签与Pod拓扑扩展约束结合使用,以控制Pod如何在容错域(区域、区域甚至特定节点)之间跨集群扩展。这些提示使调度器能够放置pod以获得更好的预期可用性,从而降低相关故障影响整个工作负载的风险。


例如,您可以设置一个约束,以确保StatefulSet的3个副本都彼此在不同的区域中运行,只要这是可行的。您可以声明性地定义它,而无需显式地定义每个工作负载使用的可用性区域。


跨区域(Zone)分布节点


Kubernetes的核心并不为您创建节点;您需要自己创建节点,或者使用集群API之类的工具代表您管理节点。


使用诸如clusterapi之类的工具,您可以定义作为集群的工作节点跨多个故障域运行的计算机集,以及在整个区域服务中断时自动修复集群的规则。


Pods的手动区域分配


可以将节点选择器约束应用于创建的Pod,以及工作负载资源(如部署、状态集或作业)中的Pod模板。


区域(zone)的存储访问

创建持久卷时,PersistentVolumeLabel许可控制器会自动向链接到特定区域的任何持久卷添加区域标签。然后,调度器通过其NoVolumeZoneConflict谓词确保声明给定PersistentVolume的pod只放置在与该卷相同的区域中。


您可以为PersistentVolumeClaimes指定一个StorageClass,它指定该类中的存储可能使用的故障域(区域)。要了解如何配置可识别故障域或区域的StorageClass,请参阅允许的拓扑。


网络


Kubernetes本身并不包括区域感知网络。您可以使用网络插件来配置集群网络,并且该网络解决方案可能具有特定于区域的元素。例如,如果您的云提供商支持type=LoadBalancer的服务,那么负载平衡器可能只向运行在与处理给定连接的负载平衡器元素所在的同一区域中的pod发送流量。有关详细信息,请查看云提供商的文档。


对于自定义或内部部署,也需要考虑类似的问题。服务和入口行为(包括对不同故障区域的处理)确实有所不同,具体取决于集群的设置方式。


故障恢复


在设置集群时,您可能还需要考虑,如果某个区域中的所有故障区域同时脱机,安装程序是否以及如何恢复服务。例如,您是否依赖于一个区域中至少有一个节点能够运行Pods?


确保任何群集关键修复工作都不依赖于群集中至少有一个正常节点。例如:如果所有节点都不正常,则可能需要运行具有特殊容差的修复作业,以便修复可以完成到足以使至少一个节点投入服务的程度。


Kubernetes并没有回答这个挑战,但是,这是值得考虑的问题。


相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
2月前
|
Ubuntu Linux 开发工具
docker 是什么?docker初认识之如何部署docker-优雅草后续将会把产品发布部署至docker容器中-因此会出相关系列文章-优雅草央千澈
Docker 是一个开源的容器化平台,允许开发者将应用程序及其依赖项打包成标准化单元(容器),确保在任何支持 Docker 的操作系统上一致运行。容器共享主机内核,提供轻量级、高效的执行环境。本文介绍如何在 Ubuntu 上安装 Docker,并通过简单步骤验证安装成功。后续文章将探讨使用 Docker 部署开源项目。优雅草央千澈 源、安装 Docker 包、验证安装 - 适用场景:开发、测试、生产环境 通过以上步骤,您可以在 Ubuntu 系统上成功安装并运行 Docker,为后续的应用部署打下基础。
docker 是什么?docker初认识之如何部署docker-优雅草后续将会把产品发布部署至docker容器中-因此会出相关系列文章-优雅草央千澈
|
2月前
|
Serverless 决策智能 UED
构建全天候自动化智能导购助手:从部署者的视角审视Multi-Agent架构解决方案
在构建基于多代理系统(Multi-Agent System, MAS)的智能导购助手过程中,作为部署者,我体验到了从初步接触到深入理解再到实际应用的一系列步骤。整个部署过程得到了充分的引导和支持,文档详尽全面,使得部署顺利完成,未遇到明显的报错或异常情况。尽管初次尝试时对某些复杂配置环节需反复确认,但整体流程顺畅。
|
3月前
|
Kubernetes Cloud Native 持续交付
容器化、Kubernetes与微服务架构的融合
容器化、Kubernetes与微服务架构的融合
64 1
|
3月前
|
机器学习/深度学习 数据采集 Docker
Docker容器化实战:构建并部署一个简单的Web应用
Docker容器化实战:构建并部署一个简单的Web应用
|
3月前
|
监控 安全 持续交付
构建高效的微服务架构:从设计到部署
构建高效的微服务架构:从设计到部署
38 1
|
3月前
|
监控 持续交付 Docker
Docker 容器化部署在微服务架构中的应用有哪些?
Docker 容器化部署在微服务架构中的应用有哪些?
|
3月前
|
监控 持续交付 Docker
Docker容器化部署在微服务架构中的应用
Docker容器化部署在微服务架构中的应用
|
3月前
|
安全 持续交付 Docker
微服务架构和 Docker 容器化部署的优点是什么?
微服务架构和 Docker 容器化部署的优点是什么?
|
3月前
|
存储 监控 Docker
探索微服务架构下的容器化部署
本文旨在深入探讨微服务架构下容器化部署的关键技术与实践,通过分析Docker容器技术如何促进微服务的灵活部署和高效管理,揭示其在现代软件开发中的重要性。文章将重点讨论容器化技术的优势、面临的挑战以及最佳实践策略,为读者提供一套完整的理论与实践相结合的指导方案。
|
3月前
|
运维 开发者 Docker
Docker Compose:简化容器化应用的部署与管理
Docker Compose:简化容器化应用的部署与管理

热门文章

最新文章