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

news/2024/5/22 17:08:36

 

一、      需求分析

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

 

二、      效果图

8482bb2adea11a65a5143df914c6b5750259d3a2

三、      实现原理

为了实现上述的效果,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/v1
kind: Deployment
metadata:name: redis-cache
spec:selector:matchLabels:app: storereplicas: 3template:metadata:labels:app: storespec:affinity:podAntiAffinity:preferredDuringSchedulingIgnoredDuringExecution:- labelSelector:matchExpressions:- key: appoperator: Invalues:- storetopologyKey: "failure-domain.beta.kubernetes.io/zone"containers:- name: redis-serverimage: 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是可以采用上述部署方式的。


http://lihuaxi.xjx100.cn/news/267506.html

相关文章

昨天,我用 Python 写了一个婚介模型

作者 | 天元浪子来源 | CSDN(ID:CSDNnews)先声明一下:本文纯属七夕应景娱乐之作。如果有人因为遵循本模型提出的择偶理论而导致失恋或单身,除了同情,我不能补偿更多。在中国的传统节日里,七夕可…

Mac hive 配置和安装

需要安装hadoop和mysql(可以选择mariadb) brew install hive 该命令默认安装的版本较新,我的是 hive最新3.1.2_1,安装位置:/usr/local/Cellar/hive/3.1.2_1 环境变量,修改的是当前用户 vim ~/.bash_profile export HIVE_HOME/usr/local/Ce…

pandas案例分析

pandas案例分析 1 需求 现在我们有一组从2006年到2016年1000部最流行的电影数据 数据来源:Sunday EDA | Kaggle 问题1:我们想知道这些电影数据中评分的平均分,导演的人数等信息,我们应该怎么获取?问题2:…

MVC 4.0 Razor模板引擎 @Html.RenderPartial 与 @Html.RenderAction 区别

近来在学习MVC 4.0,设置布局全局网页的页脚,使用了Razor语法 {Html.RenderPartial("Footer", Model.FooterData);} 但是并不理解Html帮助器方法Html.RenderPartial。 先来介绍一下Html.RenderPartial用法。 Html.RenderPartial在Asp.net Mvc中…

LSTM模型结构的可视化

点击上方“小白学视觉”,选择加"星标"或“置顶”重磅干货,第一时间送达来自 | 知乎 作者 | master苏链接 | https://zhuanlan.zhihu.com/p/139617364最近在学习LSTM应用在时间序列的预测上,但是遇到一个很大的问题就是LSTM在传统B…

matlab生产正弦mif文件

离散化采集点 离散化采样点,将连续的正弦波信号进行离散化;应用matlab软件进行实现; 将离散化后的正弦波一个周期存储到Ram中。 3.1 将离散后的数据进行定点化,Ram的规格是256x8,数据规格1bit符号和7比特小数位。 3…

第三周作业

第一题: 给定一个整数数组(包含正负数),找到一个具有最大和的子数组,返回其最大的子数组的和。 例如:[1, -2, 3, 10, -4, 7, 2, -5]的最大子数组为[3, 10, -4, 7, 2] 输入: 请建立以自己英文名字命名的txt文件&#xf…

刷手机被AI公开点名,比利时议员在议会上不能再「分心」了

视学算法报道转载:机器之心编辑:陈萍开会时间,请保持专注!勿要看手机。开会时,你偷偷看手机的时间可能都被后台系统记录了,这次被记录的还不是别人,正是一些政界大佬们。近日,Reddit…