这是本节的多页打印视图。 点击此处打印.

返回本页常规视图.

安装

1 - 使用 kubectl apply

安装

Clusterpedia 的安装分为两个部分:

用户如果使用已有的存储组件(MySQL 或者 PostgreSQL),则直接跳过安装存储组件。

拉取项目:

git clone https://github.com/clusterpedia-io/clusterpedia.git
cd clusterpedia
git checkout v0.7.0

安装存储组件

Clusterpedia 安装时提供了 MySQL 8.0PostgreSQL 12 两种存储组件以供选择。

用户如果使用已有的存储组件(MySQL 或者 PostgreSQL),则直接跳过存储组件安装。

进入所选存储组件的安装目录

cd ./deploy/internalstorage/postgres

进入所选存储组件的安装目录

cd ./deploy/internalstorage/mysql

存储组件使用 Local PV 的方式存储数据,部署时需要指定 Local PV 所在节点

用户可以选择自己提供 PV

export STORAGE_NODE_NAME=<节点名称>
sed "s|__NODE_NAME__|$STORAGE_NODE_NAME|g" `grep __NODE_NAME__ -rl ./templates` > clusterpedia_internalstorage_pv.yaml

部署存储组件

kubectl apply -f .

# 跳回 Clusterpedia 项目根目录
cd ../../../

安装 Clusterpedia

存储组件部署完成后,便可安装 Clusterpedia。

如果选择使用已存在的存储组件,则需要参考 配置存储层 来将存储组件对接到默认存储层中。

在 clusterpedia 项目根目录下进行操作。

# 部署 Clusterpedia CRD 与组件
kubectl apply -f ./deploy

安装完成

检查组件 Pods 运行是否正常。

kubectl -n clusterpedia-system get pods

部署集群自动接入策略 —— ClusterImportPolicy

0.4.0 后,Clusterpedia 提供了更加友好的接入多云平台的方式。

用户通过创建 ClusterImportPolicy 来自动发现多云平台中纳管的集群,并将这些集群自动同步为 PediaCluster,用户不需要根据纳管的集群来手动去维护 PediaCluster 了。

我们在 Clusterpedia 仓库 中维护了各个多云平台的 ClusterImportPolicy大家也提交用于对接其他多云平台的 ClusterImportPolicy

用户在安装 Clusterpedia 后,创建合适的 ClusterImportPolicy 即可,用户也可以根据自己的需求来创建新的 ClusterImportPolicy

具体可以参考 接入多云平台

kubectl get clusterimportpolicy

卸载

删除 ClusterImportPolicy

如果用户部署了 ClusterImportPolicy 那么需要先清理 ClusterImportPolicy 资源

kubectl get clusterimportpolicy

清理 PediaCluster

在卸载 Clusterpedia 前,需要查看环境中是否还存在 PediaCluster 资源,如果存在那么需要删除这些资源。

kubectl get pediacluster

卸载 Clusterpedia

PediaCluster 资源清理完成后,卸载 Clusterpedia 相关组件。

# delete compontents
kubectl delete -f ./deploy/clusterpedia_apiserver_apiservice.yaml
kubectl delete -f ./deploy/clusterpedia_apiserver_deployment.yaml
kubectl delete -f ./deploy/clusterpedia_clustersynchro_manager_deployment.yaml
kubectl delete -f ./deploy/clusterpedia_controller_manager_deployment.yaml
kubectl delete -f ./deploy/clusterpedia_apiserver_rbac.yaml

# delete crds
kubectl delete -f ./deploy/cluster.clusterpedia.io_clustersyncresources.yaml
kubectl delete -f ./deploy/cluster.clusterpedia.io_pediaclusers.yaml
kubectl delete -f ./deploy/policy.clusterpedia.io_clusterimportpolicies.yaml
kubectl delete -f ./deploy/policy.clusterpedia.io_pediaclusterlifecycles.yaml

卸载存储组件

根据选择的存储组件类型,来移除相关的资源。

kubectl delete -f ./deploy/internalstorage/<storage type>

