1. 简介

阿里云容器服务 Kubernetes 版(Alibaba Cloud Container Service for Kubernetes,简称 ACK)是全球首批通过 Kubernetes 一致性认证的服务平台,提供高性能的容器应用管理服务,支持企业级 Kubernetes 容器化应用的生命周期管理,让您轻松高效地在云端运行 Kubernetes 容器化应用。DolphinDB 推出 DolphinDB MGR 服务,以帮助用户轻松在 ACK 上部署 DolphinDB 集群。

2. 环境准备

部署前,先准备一台能够连接到阿里云控制台的主机,预置环境如下:

  • 服务器可以连接 http://www.google.com
  • 安装 Helm3 (3.7.0以上):用于安装 DolphinDB MGR
  • 安装版本号不小于v1.12的 Kubernetes 命令行工具 kubectl
  • 版本号不小于v3.0.15的 aliyun-cli,并且配置 aliyun-cli
  • Terraform,本文使用的版本号为v1.2.3。

因为阿里云的云命令行中已经预装并配置好了所有工具,所以推荐使用云命令行服务。

要验证 aliyun-cli的配置是否正确,输入如下命令进行验证:

aliyun configure list

期望输出:

Profile   | Credential         | Valid   | Region           | Language
--------- | ------------------ | ------- | ---------------- | --------
default * | AK:***fnY          | Valid   | cn-hangzhou      | zh

3. 资源以及权限

默认配置下,会创建以下资源:

  • 一个新的 VPC
  • 一个托管版的 ACK 集群和一系列 worker 节点:
    • 属于一个伸缩组的2台 ECS 实例(4核8GB)。托管版 Kubernetes 的默认伸缩组中必须至少包含两台实例,用于承载整个系统服务

需要具备以下权限,才能成功部署一个完整的集群:

  • AliyunECSFullAccess
  • AliyunESSFullAccess
  • AliyunVPCFullAccess
  • AliyunSLBFullAccess
  • AliyunCSFullAccess
  • AliyunEIPFullAccess
  • AliyunECIFullAccess
  • AliyunVPNGatewayFullAccess
  • AliyunNATGatewayFullAccess

4. 部署 ACK, DolphinDB MGR 和 DolphinDB 集群

使用如下步骤部署 ACK, DolphinDB MGR 和 DolphinDB 集群。

4.1 设置目标 region 和阿里云密钥(也可以写入 main.tf 文件中)

export region=hangzhou && \
export ACCESS_KEY="LTAI*******" && \
export secret_key="y1xK*******"

4.2 使用 Terraform 安装 DolphinDB

部署的 main.tf 如下:

