一、 需求分析

当前kubernetes集群中的worker节点可以支持添加多可用区中的ECS,这种部署方式的目的是可以让一个应用的多个pod(至少两个)能够分布在不同的可用区,起码不能分布在同一个可用区,已达到高可用或者同城灾备的部署。

二、 效果图

三、 实现原理

为了实现上述的效果,kubernetes提供了pod的亲和性和反亲和性来保证pod在节点级别,可用区级别的高可用部署;具体的值为topologyKey:failure-domain.beta.kubernetes.io/zone。

四、 实现步骤

在ACK上创建完集群后,不论从哪个可用区添加节点,都会对该节点打上对应的可用区标签,比如,一个节点是属于北京可用区a的,那么在加入到kubernetes集群后,该节点上会有一个这样的标签:failure-domain.beta.kubernetes.io/zone: cn-beijing-a。

在有了上述标签后,对应用进行多可用区部署时,我们就可以使用一下yaml文件来使不同的pod分配到不同的可用区。

Yaml文件示例:

apiVersion: apps/v1kind: Deploymentmetadata: name: redis-cachespec: selector: matchLabels: app: store replicas: 3 template: metadata: labels: app: store spec: affinity: podAntiAffinity: preferredDuringSchedulingIgnoredDuringExecution: - labelSelector: matchExpressions: - key: app operator: In values: - store topologyKey: "failure-domain.beta.kubernetes.io/zone" containers: - name: redis-server image: redis:3.2-alpine

上面yaml文件中的podAntiAffinity:部分规定了node的反亲和性,并且由于使用了topologyKey: "failure-domain.beta.kubernetes.io/zone",如果failure-domain.beta.kubernetes.io/zone这个key有三种value,比如cn-beijing-a,cn-beijing-b,cn-beijing-c;那么pod会被分配在这三个不同的可用区。并且由于使用了preferredDuringSchedulingIgnoredDuringExecution,所以如果pod个数大于可用区个数的话,pod会尽可能的放在不同的可用区,最后会出现多出来的pod会与原有pod在同一个可用区。

上面的使用方式还有很多种,包括node级别的,详细请参考:https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity

由于云盘不能跨可用区挂载,如果有pod使用了存储卷,该pod需要被调度到与存储卷相同的可用区的机器上。

其他存储卷比如NAS,OSS是可以采用上述部署方式的。

作者:朱延生

节点部署_Pod在多可用区worker节点上的高可用部署相关推荐

  1. Pod在多可用区worker节点上的高可用部署

    一.      需求分析 当前kubernetes集群中的worker节点可以支持添加多可用区中的ECS,这种部署方式的目的是可以让一个应用的多个pod(至少两个)能够分布在不同的可用区,起码不能分布 ...

  2. Pod在多可用区worker节点上的高可用部署 1

    一.      需求分析 当前kubernetes集群中的worker节点可以支持添加多可用区中的ECS,这种部署方式的目的是可以让一个应用的多个pod(至少两个)能够分布在不同的可用区,起码不能分布 ...

  3. 阿里云 mysql 高可用_如何在阿里云上构建高可用应用

    原标题:如何在阿里云上构建高可用应用 业务高可用是我们每个项目的需求,一个经常故障的项目,会让我们觉得不靠谱而选择放弃,从而导致项目的失败.今天,我们来聊一聊,如何让你自己的业务能够更加稳固的运行! ...

  4. 近几年在淘宝及阿里云上的高可用架构演进

    原文:架构之家 主要介绍了其近几年在阿里电商平台及阿里云上的高可用设计的经验,分为两个部分:第一部分主要包括传统的淘宝店铺稳定性体系的建设及相关的基础链路设计.缓存和容灾方案的设计及部署:第二部分主要 ...

  5. Linux 上的高可用中间件

    原文地址:http://www.ibm.com/developerworks/cn/linux/l-halinux/ Linux 上的高可用中间件,第 1 部分: heartbeat 与 Apache ...

  6. 构建Oracle高可用环境HA rac:企业级高可用数据库架构、实战与经验总结

    1.1  理解Oracle数据库 1.2  Oracle高可用特性(High Availability) 1.3  搭建高可用的周边辅助环境 1.4  高可用应用设计 1.5  高可用数据库设计 1. ...

  7. K3S系列文章-使用AutoK3s在腾讯云上安装高可用K3S集群

    开篇 <K3s 系列文章> <Rancher 系列文章> 方案 在腾讯云上安装 K3S 后续会在这套 K3S 集群上安装 Rancher 方案目标 高可用 3 台master ...

  8. mysql主主和F5高可用_MYSQL 主主热备高可用方案与实现

    咱们选择主主互热备作生产环境MYSQL高可用方案,该方案的优势是在压力大的时候,仍然能够经过设置负载均衡来作业务分发.并且最重要的是配置简单,两份配置都同样,改个IP就能够 就喜欢简单的东西.mysq ...

  9. mysql跨机房高可用方案_10款常见MySQL高可用方案选型解读

    作者介绍 王松磊,现任职于UCloud,从事MySQL数据库内核研发工作.主要负责UCloud云数据库udb的内核故障排查工作以及数据库新特性的研发工作. 一.概述 我们在考虑MySQL数据库的高可用 ...

最新文章

  1. python3 random函数_Python3 中 random模块
  2. api网关揭秘--spring cloud gateway源码解析
  3. 航天金税 接口_用友凭证接口可以实现数据之间无缝对接和打通
  4. ❤️520要来啦,快去给心仪的她写表白代码趴!(python)❤️
  5. mysql sql注入怎么获取数据_手把手教你通过SQL注入盗取数据库信息
  6. (CF#257)B. Jzzhu and Sequences
  7. 上传到服务器的图片访问的时候提示403 You don't have permission to access
  8. PHP生成海报 文字描边,如何使用css text-stroke属性来制作文字描边?(源代码)...
  9. 推美妆、搭IP,出货千万的天猫精灵打上95后的主意
  10. 【很有趣】用Python实现一个简单的人脸识别,原来我和这个明星如此相似
  11. linux磁盘检测和修复
  12. KPI关键绩效指标(Key Performance Indicator)
  13. 缓存(cache、Redis)
  14. SQLyog 最新版本12.5-64bit 完美破解,亲测可用!
  15. 物联网是什么?物联网指的是哪些?
  16. 2021地理设计组一等奖:融合短视频和深度学习的城市空间意象解构与分析
  17. 家庭哑铃健身训练计划
  18. 珠穆朗玛币王:11月25日人无信不立,业无信不兴(空军肆虐,多头溃败)
  19. 小白初学AFL(American Fuzzy Lop)
  20. 7 DICOM成像协议编码实现-有损压缩和无损压缩解压

热门文章

  1. 链表C++ | 从尾部打印头部(使用栈、递归实现)_3
  2. C ++基础 | 用户输入之cin函数的正规使用_4
  3. 2017.9.8 仙人掌图 失败总结
  4. 【Level 08】U08 Positive Attitude L4 News flash
  5. 3GPP协议学习-TS 38.201-NR;物理层;总体描述
  6. 简单地理解 Python 的装饰器
  7. html5怎么让div集中,html – 如何集中5个div而不使用margin-left?
  8. python最大公约数计算_使用Python求解最大公约数的实现方法
  9. php的 静态变量,PHP之static静态变量详解
  10. python持久层框架_SQLAlchemy