详情页标题前

阿里云容器服务ACK使用Terraform为节点池指定部署集-云淘科技

详情页1

部署集是控制ECS实例分布的策略,该策略将ECS实例分散部署在不同的物理服务器上,提升业务的高可用性和底层容灾能力。通过为节点池指定部署集,能够保证节点池弹出的ECS实例不会分布于同一物理机上,并通过亲和性配置,使您的应用对底层的节点拓扑进行感知,使其均匀地分布在不同节点上,保证应用的容灾能力和高可用性。本文介绍如何通过Terraform为节点池指定部署集。

前提条件

  • 已安装Terraform。具体操作,请参见在本地安装和配置Terraform。

  • 启动节点自动伸缩前,您需要开通弹性伸缩服务,并完成默认角色授权。具体操作,请参见开通弹性伸缩服务。

  • 已创建部署集。具体操作,请参见创建部署集。

  • 请确保部署集内ECS实例配额充足,默认为20台;所需机型库存充足。具体信息,请参见查看和提升资源配额。

  • 配置阿里云账号信息。

    创建环境变量,用于存放身份认证信息。

    export ALICLOUD_ACCESS_KEY="************"   #替换为阿里云账号的AK信息。
    export ALICLOUD_SECRET_KEY="************"   #替换为阿里云账号的SK信息。
    export ALICLOUD_REGION="cn-beijing"         #替换为您集群所在的地域。

    说明

    为提高权限管理的灵活性和安全性,建议您创建名为Terraform的RAM用户,并为该RAM用户创建AccessKey和授权。具体操作,请参见创建RAM用户和为RAM用户授权。

背景信息

在同可用区下,为了保证高可用,您通常会选择跨主机部署服务,但是当一台物理机出问题时,会影响到应用的所有副本。为了解决这个问题,ECS提供了部署集功能。部署集内所有ECS实例会在指定地域内严格分散在不同的物理服务器上,满足服务相互隔离的应用架构,大幅降低服务不可用的几率。关于部署集的更多信息,请参见部署集概述。

使用限制

  • 每个节点池仅支持绑定一个部署集,且不支持更换部署集。

  • 目前部署集不支持手动添加或移除节点,您可以通过扩缩容节点池的操作,调整部署集中的节点数。具体操作,请参见创建节点池。

  • 选择开启部署集功能后,不支持创建抢占式实例和专有宿主机。

  • 选择开启部署集功能后,一个可用区内最多能创建20台ECS实例(该数值根据您使用云服务器ECS的情况而变化),一个阿里云地域下能创建的ECS实例数量为20×可用区数量(可用区数量由节点池选择的交换机决定)。目前部署集暂不支持配额申请,如有需求,请前往配额平台申请。

  • 部署集支持的实例规格族信息:

    说明

    部分规格族只支持特定的部署集策略,您可以调用DescribeDeploymentSetSupportedInstanceTypeFamily获取各种部署集策略支持的实例规格族信息。

    部署策略

    支持的实例规格族

    高可用策略和部署集组高可用策略

    • g8i、g8y、g7se、g7a、g7、g7t、g7ne、g7nex、g6、g6e、g6a、g6h、g5、g5ne、sn2ne

    • c8i、c8y、c7se、c7、c7t、c7nex、c7a、c6、c6a、c6e、c5、ic5、sn1ne

    • r8y、r7、r7se、r7t、r7a、r6、r6e、r6a、re6、re6p、r5、re4、se1ne、se1

    • hfc7、hfg7、hfr7、hfc6、hfg6、hfr6、hfc5、hfg5

    • d3s、d3c、d2s、d2c、d1、d1ne、d1-c14d3、d1-c8d3

    • i4、i4g、i4r、i3g、i3、i2、i2g、i2ne、i2gne、i1

    • ebmg5、sccgn6、scch5、scch5s、sccg5、sccg5s

    • s6、t6、xn4、mn4、n4、e4、

    • gn6i

    • u1

    网络低时延策略

    • g8a、g8i、g8ae、g8y

    • c8a、c8i、c8ae、c8y

    • r8a、r8i、r8ae、r8y

    • i4

    • ebmgn7ex

  • 在部署集内创建ECS实例,或重启按量付费ECS实例(节省停机模式)时,供货紧缺依然会导致请求失败。请前往配额平台申请,确保配额充足,节点池节点能够正确弹出。