terraform {required_providers {alicloud={source="aliyun/alicloud"version="1.161.0"}}
}
provider "alicloud" {# 填入您的账号 Access Keyaccess_key = "xxxxxxxxxxx"# 填入您的账号 Secret Keysecret_key = "xxxxxxxxxxx"# 填入想创建的 Regionregion     = "cn-hangzhou"
}
variable "k8s_name_prefix" {description = "The name prefix used to create managed kubernetes cluster."default     = "tf-ack"
}
resource "random_uuid" "this" {}
# 默认资源名称
locals {k8s_name     = substr(join("-", [var.k8s_name_prefix, random_uuid.this.result]), 0, 63)new_vpc_name = "vpc-for-${local.k8s_name}"new_vsw_name = "vsw-for-${local.k8s_name}"log_project_name = "log-for-${local.k8s_name}"
}
# 节点 ECS 实例配置
data "alicloud_instance_types" "default" {cpu_core_count       = 4memory_size          = 8kubernetes_node_role = "Worker"
}
// 满足实例规格的 AZ
data "alicloud_zones" "default" {available_instance_type = data.alicloud_instance_types.default.instance_types[0].id
}
# 专有网络
resource "alicloud_vpc" "default" {vpc_name = local.new_vpc_namecidr_block = "10.1.0.0/21"
}
# 交换机
resource "alicloud_vswitch" "vswitches" {vswitch_name = local.new_vsw_namevpc_id = alicloud_vpc.default.idcidr_block = "10.1.1.0/24"zone_id = data.alicloud_zones.default.zones[0].id
}
# Kubernetes 托管版
resource "alicloud_cs_managed_kubernetes" "default" {# Kubernetes集群名称name                      = local.k8s_name# 新的 Kubernetes 集群将位于的 vswitch。指定一个或多个 vswitch 的 ID。它必须在 availability_zone 指定的区域中。worker_vswitch_ids        = split(",", join(",", alicloud_vswitch.vswitches.*.id))# 是否在创建 Kubernetes 集群时创建新的 NAT 网关。默认为 true。new_nat_gateway           = true# 节点的 ECS 实例类型。worker_instance_types     = [data.alicloud_instance_types.default.instance_types[0].id]# Kubernetes 群集的总工作节点数。默认值为 3。最大限制为 50。worker_number             = 2# ssh 登录群集节点的密码。password                  = "Yourpassword1234"# pod 网络的 CIDR 块。当cluster_network_type设置为 flannel,你必须设定该参数。它不能与 VPC CIDR 相同,并且不能与 VPC 中的 Kubernetes 群集使用的 CIDR 相同,也不能在创建后进行修改。群集中允许的最大主机数量:256。pod_cidr                  = "172.20.0.0/16"# 服务网络的 CIDR 块。它不能与 VPC CIDR 相同,不能与 VPC 中的 Kubernetes 群集使用的 CIDR 相同,也不能在创建后进行修改。service_cidr              = "172.21.0.0/20"# 是否为 Kubernetes 的节点安装云监控。install_cloud_monitor     = true# 是否为 API Server 创建 Internet 负载均衡。默认为 false。slb_internet_enabled      = true# 节点的系统磁盘类别。其有效值为 cloud_ssd 和 cloud_efficiency。默认为 cloud_efficiency。worker_disk_category      = "cloud_efficiency"# 节点的数据磁盘类别。其有效值为 cloud_ssd 和 cloud_efficiency,如果未设置,将不会创建数据磁盘。worker_data_disk_category = "cloud_ssd"# 节点的数据磁盘大小。有效值范围 [20, 32768],以 GB 为单位。w当设置了 worker_data_disk_category 时,默认为 40。worker_data_disk_size     = 200
}

复制上述文件到服务器中,命名为 main.tf,并修改 access_key 以及 secret_key 为个人阿里云账号。

provider "alicloud" {# 填入您的账号 Access Keyaccess_key = "xxxxxxxxxxx"# 填入您的账号 Secret Keysecret_key = "xxxxxxxxxxx"# 填入想创建的 Regionregion     = "cn-hangzhou"
}

也可修改配置 alicloud_instance_types 的 cpu_core_count 和 memory_size(默认值分别是4和8)。

配置完成后,使用 terraform 命令初始化并部署集群:

terraform init

注意:初始化时需要连接外网下载 Terraform 的 aliyun-provider 组件

apply 过程中需要输入 yes 来确认执行:

terraform apply

假如在运行 terraform apply 时出现报错,可根据报错信息(例如缺少权限)进行修复,之后再次运行 terraform apply

整个安装过程大约需要5至10分钟。安装完成后会输出集群的关键信息。若需要重新查看这些信息,可以运行 terraform output

random_uuid.this: Creating...
random_uuid.this: Creation complete after 0s [id=f07dcc00-e8f3-ac96-180e-174f40a5bdc3]
alicloud_vpc.default: Creating...
alicloud_vpc.default: Still creating... [10s elapsed]
alicloud_vpc.default: Creation complete after 11s [id=vpc-bp11lvxzkbyh9em3fntg2]
alicloud_vswitch.vswitches: Creating...
alicloud_vswitch.vswitches: Creation complete after 6s [id=vsw-bp1g40bjmyfz6ck22sbo4]
alicloud_cs_managed_kubernetes.default: Creating...
alicloud_cs_managed_kubernetes.default: Still creating... [10s elapsed]
···
alicloud_cs_managed_kubernetes.default: Creation complete after 8m32s [id=c2a678d17c9b64c0b8d962c55495fce4b]
Apply complete! Resources: 4 added, 0 changed, 0 destroyed.

需要等待以下过程均完成(总耗时约5~20分钟),才会显示结果。

集群创建完成后,在阿里云中的容器服务中,查看创建的所有资源。

4.3 配置 StorageClass

