如何在Kubernetes上部署星云图


什么是库本内特

Kubernetes(通常风格化为k8s)是一个开源容器编排系统,旨在为跨主机集群的应用程序容器的自动化部署、扩展和操作提供一个简单而高效的平台。

Kubernetes在体系结构上有一系列组件,支持一种可以提供应用程序部署、维护和扩展的机制。

这些组件被设计成松散耦合和可扩展的,因此它们可以满足各种工作负载。

系统的可伸缩性很大程度上是由库本内特应用编程接口提供的,该接口主要用作可伸缩的内部组件和运行在库本内特上的容器。

Kubernetes主要由以下核心组件组成:

  • etcd用作所有集群数据的Kubernetes后备存储
  • apiserver为资源操作提供唯一的条目,并提供身份验证、授权、访问控制、应用编程接口注册和发现机制
  • controller manager负责维护集群的状态,如故障检测、自动扩展、滚动更新等。
  • scheduler负责调度资源,并根据预定的调度策略将Pods调度到相应的机器
  • kubelet负责维护容器的生命周期,还负责卷和网络的管理
  • Container runtime负责映像管理以及Pod和容器(CRI)的运行时
  • kube-proxy负责在集群内为kubernetes服务提供服务发现和负载平衡

除了核心组件,还有一些推荐的附加组件:

  • kube-dns负责为整个集群提供域名服务
  • Ingress Controller为服务提供外部网络访问
  • Heapster提供资源监控
  • Dashboard提供图形用户界面
  • Federation提供跨可用性区域的集群管理
  • Fluentd-elasticsearch提供集群日志收集、存储和查询

库本内特和数据库

数据库容器化是最近的热门话题,库本内特斯能给数据库带来什么好处?

  • 故障恢复:当数据库应用程序出现故障时,Kubernetes会重新启动数据库应用程序,或者将数据库迁移到集群中的其他健康节点
  • 存储管理:Kubernetes提供了各种存储管理解决方案,因此数据库可以透明地采用不同的存储系统
  • 负载平衡:Kubernetes服务通过将外部网络流量平均分配给不同的数据库复制来提供负载平衡
  • 水平可伸缩性:Kubernetes可以根据当前数据库集群的资源利用率来扩展副本,从而提高资源利用率

目前许多数据库,如MySQL、MongoDB和TiDB,在Kubernetes上都运行良好。

库本内特星云图

星云图形是一个分布式的开源图形数据库,由图形(查询引擎)、存储(数据存储)和元数据(元数据)组成。库本内斯给星云图带来了以下好处:

  • Kubernetes在graphd、metad和storaged的不同副本之间调整工作负载。这三个人可以通过Kubernetes提供的dns服务发现彼此。
  • Kubernetes通过storageclass、pvc和pv封装底层存储的细节,不管是什么类型的存储系统,如云磁盘还是本地磁盘。
  • 库本内特斯可以在几秒钟内部署星云图集群,并自动升级集群而无需感知。
  • 库本内斯支持自我疗愈。Kubernetes可以在没有操作工程师的情况下重启崩溃的单个副本。
  • Kubernetes根据星团效用水平缩放星团,以提高星云的性能。

在接下来的部分中,我们将向您展示使用库本内特展开星云图的细节。

部署

软件和硬件要求

以下是本文部署中涉及的软件和硬件要求:

  • 操作系统为CentOS-7.6.1810 x86_64。
  • 虚拟机配置:
    • 4个中央处理器
    • 8G内存
    • 50G系统磁盘
    • 50G数据磁盘
    • 50G数据磁盘B
  • Kubernetes集群是版本1.16。
  • 使用本地光伏作为数据存储。

集群拓扑

以下是群集拓扑:

服务器IP 星云服务 作用
192.168.0.1

k8s-master
192.168.0.2
graphd,metad-0,storaged-0
k8s-从机
192.168.0.3
graphd,metad-1,storaged-1
k8s-从机
192.168.0.4
graphd,metad-2,storaged-2
k8s-从机

要部署的组件

  • 安装头盔
  • 准备本地磁盘并安装本地卷插件
  • 安装星云图形集群
  • 安装入口控制器

安装头盔

赫尔姆是Kubernetes的包管理器,类似于百胜在CentOS上的包管理器,或者说是百胜在Ubuntu上的包管理器。赫尔姆通过库本内特使部署集群变得更加容易。由于本文没有给出赫尔姆的详细介绍,请阅读Helm Getting Started Guide了解更多关于赫尔姆的信息。

下载并安装头盔

在您的终端中使用以下命令安装Helm: