文档首页 > > 最佳实践> 使用AOS设计器快速部署容器集群

使用AOS设计器快速部署容器集群

分享
更新时间: 2019/08/27 17:36

容器集群是计算资源的集合,包含一组节点资源,容器运行在节点上。本章节将指导您使用AOS设计器快速部署容器集群,并在该集群中添加节点,为部署容器应用准备好所需的资源。

在此演练中,您将完成以下步骤:

  1. 了解基本概念:在操作本次之前,建议您先了解本次演练用到的各元素基本概念。
  2. 创建密钥对:新建一个密钥对,用于远程登录ECS的身份认证。若您已有密钥对,可跳过此步骤,无需多次创建。
  3. 添加并连接元素:首次打开AOS的设计器时,将从空白模板开始工作。本例中,我们将把VPC.VPC、VPC.Subnet、CCE.Cluster、CCE.NodePool拖放到画布中,并建立它们之间的关联关系。
  4. 配置模板参数:各元素之间的关系建立完成后,将用集成的编辑器为各元素添加参数,以便您可以在创建堆栈时指定输入值。
  5. 创建容器集群堆栈:通过编排好的模板,可创建容器集群。最终可新建“虚拟私有云VPC、子网、容器集群以及节点”
  6. 清除资源:为了避免您为不需要的服务付费,建议您删除堆栈,清理资源。

了解基本概念

  • 创建容器集群需要使用到以下元素,请了解一下基本概念:
    • VPC.VPC(虚拟私有云):虚拟私有云主要目的是构建隔离的、用户自主配置和管理的虚拟网络环境,提升用户云中资源的安全性,简化用户的网络部署。
    • VPC.Subnet(子网):VPC范围比较大,子网是为了在VPC内部做进一步的网络划分。子网是VPC的IP地址范围内的一个区段,其中可放置隔离的资源组。子网位于VPC内部
    • CCE.Cluster(容器集群):容器集群用于运行Docker容器应用,由一个或多个节点组成,容器运行在节点上。在创建容器应用前,您需要存在一个可用集群。
    • CCE.NodePool(节点):每一个节点对应一台弹性云服务器(ECS),容器应用运行在节点上。节点上运行着代理程序(kubelet),用于管理节点上运行的容器实例。当前一个NodePool元素代表一个节点。
  • 各元素的关联关系请参见下图:
    图1 各元素关联关系

    图1,各元素的关联关系如下:

    • 容器集群运行在虚拟私有云的某个子网中。
    • 容器集群包含一个或多个节点,在本例中,只包含了一个节点。
  • 您还需要了解“输入”“输出”参数:

    在配置好各元素的属性后,一般需要配置输入和输出参数。

    • 输入(input):编写模板属性时,有一些属性值会经常性的修改。例如,弹性云服务器的规格,若直接写在模板中,每次属性值变动就需要更改模板十分不便。此时可以在模板中将经常修改的值定义为输入参数(get_input),后期使用模板部署堆栈时,无需修改模板,直接在界面修改对应的值即可。
    • 输出(output):定义模板生成堆栈运行时的输出参数。例如,在创建云服务器时,最终需要获取云服务器的弹性IP,以便可以登录此服务器。类似这种需要获取的值,需配置为输出参数。

创建密钥对

在使用AOS创建之前,您需要新建一个密钥对,用于远程登录节点时身份认证。

说明:

若您已有密钥对,可跳过此步骤,无需多次创建。

  1. 登录华为云控制台
  2. 选择“计算 > 弹性云服务器”。
  3. 选择左侧导航中的“密钥对”,单击“创建密钥对”。
  4. 输入密钥对名称后,单击“确定”。
  5. 在弹出的对话框中,单击“确定”。

    请根据提示信息,查看并保存私钥。为保证安全,私钥只能下载一次,请妥善保管,否则将无法登录节点。

添加并连接元素

  1. 登录AOS控制台。
  2. 在左侧导航中,单击“设计器”。您可以根据图2添加并连接元素。

    图2 添加并连接元素