本小节介绍如何为不同的存储类型配置 StorageClass,包括创建 ACK 集群后默认存在的 alicloud -disk-ssd/alicloud-disk-essd 存储类型。

  • alicloud -disk-ssd/alicloud-disk-essd
    通过上述方法创建 ACK 集群后,会自带一个 alicloud -disk-ssd/alicloud-disk-essd 存储类型的 StorageClass。
  • 本地存储
    部署 local volume provisioner,详细请见参阅 k8s_deployment。

4.4 安装部署 DolphinDB MGR 和 DolphinDB 集群

首先介绍如何通过 kubectl 客户端或 CloudShell 快速连接到 ACK 集群,详细见通过kubectl快速使用ACK (aliyun.com)中步骤三。

配置完成后,使用 DolphinDB MGR 部署 DolphinDB 集群的步骤参见 k8s_deployment。

注意:需要部署公网 IP 以及阿里云安全组去访问 DolphinDB-mgr 组件,以此来部署 DolphinDB 集群。

4.5 配置公网以及阿里云安全组

打开专有网络 VPC 页面 -> 弹性公网,创建弹性公网 IP,并且绑到到对应的 ECS 服务器上。详细步骤见 绑定ECS实例 (aliyun.com)。如图所示 ECS 服务器已经绑定到公网121.40.216.37上。

打开 ECS 管理控制台,配置安全组。详细见创建安全组 (aliyun.com)。本节配置结果如下:

至此,完成了在阿里云 ACK 上部署 DolphinDB 部署的所有操作。

注意:
配置弹性公网后,外部访问 DolphinDB MGR 需要用公网 IP 以及 PORT 访问,本例即 121.40.216.37:$PORT

5. 销毁集群

销毁 Dolphindb 集群详见 k8s_deployment。

通过如下命令销毁 ACK 集群:

terraform destroy

假如 Kubernetes 集群没有创建成功,那么在 destroy 时会出现报错,无法进行正常清理。此时需要手动将 Kubernetes 资源从本地状态中移除:

terraform state list
terraform state rm module.ack.alicloud_cs_managed_kubernetes.default

销毁集群操作需要执行较长时间。

注意:
组件挂载的云盘需要在阿里云管理控制台中手动删除。

6. 常见问题

6.1 pv 无法正常动态生成

具体错误信息如下:

0/2 nodes are available: 2 pod has unbound immediate PersistentVolumeClaims. 0/2 nodes are available: 2 pod has unbound immediate PersistentVolumeClaims. 0/2 nodes are available: 2 pod has unbound immediate PersistentVolumeClaims. 0/2 nodes are available: 2 pod has unbound immediate PersistentVolumeClaims. 0/2 nodes are available: 2 pod has unbound immediate PersistentVolumeClaims. 0/2 nodes are available: 2 pod has unbound immediate PersistentVolumeClaims. 0/2 nodes are available: 2 pod has unbound immediate PersistentVolumeClaims. 0/2 nodes are available: 2 pod has unbound immediate PersistentVolumeClaims.

原因和解决方案

  • 阿里云盘有最小磁盘空间限制,最小为20GB。这种情况,设置 PV 的磁盘空间大于20GB,才能动态创建 PV。

6.2 配置任务时,系统提示资源不足

具体错误信息如下:

xxxx resource is insufficient

原因和解决方案

  • 所在的区域确实无资源了。这种情况,请联系售后查看资源情况和备选方案。
  • 新建阿里云服务器的任务跨国际站点,导致没有对应的资源。这种情况,请修改任务配置的站点,如修改为 cn-hangzhou。

