详情页标题前

阿里云容器服务ACK存储多可用区部署推荐配置-云淘科技

详情页1

通过存储多可用区部署优化,可以帮您最大程度的减少应用发布中断。本文介绍存储在多可用区部署时的推荐配置

背景信息

Kubernetes强大的容器编排能力,使得用户在Kubernetes上构建大规模的有状态应用变得越来越简单。虽然Kubernetes简化了应用分发部署的流程,但是也隐藏了底层的硬件逻辑,用户很难感知具体的硬件逻辑,由此可能会导致如下一些非预期的情况。

  • 在多可用区构成的集群下,需要部署在A可用区,最后发现实际部署在B可用区。

  • 创建云盘(PV/PVC)时,出现错误InvalidDataDiskCatagory.NotSupported。更多信息,请参见动态创建PV失败且提示InvalidDataDiskCatagory.NotSupported。

  • 挂载应用时,出现错误The instanceType of the specified instance does not support this disk category。

  • 调度应用时,出现错误0/x node are available, x nodes had volume node affinity conflict。

以上这些问题,均会导致应用发布中断受阻,本文推荐一种存储多可用区部署的最佳配置,最大程度的减少上述问题。

推荐配置

  • 使用云盘进行持久化存储,相对于NAS更加稳定,数据传输带宽更好。

  • 集群内包含三个可用区,确保机器和存储资源满足需求。

  • 当集群可用区内的节点均不可用时,可立即弹出节点进行匹配。

  • 使用高可用类型的云盘避免云盘挂载失败。

  • 确保应用可以均匀分配至各个节点(各个可用区)。

阿里云容器服务ACK存储多可用区部署推荐配置-云淘科技

节点池推荐配置

  • 每个节点池使用单一可用区,每新增一个可用区,都需要新建节点池。具体操作,请参见创建节点池。

    重要

    创建节点池时,确保每个节点池对应各自不同的可用区,建议使用节点池名称区分不同的可用区。

  • 开启节点池的弹性伸缩功能。具体操作,请参见节点自动伸缩。

  • 多可用区内尽量使用同一类型的ECS资源,或者支持同一种类型块存储的ECS资源。

  • 在节点池上对所有节点池进行污点配置,确保不会有其他非预期应用被调度过来影响当前应用。阿里云容器服务ACK存储多可用区部署推荐配置-云淘科技

配置说明如下:

  • 每个节点池使用单一可用区,同时开启节点池的弹性伸缩功能。

    当前可用区没有可用的节点时,系统会自动弹出一个对应可用区的节点供Pod调度,如下图所示。阿里云容器服务ACK存储多可用区部署推荐配置-云淘科技

  • 使用单一类型的ECS资源。

    ECS和块存储有对应关系,即使在同一个可用区调度,也可能因为有节点不支持声明的块存储,导致Pod因云盘挂载问题而无法启动。

集群推荐配置

  • 确保集群版本不低于1.20。

  • 确保集群的CSI组件版本不低于1.22。更多信息,请参见csi-provisioner。

  • 使用高可用类型的云盘,存储类StorageClass模板如下:

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: alicloud-disk-topology-alltype
    parameters:
      type: cloud_essd,cloud_ssd,cloud_efficiency
    provisioner: diskplugin.csi.alibabacloud.com
    reclaimPolicy: Delete
    volumeBindingMode: WaitForFirstConsumer
    allowVolumeExpansion: true
    allowedTopologies:
    - matchLabelExpressions:
      - key: topology.diskplugin.csi.alibabacloud.com/zone
        values:
        - cn-beijing-a
        - cn-beijing-b

部分参数说明如下:

  • type: cloud_essd,cloud_ssd,cloud_efficiency:

    保证CSI组件优先创建ESSD云盘,如果可用区内ESSD云盘库存不足时,可以创建SSD云盘。不会因云盘库存不足等原因导致应用无法启动。

  • volumeBindingMode: WaitForFirstConsumer:

    Kubernetes提供的一种创建云盘的方式,它可以先让Pod进行调度,等到Pod被调度到某一个特定的节点后,CSI才开始根据StorageClass的配置进行云盘创建,此时,您就可以根据Pod所在节点上的信息来创建云盘。

  • allowedTopologies:

    可以将制作卷的拓扑限制在特定的区域。当StorageClass为WaitForFirstConsumer时,调度器将根据StorageClass的拓扑结构对Pod进行调度,以满足云盘的创建需求。

应用推荐配置