更多有关部署集的使用限制及配额,请参见使用限制。

通过Terraform为节点池指定部署集

  1. 使用以下示例内容,创建节点池并指定部署集。

    • 在已有集群中,创建节点池并指定部署集的配置示例如下。

      provider "alicloud" {
      }
      
      resource "alicloud_cs_kubernetes_node_pool" "test" {
        name                          = "tf-deploymentset"
        cluster_id                    = "c51a1ae4fcd754d4f9bc3b1****"
        vswitch_ids                   = ["vsw-bp1kh6qfb83vt****","vsw-bp13d9ojhwiimya****","vsw-bp1eyw8wt9k1d1l****","vsw-bp1nftkf9sk3fz****"] #多可用区VSwitch,保证ESS弹出节点能够均匀分布在不同可用区。
        instance_types                = ["ecs.c6.xlarge","ecs.c5.2xlarge","ecs.g5.2xlarge","ecs.i2g.2xlarge"]  #可用机型。
        system_disk_category          = "cloud_ssd"
        system_disk_size              = 120
      
        # 指定部署集ID。
        deployment_set_id             = "ds-bp1e19mmbsv3jf64****"
      
        instance_charge_type         = "PostPaid"
        security_group_id            = "sg-bp1ewlqw7ajyaqaz****"
        install_cloud_monitor        = true
      
        platform                     = "AliyunLinux"
        image_id                     = "aliyun_2_1903_x64_20G_alibase_20210726.vhd"
      
        password                     = "Hello1234"
      
        node_count                   = 3
      }
    • 如果未创建集群,创建节点池的配置示例如下。需要先创建集群,然后才能创建节点池。

      provider "alicloud" {
      }
      
      variable "name" {
        default    = "tf-test"
      }
      
      data "alicloud_zones" default {
        available_resource_creation  = "VSwitch"
      }
      
      data "alicloud_instance_types" "default" {
        availability_zone            = data.alicloud_zones.default.zones.0.id
        cpu_core_count               = 2
        memory_size                  = 4
        kubernetes_node_role         = "Worker"
      }
      
      resource "alicloud_vpc" "default" {
        name                         = var.name
        cidr_block                   = "10.1.0.0/21"
      }
      
      resource "alicloud_vswitch" "default" {
        name                         = var.name
        vpc_id                       = alicloud_vpc.default.id
        cidr_block                   = "10.1.1.0/24"
        availability_zone            = "data.alicloud_zones.default.zones.0.id
      }
      
      resource "alicloud_key_pair" "default" {
        key_name                     = var.name
      }
      
      # 创建托管版集群。
      resource "alicloud_cs_managed_kubernetes" "default" {
        name                         = var.name
        count                        = 1
        cluster_spec                 = "ack.pro.small"
        is_enterprise_security_group = true
        worker_number                = 2
        password                     = "Hello1234"
        pod_cidr                     = "172.20.0.0/16"
        service_cidr                 = "172.21.0.0/20"
        worker_vswitch_ids           = [alicloud_vswitch.default.id]
        worker_instance_types        = [data.alicloud_instance_types.default.instance_types.0.id]
      }
      
      # 为集群创建一个开启部署集功能的节点池。
      resource "alicloud_cs_kubernetes_node_pool" "test" {
        name                          = "tf-deploymentset"
        cluster_id                    = "c51a1ae4fcd754d4f9bc3b1****"
        vswitch_ids                   = ["vsw-bp1kh6qfb83vt****","vsw-bp13d9ojhwiimya****","vsw-bp1eyw8wt9k1d1l****","vsw-bp1nftkf9sk3fz****"] #多可用区VSwitch,保证ESS弹出节点能够均匀分布在不同可用区。
        instance_types                = ["ecs.c6.xlarge","ecs.c5.2xlarge","ecs.g5.2xlarge","ecs.i2g.2xlarge"]  #可用机型。
        system_disk_category          = "cloud_ssd"
        system_disk_size              = 120
      
        # 指定部署集ID。
        deployment_set_id             = "ds-bp1e19mmbsv3jf64****"
      
        instance_charge_type         = "PostPaid"
        security_group_id            = "sg-bp1ewlqw7ajyaqaz****"
        install_cloud_monitor        = true
      
        platform                     = "AliyunLinux"
        image_id                     = "aliyun_2_1903_x64_20G_alibase_20210726.vhd"
      
        password                     = "Hello1234"
      
        node_count                   = 3
      }
  2. 执行以下命令完成创建。

    terraform apply -target=alicloud_cs_kubernetes_node_pool.test

    执行结果

    创建成功后,您可以通过以下任意方式查看结果。

    • 您可以在容器服务管理控制台的节点池页面查看到新建的节点池。单击操作列的编辑,可以查看到指定的部署集。阿里云容器服务ACK使用Terraform为节点池指定部署集-云淘科技

    • 您可以在terraform.tfstate文件中,查看到节点池资源包含deployment_set_id字段。

      "deployment_set_id": "ds-bp1e19mmbsv3jf64****"