基于阿里云 K8S 的 DolphinDB 套件部署教程相关推荐

  1. 基于阿里云轻量应用服务器快速部署博客

    简介 教程介绍如何在轻量应用服务器上,以WordPress为镜像的网站搭建及管理. 背景知识 轻量应用服务器 轻量应用服务器是面向单机应用场景的新一代计算服务,提供应用一键部署.一站式域名解析.网站发 ...

  2. 基于阿里云容器镜像服务加速K8S镜像下载(二)

    简单说明 在<基于阿里云容器镜像服务加速K8S镜像下载>中介绍了使用阿里云镜像服务来解决一些不可达镜像的下载 但是需要反复在阿里云容器镜像控制台添加仓库,这种操作实在太傻,是电脑这头蠢驴该 ...

  3. 记一次阿里云k8s部署-测试存储

    记一次阿里云k8s部署 阿里云资源准备 服务器 ip 角色 资源 192.168.1.160 master1 2核4G 192.168.1.161 master2 2核4G 192.168.1.162 ...

  4. 阿里云k8s一键部署有状态StatefulSet nacos2.0.3

    阿里云k8s一键部署有状态StatefulSet nacos2.0.3 项目目录 centos 配置连接集群 kubectl 客户端执行k8s脚本 kubectl 执行结果,一键生成StatefulS ...

  5. 基于阿里云服务器环境搭建到项目上线系列文章之六——项目部署

    基于阿里云服务器环境搭建到项目上线系列 前言:最近购买了域名和一台阿里云服务器准备做点东西放上去,所以准备把环境搭建到项目上线的过程记录下来,计划一个系列6篇文章 基于阿里云服务器环境搭建到项目上线系 ...

  6. 一小时快速搭建基于阿里云容器服务-Kubernetes的Web应用

    本文面向的读者 如果您是一个Kubernetes的初学者,本文可以帮助你快速在云上搭建一个可实际使用的集群环境,并发布自己的第一个应用.你无须提前准备任何的硬件资源或者下载任何的软件包.  如果您已经 ...

  7. stio简介及基于阿里云ACK安装Istio

    Istio就是Service Mesh的落地实现. ​ 1. Istio的功能 负载均衡,服务发现 故障恢复,指标收集和监控 A/B测试,灰度发布 限流,访问控制和端到端认证 2. Istio的架构 ...

  8. 朱晔和你聊Spring系列S1E11:小测Spring Cloud Kubernetes @ 阿里云K8S

    有关Spring Cloud Kubernetes(以下简称SCK)详见https://github.com/spring-cloud/spring-cloud-kubernetes,在本文中我们主要 ...

  9. 基于阿里云函数计算实现需要用到超大依赖包的 Python 无服务器计算

    文章目录 引言 一.阿里云函数计算是什么? 开发流程 函数计算的触发调用 函数计算运行实例的生命周期 二.示例应用的架构及简介 三.具体开发部署步骤所遇到的坑和~~避坑指南~~ 坑1. 超大依赖包的部 ...

最新文章

  1. Java基于自定义注解的面向切面的实现
  2. php 易语言md5加密解密,详解易语言调用js实现md5加密方法
  3. 栈溢出笔记1.2 覆盖EIP
  4. ★身体给你9次防癌的机会,别再“喂养”癌细胞了!
  5. android自定义view案例,Android自定义View,你摸的透透的了?
  6. 一位全减器逻辑电路图_一位全减器电路实现方法探讨
  7. 通用线性模型(GLMs,Generalized Linear Models)
  8. SVG 绘制可交互的中国地图
  9. Android深入源码分析理解Aidl整体调用流程(雷惊风)
  10. 前端知识大全 - 收藏集 - 掘金
  11. maven仓库类型说明 hosted/proxy/group
  12. ncbi blast MATLAB,NCBI-BLAST在线使用教程详细攻略(图解)
  13. php管理员密码,PHPWIND得到管理员密码的方法.
  14. TDD_UT测试总结
  15. win七系统如何卸载MySQL_Win7完全卸载sql2005和删除sql2005的方法
  16. SWAT模型 | 运行Arcswat报错问题及解决办法 | forrt1:error(65): floating invalid解决方法
  17. 美颜滤镜sdk常用的图形处理算法、代码分析
  18. 【Iceberg+Alluxio】助力加速数据通道(上篇)
  19. Python监督学习(一)
  20. 百度钱包的一分钱专享活动

热门文章

  1. 洛谷_2495 [SDOI2011]消耗战(虚树)
  2. My Life(1)
  3. 编码的奥秘:高级语言和低级语言
  4. python字典转换为列表_Python中将字典转换为列表的方法
  5. 嵌入式输入系统应用编程
  6. 原来我对 MySQL 一无所知
  7. Mycat(3):mycat的安装
  8. 车牌识别实践(python+OpenCV+CNN)
  9. 国内外各大网络安全论坛、网站(正在补全)
  10. 教学计划编制源代码c语言,《数据结构C语言》教学计划编制问题.doc