配置模板参数

  1. 鼠标单击画布中的myvpc元素,在属性窗口中会自动显示该元素的属性。

    请配置如下加粗字体内容。

    说明:
    • 为方便参数可配置可修改,建议经常变动的值使用输入参数。get_input表示输入参数,get_input后面定义的值可以自定义。
    • 当配置的参数有误时,属性区域框中配错的一行参数前会出现,请修改属性配置,并不要离开当前属性页面,否则会将配置的参数丢失。
    {
        "node_templates": {
            "myvpc": {
                "type": "HuaweiCloud.VPC.VPC",
                "properties": {
                    "cidr": {
                        "get_input": "vpc-cidr"
                    },
                    "name": {
                        "get_input": "vpc-name"
                    }
                }
            }
        }
    }
    
    

    各属性解释如下:

    • cidr:虚拟私有云下可用子网范围。设置为输入参数。
    • name:自定义虚拟私有云名称。设置为输入参数。

  2. 鼠标单击画布中的mysubnet元素,在属性窗口中会自动显示该元素的属性。请配置如下加粗字体内容。

    {
        "node_templates": {
            "mysubnet": {
                "type": "HuaweiCloud.VPC.Subnet",
                "properties": {
                    "name": {
                        "get_input": "subnet-name"
                    },
                    "cidr": "192.168.1.0/24",
                    "dhcpEnable": true,
                    "gateway": "192.168.1.1",
                    "vpcId": {
                        "get_reference": "myvpc"
                    },
                    "dnsList": [
                        "114.114.114.115",
                        "114.114.114.114"
                        ]
                }
            }
        }
    }
    各属性解释如下:
    • cidr:子网网段,需要在VPC的子网地址范围内。也可以设置为输入参数。
    • dhcpEnable:保持默认,是否为VPC的子网开启DHCP功能。
    • dnsList:可选参数,表示子网dns服务器地址的集合。如果想使用两个以上dns服务器,请使用该字段。
    • gateway:子网网关。
    • name:自定义子网名称,此处建议设置为输入参数。
    • vpcId:保持默认。在连线完成后,get_reference会自动生成,表示子网所在的VPC信息将通过“myvpc”动态获取得到。

  3. 鼠标单击画布中的mycluster元素,在属性窗口中会自动显示该元素的属性。

    为了便于 “集群规格”“可用区”等参数设为可设置状态,这里使用了输入参数get_input,input的参数名称可自定义。
    {
        "node_templates": {
            "mycluster": {
                "type": "HuaweiCloud.CCE.Cluster",
                "properties": {
                    "name": {
                        "get_input": "clusterName"
                    },
                    "subnetId": {
                        "get_reference": "mysubnet"
                    },
                    "flavor": {
                        "get_input": "clusterFlavor"
                    },
                    "availabilityZone": {
                        "get_input": "availabilityZone"
                    },
                    "vpcId": {
                        "get_reference": "myvpc"
                    }
                }
            }
        }
    }

    各属性解释如下:

    • availabilityZone:子网所在区域,可以直接写值,或使用输入参数,为方便后续修改,建议设为输入参数。“get_input”后的参数值可自定义填写。
    • flavor:集群规格,为方便后续修改,建议设为输入参数。“get_input”后的参数值可自定义填写。
    • name:自定义集群名称。
    • subnetId:保持默认,subnetId信息将动态获取得到。
    • vpcId:保持默认,vpcId信息将动态获取得到。

  4. 鼠标单击画布中的mynode元素,在属性窗口中会自动显示该元素的属性。

    为了便于“节点规格”“登录密钥”设为可设置状态,这里使用了输入参数get_input,input的参数名称可自定义。

    {
        "node_templates": {
            "mynode": {
                "type": "HuaweiCloud.CCE.NodePool",
                "properties": {
                    "dataVolumes": [
                        {
                            "size": {
                                "get_input": "dataVolumeSize"
                            },
                            "volumeType": {
                                "get_input": "dataVolumeType"
                            }
                        }
                    ],
                    "name": {
                        "get_input": "nodeName"
                    },
                    "instances": 1,
                    "rootVolume": {
                        "volumeType": "SATA",
                        "size": 40
                    },
                    "flavor": {
                        "get_input": "nodeFlavor"
                    },
                    "sshKeyName": {
                        "get_input": "sshKey"
                    },
                    "clusterId": {
                        "get_reference": "mycluster"
                    },
                    "publicIp": {
                        "eip": {
                            "bandwidth": {
                                "shareType": {
                                    "get_input": "shareType"
                                },
                                "size": {
                                    "get_input": "bandwidthSize"
                                }
                            },
                            "ipType": {
                                "get_input": "ipType"
                            }
                        }
                    }
                }
            }
        }
    }

    各属性解释如下:

    • clusterId:保持默认,clusterId信息将动态获取得到。
    • dataVolumes:数据盘,建议至少挂载一块数据盘。
    • flavor:节点规格。
    • instances:节点数量。
    • name:自定义节点名称。
    • publicIp:若节点需要被互联网访问,需要设置此参数,绑定弹性IP。
    • rootVolume:节点的磁盘类型和大小,保持默认即可。
    • sshKeyName:自定义登录节点的密钥名称。

  5. 鼠标单击画布的空白区域,属性窗口处会出现输入页签,单击“输入”页签,设置输入参数。

    这里设置的输入参数,都是和前面的步骤中设置的get_input参数一一对应的。

    {
        "inputs": {
            "availabilityZone": {
                "default": "cn-north-1b",
                "description": "子网所在的可用区名称"
            },
            "bandwidthSize": {
                "default": 1,
                "description": "弹性IP的带宽"
            },
            "clusterFlavor": {
                "default": "cce.s1.small",
                "description": "集群规格"
            },
            "clusterName": {
                "default": "aos-cluster",
                "description": "集群名称"
            },
            "clusterversion": {
                "default": "v1.7",
                "description": "安装的集群版本"
            },
            "dataVolumeSize": {
                "default": 140,
                "description": "数据盘大小"
            },
            "dataVolumeType": {
                "default": "SATA",
                "description": "云服务器数据盘对应的磁盘类型,需要与系统所提供的磁盘类型相匹配"
            },
            "dhcenable": {
                "default": true,
                "description": "子网是否开启dhcp功能"
            },
            "ipType": {
                "default": "5_bgp",
                "description": "弹性IP的类型"
            },
            "nodeFlavor": {
                "default": "s2.large.2",
                "description": "创建节点的规格"
            },
            "nodeName": {
                "default": "aos-cce-node",
                "description": "节点名称"
            },
            "number": {
                "default": 1,
                "description": "创建节点的数量"
            },
            "rootVolumeSize": {
                "default": 40,
                "description": "系统盘大小"
            },
            "rootVolumeType": {
                "default": "SATA",
                "description": "系统盘类型"
            },
            "shareType": {
                "default": "PER",
                "description": "弹性IP的共享类型"
            },
            "sshKey": {
                "default": "",
                "description": "创建节点登录使用的密钥对"
            },
            "subnet-cidr": {
                "default": "192.168.0.0/24",
                "description": "子网的CIDR"
            },
            "subnet-gateway": {
                "default": "192.168.0.1",
                "description": "子网的网关"
            },
            "subnet-name": {
                "default": "aos-subnet",
                "description": "子网名称"
            },
            "vpc-cidr": {
                "default": "192.168.0.0/16",
                "description": "虚拟私有云下可用子网范围"
            },
            "vpc-name": {
                "default": "aos-vpc",
                "description": "虚拟私有云名称"
            }
        }
    }

  6. 最后设置outputs,outputs是可选项,用于定义模板生成堆栈运行时的输出参数。在本例中,节点的弹性IP和端口号一般需要被其它组件获取使用的,所以设置弹性IP(即publicip)为输出参数。

    创建容器集群并添加节点一般需要输出的参数包括:

    说明:
    • outputs中的参数,例如“cluster_id”“public_ip”这个名字可以自定义。
    • get_attribute表示可以从某个元素中自动获取对应的值,get_attribute后的参数,例如“my-cluster”需要和已定义好的元素名称保持一致,“mycluster”“mynode”后的值,例如clusterIdpublicIp需要和当前元素中的输出参数相匹配,不可自定义。
    {
        "outputs": {
            "cluster_id": {
                "description": "ID of created cluster",
                "value": {
                    "get_attribute": [
                        "mycluster",
                        "clusterId"
                    ]
                }
            },
            "public_ip": {
                "description": "EIP of created node",
                "value": {
                    "get_attribute": [
                        "mynode",
                        "publicIp"
                    ]
                }
            }
        }
    }

    各属性解释如下:

    • cluster_id:用get_attribute函数,表示从my-cluster元素中自动获取集群ID。
    • public_ip:用get_attribute函数,表示从my-node元素中自动获取节点的弹性IP。

  7. 单击,校验模板是否正确。在界面左侧“操作日志”窗口中若出现“校验模板成功”,表示模板正确。
  8. 单击,选择“我的模板”,输入模板名称和版本,单击“保存”

    图3 选择模板
    • 模板名称:自定义模板名称,需确保全局唯一,例如设置为mycluster。
    • 版本:1.0,保持默认。