以下给出了标准StatefulSet应用配置的模板,您可以根据需求自行定义应用配置。

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: mysql
spec:
  serviceName: "mysql"
  selector:
    matchLabels:
      app: mysql
  template:
    metadata:
      labels:
        app: mysql
    spec:
      topologySpreadConstraints:
      - labelSelector:
          matchLabels:
            app: mysql
        maxSkew: 1
        topologyKey: topology.kubernetes.io/zone
        whenUnsatisfiable: ScheduleAnyway
      containers:
      - image: mysql:5.6
        name: mysql
        env:
        - name: MYSQL_ROOT_PASSWORD
          value: "mysql"
        volumeMounts:
        - name: disk-csi
          mountPath: /var/lib/mysql
      tolerations:
      - key: "app"
        operator: "Exists"
        effect: "NoSchedule"
  volumeClaimTemplates:
  - metadata:
      name: disk-csi
    spec:
      accessModes: [ "ReadWriteMany" ]
      storageClassName: alicloud-disk-topology-alltype
      resources:
        requests:
          storage: 40Gi

部分参数说明如下:

  • topologySpreadConstraints:

    尽量让高可用的Pod分布在不同的可用区。更多信息,请参见Topology Spread Constraints。

  • volumeClaimTemplates:

    您可以根据指定Replicas的数量自动创建对应数量的云盘,便于快速扩展。

内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家

阿里云企业补贴进行中: 马上申请

腾讯云限时活动1折起,即将结束: 马上收藏

同尘科技为腾讯云授权服务中心。

购买腾讯云产品享受折上折,更有现金返利:同意关联,立享优惠

转转请注明出处:https://www.yunxiaoer.com/156785.html

(0)
上一篇 2023年12月10日 上午12:43
下一篇 2023年12月10日
详情页2

相关推荐

  • 开通大数据计算MaxCompute就能存储外表了吗?-云小二-阿里云

    开通大数据计算MaxCompute就能存储外表了吗? 以下为热心网友提供的参考意见 物化事务不支持外部表哈 ,此回答整理自钉群“MaxCompute开发者社区2群” 以下为热心网友提供的参考意见 MaxCompute确实支持存储外表,这意味着您可以在MaxCompute项目中创建OSS(Object Storage ServiceMaxCompute确实支持…

    阿里云 2023年12月24日
  • 宜达的建立流程表单时候,利用一个子表单的内容,给与另外一个子表单下拉进行赋值-云小二-阿里云

    拜托各位大神了 在流程表单中,有两个子表单,目前,需要将一个子表单填写的内容,在内外一个子表单中,赋值,允许下拉出上一个子表但的内容![export function onChange2({ value, extra }){ console.log(value, extra); const subFormInst = this.$(‘tableF…

    2023年12月22日
  • 视觉智能平台我们目前这个oss存储不是上海地区的。这个处理方式目前只能是文档里面两种的么?-云小二-阿里云

    视觉智能平台我们目前这个oss存储不是上海地区的。这个处理方式目前只能是文档里面两种的么? 以下为热心网友提供的参考意见 阿里云视觉智能开放平台在进行人脸识别服务时,确实支持使用上海地域或者非上海地域的OSS链接文件URL进行处理。具体来说,如果你的图片是存储在华东2(上海)地域的OSS上,那么可以直接使用人脸接口进行识别。然而,如果你选择将图片存储到其他地…

    2024年1月9日
  • 阿里云日志服务SLS简介-云淘科技

    日志服务提供外部存储功能,可用于日志服务与MySQL数据库、阿里云对象存储OSS、托管的CSV文件进行关联。本文介绍日志服务外部存储功能的应用场景、功能优势等信息。 应用场景 在日志分析场景中,您可能经常遇到数据分散存储的问题,例如用户操作、行为等相关数据存储在日志服务中,用户属性、注册信息、资金、道具等相关数据存储在数据库中。类似场景下,您需要对用户进行分…

    阿里云日志服务SLS 2023年12月10日
  • 信息流广告,信息流部分建议宽度830px,只针对默认列表样式,顺序随机
  • 函数计算中,我想实现这样一个功能,不知道官方有没有推荐的架构?-云小二-阿里云

    函数计算中,我想实现这样一个功能,不知道官方有没有推荐的架构?同时只允许一个进程运行,这个用Serverless能实现吗?1.我有一个爬虫,因为有qps限制,所以只能定时单线程爬取,爬取的数据最好丢到类似mq里面。2.从mq里面获取数据,然后进行二次处理。3.将二次处理结果,存放到某个存储。4.根据规则,如果匹配到相关规则,就进行告警发送通知。 以下为热心网…

    阿里云 2024年1月9日

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
本站为广大会员提供阿里云、腾讯云、华为云、百度云等一线大厂的购买,续费优惠,保证底价,买贵退差。