「容器云架构」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并没有回答这个挑战,但是,这是值得考虑的问题。


相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
1天前
|
Kubernetes 应用服务中间件 nginx
Kubernetes详解(六)——Pod对象部署和应用
在Kubernetes系列中,本文聚焦Pod对象的部署和管理。首先,通过`kubectl run`命令创建Pod,如`kubectl run pod-test --image=nginx:1.12 --port=80 --replicas=1`。接着,使用`kubectl get deployment`或`kubectl get pods`查看Pod信息,添加`-o wide`参数获取详细详情。然后,利用Pod的IP地址进行访问。最后,用`kubectl delete pods [Pod名]`删除Pod,但因Controller控制器,删除后Pod可能自动重建。了解更多细节,请参阅原文链接。
8 5
|
1天前
|
Kubernetes Linux Docker
Kubernetes详解(四)——基于kubeadm的Kubernetes部署
Kubernetes详解(四)——基于kubeadm的Kubernetes部署
12 2
|
5天前
|
Kubernetes Cloud Native 持续交付
探索云原生架构的未来:如何优化资源管理和服务部署
【5月更文挑战第6天】 随着云计算的快速发展,云原生技术已成为企业数字化转型的关键驱动力。此篇文章深入探讨了云原生架构的核心组件及其在资源管理和服务部署方面的优化策略。通过分析容器化、微服务及自动化管理的实践案例,本文旨在为读者提供一套系统的方法论,以利用云原生技术实现更高效、灵活且可靠的IT基础设施。
24 2
|
10天前
|
敏捷开发 运维 测试技术
构建高效自动化运维体系:基于容器技术的持续集成与持续部署实践
【4月更文挑战第30天】在数字化转型的浪潮中,企业对软件交付速度和质量的要求日益提高。自动化运维作为提升效率、确保稳定性的关键手段,其重要性不言而喻。本文将探讨如何利用容器技术构建一个高效的自动化运维体系,实现从代码提交到产品上线的持续集成(CI)与持续部署(CD)。通过分析现代容器技术与传统虚拟化的差异,阐述容器化带来的轻量化、快速部署及易于管理的优势,并结合实例讲解如何在实际环境中搭建起一套完善的CI/CD流程。
|
10天前
|
存储 Linux 文件存储
Linux使用Docker部署Traefik容器并实现远程访问管理界面-1
Linux使用Docker部署Traefik容器并实现远程访问管理界面
|
10天前
|
存储 Java 应用服务中间件
Springboot项目打war包部署到外置tomcat容器【详解版】
该文介绍了将Spring Boot应用改为war包并在外部Tomcat中部署的步骤:1) 修改pom.xml打包方式为war;2) 排除内置Tomcat依赖;3) 创建`ServletInitializer`类继承`SpringBootServletInitializer`;4) build部分需指定`finalName`;5) 使用`mvn clean package`打包,将war包放入外部Tomcat的webapps目录,通过startup脚本启动Tomcat并访问应用。注意,应用访问路径和静态资源引用需包含war包名。
|
11天前
|
运维 Kubernetes 持续交付
构建高效自动化运维系统:基于容器技术的持续集成与持续部署实践
【4月更文挑战第30天】 在快速发展的云计算时代,传统的运维模式已无法满足敏捷开发和快速迭代的需求。本文将介绍如何利用容器技术搭建一套高效自动化运维系统,实现软件的持续集成(CI)与持续部署(CD)。文章首先探讨了现代运维面临的挑战,接着详细阐述了容器技术的核心组件和工作原理,最后通过实际案例展示了如何整合这些组件来构建一个可靠、可扩展的自动化运维平台。
|
11天前
|
弹性计算 Shell 数据安全/隐私保护
自动化构建和部署Docker容器
【4月更文挑战第30天】
15 0
|
12天前
|
Kubernetes 应用服务中间件 nginx
K8S二进制部署详解,一文教会你部署高可用K8S集群(二)
K8S二进制部署详解,一文教会你部署高可用K8S集群(二)
|
12天前
|
Kubernetes 网络安全 数据安全/隐私保护
K8S二进制部署详解,一文教会你部署高可用K8S集群(一)
K8S二进制部署详解,一文教会你部署高可用K8S集群(一)