基于阿里云 K8S 的 DolphinDB 套件部署教程
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 套件部署教程相关推荐
- 基于阿里云轻量应用服务器快速部署博客
简介 教程介绍如何在轻量应用服务器上,以WordPress为镜像的网站搭建及管理. 背景知识 轻量应用服务器 轻量应用服务器是面向单机应用场景的新一代计算服务,提供应用一键部署.一站式域名解析.网站发 ...
- 基于阿里云容器镜像服务加速K8S镜像下载(二)
简单说明 在<基于阿里云容器镜像服务加速K8S镜像下载>中介绍了使用阿里云镜像服务来解决一些不可达镜像的下载 但是需要反复在阿里云容器镜像控制台添加仓库,这种操作实在太傻,是电脑这头蠢驴该 ...
- 记一次阿里云k8s部署-测试存储
记一次阿里云k8s部署 阿里云资源准备 服务器 ip 角色 资源 192.168.1.160 master1 2核4G 192.168.1.161 master2 2核4G 192.168.1.162 ...
- 阿里云k8s一键部署有状态StatefulSet nacos2.0.3
阿里云k8s一键部署有状态StatefulSet nacos2.0.3 项目目录 centos 配置连接集群 kubectl 客户端执行k8s脚本 kubectl 执行结果,一键生成StatefulS ...
- 基于阿里云服务器环境搭建到项目上线系列文章之六——项目部署
基于阿里云服务器环境搭建到项目上线系列 前言:最近购买了域名和一台阿里云服务器准备做点东西放上去,所以准备把环境搭建到项目上线的过程记录下来,计划一个系列6篇文章 基于阿里云服务器环境搭建到项目上线系 ...
- 一小时快速搭建基于阿里云容器服务-Kubernetes的Web应用
本文面向的读者 如果您是一个Kubernetes的初学者,本文可以帮助你快速在云上搭建一个可实际使用的集群环境,并发布自己的第一个应用.你无须提前准备任何的硬件资源或者下载任何的软件包. 如果您已经 ...
- stio简介及基于阿里云ACK安装Istio
Istio就是Service Mesh的落地实现. 1. Istio的功能 负载均衡,服务发现 故障恢复,指标收集和监控 A/B测试,灰度发布 限流,访问控制和端到端认证 2. Istio的架构 ...
- 朱晔和你聊Spring系列S1E11:小测Spring Cloud Kubernetes @ 阿里云K8S
有关Spring Cloud Kubernetes(以下简称SCK)详见https://github.com/spring-cloud/spring-cloud-kubernetes,在本文中我们主要 ...
- 基于阿里云函数计算实现需要用到超大依赖包的 Python 无服务器计算
文章目录 引言 一.阿里云函数计算是什么? 开发流程 函数计算的触发调用 函数计算运行实例的生命周期 二.示例应用的架构及简介 三.具体开发部署步骤所遇到的坑和~~避坑指南~~ 坑1. 超大依赖包的部 ...
最新文章
- Java基于自定义注解的面向切面的实现
- php 易语言md5加密解密,详解易语言调用js实现md5加密方法
- 栈溢出笔记1.2 覆盖EIP
- ★身体给你9次防癌的机会,别再“喂养”癌细胞了!
- android自定义view案例,Android自定义View,你摸的透透的了?
- 一位全减器逻辑电路图_一位全减器电路实现方法探讨
- 通用线性模型(GLMs,Generalized Linear Models)
- SVG 绘制可交互的中国地图
- Android深入源码分析理解Aidl整体调用流程(雷惊风)
- 前端知识大全 - 收藏集 - 掘金
- maven仓库类型说明 hosted/proxy/group
- ncbi blast MATLAB,NCBI-BLAST在线使用教程详细攻略(图解)
- php管理员密码,PHPWIND得到管理员密码的方法.
- TDD_UT测试总结
- win七系统如何卸载MySQL_Win7完全卸载sql2005和删除sql2005的方法
- SWAT模型 | 运行Arcswat报错问题及解决办法 | forrt1:error(65): floating invalid解决方法
- 美颜滤镜sdk常用的图形处理算法、代码分析
- 【Iceberg+Alluxio】助力加速数据通道(上篇)
- Python监督学习(一)
- 百度钱包的一分钱专享活动