创建容器集群堆栈

  1. 单击设计器页面右上侧的,进入AOS控制台首页。
  2. 在左侧导航栏中,选择“我的模板”。在模板列表中可查看到保存成功的模板mycluster。
  3. 单击mycluster模板后的“部署堆栈”
  4. 设置堆栈信息。

    • 堆栈名称:输入堆栈名称,例如mycluster
    • 描述:可不填写。
    • 配置输入参数,如表1,其它参数可保持默认。
      表1 配置输入参数

      参数名称

      说明

      参数值

      clusterName

      集群名称

      需全局唯一,例如设置为aos-cluster。

      nodeName

      节点名称

      需全局唯一,例如设置为aos-cce-node。

      sshKey

      登录节点的密钥对

      选择已创建好的密钥对。

      subnet-name

      子网名称

      需全局唯一,例如设置为mysubnet-test。

      vpc-name

      虚拟私有云名称

      需全局唯一,例如设置为myvpc-test。

  5. 单击“下一步”,查看堆栈信息,确认无误后,单击“创建堆栈”

    系统自动跳转到堆栈详情页面,可查看到当前堆栈为创建中。此处创建了虚拟私有云VPC、子网Subnet以及容器集群Cluster和节点Node。预计需要10分钟左右创建成功。

  6. 待堆栈状态为“正常”时,可查看到堆栈元素中已有四个云服务。虚拟私有云VPC、子网Subnet以及容器集群Cluster和节点Node已创建成功。
  7. 登录CCE控制台,可查看到已创建成功的集群和节点。

    1. 单击左侧导航的“资源管理 > 集群管理”,可查看到已创建成功的集群。
      图4 容器集群已创建成功
    2. 单击左侧导航的“资源管理 > 节点管理”,可查看到已经创建成功的节点。
      图5 节点已创建成功

清除资源

为了避免您为不需要的服务付费,建议您删除不必要的堆栈,清理资源。

  1. 登录AOS控制台。
  2. 在左侧导航栏中,单击“我的堆栈”。
  3. 在堆栈列表中,勾选mycluster堆栈,单击“删除堆栈”

    根据界面提示删除堆栈。

分享:

    相关文档

    相关产品

文档是否有解决您的问题?

提交成功!

非常感谢您的反馈,我们会继续努力做到更好!

反馈提交失败,请稍后再试!

*必选

请至少选择或填写一项反馈信息

字符长度不能超过200

提交反馈 取消

如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨

跳转到云社区