清理 Local PV 以及数据

存储组件卸载后,PV 和相应的数据会依然遗留在节点中,我们需要手动清理。

通过 Local PV 资源详情,来查看挂载的节点。

kubectl get pv clusterpedia-internalstorage-<storage type>

得知数据保存的节点后,删除 Local PV。

kubectl delete pv clusterpedia-internalstorage-<storage type>

登录数据所在节点,清理数据。

# 遗留数据所在节点
rm -rf /var/local/clusterpedia/internalstorage/<storage type>

2 - 使用 Helm

3 - 配置

3.1 - 配置存储层

Clusterpedia 的默认存储层支持 MySQLPostgreSQL 两种存储组件。

用户在安装 Clusterpedia 时,可以使用已存在的存储组件, 不过需要创建相应的默认存储层配置(ConfigMap)存储组件密码 Secret

默认存储层配置

用户需要在 clusterpedia-system 命名空间下创建 clusterpedia-internalstorage ConfigMap。

# internalstorage configmap example
apiVersion: v1
kind: ConfigMap
metadata:
  name: clusterpedia-internalstorage
  namespace: clusterpedia-system
data:
  internalstorage-config.yaml: |
    type: "mysql"
    host: "clusterpedia-internalstorage-mysql"
    port: 3306
    user: root
    database: "clusterpedia"
    connPool:
      maxIdleConns: 10
      maxOpenConns: 100
      connMaxLifetime: 1h
    log:
      slowThreshold: "100ms"
      logger:
        filename: /var/log/clusterpedia/internalstorage.log
        maxbackups: 3    

internalstorage config 支持以下基本字段:

field description
type 存储组件的类型,支持 “postgres” 和 “mysql”
host 存储组件地址,可以使用 IP 或者 Service Name
port 存储组件端口
user 存储组件用户
password 存储组件密码
database Clusterpedia 所使用的 database

存储组件的访问密码,最好存放在 Secret,参考 配置存储组件密码 Secret

数据库连接池配置

field description
connPool.maxIdleConns 空闲连接池中的最大数量,默认为 10
connPool.maxOpenConns 打开的数据库连接的最大数量,默认为 100
connPool.connMaxLifetime 连接可以复用的最大时间,默认为 1h

根据用户的当前环境,合理设置数据库连接池

日志配置

支持配置存储层日志,通过 log 字段来开启日志打印慢 SQL 和错误

field description
log.stdout 打印日志到标准输出
log.colorful 是否开启彩色打印
log.slowThreshold 设置慢 SQL 阀值,例如 “100ms”
log.level 设置日志级别,支持 Slient, Error, Warn, Info
log.logger 日志轮滚配置

开启日志打印后,如果 log.stdout 不为 true,则将日志输出到 /var/log/clusterpedia/internalstorage.log 文件中

日志轮滚配置

将存储层的日志保存到文件中,并且可以配置日志文件的轮滚

field description
log.logger.filename 日志文件路径, 默认为 /var/log/clusterpedia/internalstorage.log
log.logger.maxsize 触发日志轮滚的最大文件大小,单位为 MB
log.logger.maxage 轮滚的旧日志的最大存活时间
log.logger.maxbackups 轮滚的旧日志的最大数量
log.logger.localtime 是否为本地时间,默认为 UTC
log.logger.compress 是否将轮滚的日志文件进行压缩,默认不进行压缩

关闭日志打印

在 internalstorage config 不填写 log 字段,便会忽略日志打印,例如:

type: "mysql"
host: "clusterpedia-internalstorage-mysql"
port: 3306
user: root
database: "clusterpedia"

更多配置

默认存储层还提供了有关 MySQL 和 PostgreSQL 的更多配置,可以参考 internalstorage/config.go

配置存储组件密码 Secret

Clusterpedia 的安装 yaml 会从 internalstorage-password 的 Secret 中获取密码。

将存储组件的密码配置到 Secret 中

kubectl -n clusterpedia-system create secret generic \
    internalstorage-password --from-literal=password=<存储组件访问密码>