相关文档

节点池部署集最佳实践

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

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

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

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

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

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

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

相关推荐

  • 阿里云容器服务ACK使用Terraform管理组件-云淘科技

    阿里云容器服务ACK提供丰富的组件,用于扩展集群功能。本文主要介绍如何在Terraform中配置组件,以帮助您在多场景下完成业务的管理。 组件类型 容器服务ACK管理的集群组件类型包括系统组件和可选组件。更多组件信息,请参见组件概述。 系统组件 系统组件是运行ACK集群所依赖的基础组件,创建集群时,会默认安装。例如: kube-apiserver kube-…

    阿里云容器服务 2023年12月10日
  • 阿里云容器服务ACK使用Terraform创建ACK Serverless集群-云淘科技

    Terraform是一种开源工具,用于安全高效地预览、配置和管理云基础架构和资源,帮助开发者自动化地创建、更新阿里云基础设施资源,并进行版本管理。本文介绍如何使用Terraform创建ACK Serverless集群。 前提条件 已安装Terraform。 说明 请确认Terraform版本不低于v0.12.28,可通过terraform –ve…

    阿里云容器服务 2023年12月10日
  • 阿里云容器服务ACK使用Terraform管理已创建的集群-云淘科技

    Terraform支持导入和管理ACK的存量资源,例如集群、节点池等。本文介绍如何通过Terraform管理存量ACK托管版集群。 前提条件 已创建ACK托管版集群,其中包含一个有两个节点的节点池。具体操作,请参见使用Terraform创建ACK托管版集群。 已安装Terraform。 说明 请确认Terraform版本不低于v0.12.28,可通过terr…

    阿里云容器服务 2023年12月10日
  • 信息流广告,信息流部分建议宽度830px,只针对默认列表样式,顺序随机
  • 阿里云容器服务ACK调度应用至指定节点池-云淘科技

    标签(labels)是Kubernetes中一个重要的概念。Service、Deployment和Pod都是通过labels实现关联。而在节点上,您也可以通过设置标签相关的策略使得Pod调度到对应标签的节点上。本文介绍如何调度应用到指定的节点池。 操作步骤 给节点池设置节点标签。您可以在ACK中通过节点池管理集群中的一组节点资源。例如在节点池中统一管理节点的…

    2023年12月10日
  • 阿里云ECS云服务器调整实例所属部署集-云淘科技

    您可以更改现有实例所属的部署集,将其从一个部署集转移到另一个部署集,或将未加入部署集的实例添加到部署集中。本文介绍如何调整实例所属部署集。 前提条件 目标实例必须处于运行中或者已停止状态。具体操作,请参见启动实例和停止实例。 操作步骤 登录ECS管理控制台。 在左侧导航栏,选择实例与镜像 > 实例。 在页面左侧顶部,选择目标资源所在的地域。 在实例列表…

    2023年12月9日

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

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

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