K8S容器平台在线安装

2022-03-07
2 min read

安装前环境检查

在开始正式安装之前,务必根据您要部署的基础环境查看 环境准备

软件检查

软件检查 兼容要求 补充说明
Kubernetes 1.18~1.20 可部署通过官方兼容性认证的k8s发行版,如Rancher、Kubesphere、CCE等 (kubectl version查询版本)
Docker-ce 18.09以上 docker -v查询版本
Containerd 1.0以上 containerd -v查看版本

标记节点角色

1.为所有可用节点打上 qfusion/node= 标签标记,用于部署产品和调度数据库实例。

kubectl label node [Nodes] qfusion/node=

2.为运行 QFusion 平台管控面组件的节点打上 qfusion/master=true 标签,标记多个节点时将采取高可用部署策略。

kubectl label node [Nodes] qfusion/master=true

去污点

需要在任意一台master机器上执行去污点的命令

kubectl taint nodes --all node-role.kubernetes.io/master-

创建集群命名空间

1.登录任意master节点,手动为管控面组件创建命名空间“qfusion”,用于部署产品组件。

kubectl create ns qfusion
  • 命名空间名称必须是qfusion,请勿更改。

2.数据库实例将运行在单独的命名空间,由管控面组件自动创建,通常为 qfusion-admin。

3.从 3.12.3 版本开始,qfusion 产品引入 Istio 实现服务网格,使用前需为 qfusion 命名空间打上特定标签,否则无法从集群外部访问:

kubectl label ns qfusion qf-istio-discovery=enabled qf-useistio=enabled --overwrite

移除或调整资源限制

1.QFusion 的 elasticsearch, prometheus 等监控组件以及数据库实例均需要较高的资源规格。如果集群中有配置默认的 LimitRange 资源,可能会导致数据库集群创建失败、管理组件 Pending 或频繁 OOM 重启等问题。一般情况下建议移除(或放宽)LimitRange。

kubectl delete limitrange --all -n qfusion
kubectl delete limitrange --all -n qfusion-admin

2.如果集群qfusion-admin命名空间中配置了较小的ResourceQuota限额,可能会导致使用一段时间后无法创建新的数据库集群。如无特殊需求建议移除或扩大该命名空间下的限额。

kubectl delete resourcequota --all -n qfusion-admin

配置安装文件

1.基于示例配置文件创建 ConfigMap

kubectl -n qfusion apply -f https://image.irds.cn/latest/profiles/configmap.yaml

2.根据需要,可在安装前对配置进行自定义。如果已创建 configmap,可通过

kubectl -n qfusion edit cm install-ext-profiles

对配置进行修改:

# Common
common:
  appConfig:
    config:
      ntpServer: PROFILE_NTP
      cpuOverRate: 2
      memoryOverRate: 1
      clusterForcedAntiAffinity: true
      proxyServiceType: "ClusterIP"
      clusterServiceType: "ClusterIP"

# Storage
csi-localpv:
  enabled: true
  localpv:
    # 卷挂载目录
    iops: 1000000
    storageSize: 100000

vip-allocator:
  enabled: true

# Monitor
monitor:
  sync:
    username: root
    enabled: false
    # 172.16.130.26:22:123456,172.16.130.27:22:123456,172.16.130.25:22:123456
    hosts: "10.10.150.11:22:123456,10.10.150.75:22:123456"
  prometheus:
    nodeExporterPort: "9200"

node-exporter:
  listenPort: "9200"
  • 文件内容默认配置可直接使用无需更改。

  • 常见的配置项自定义场景如下:

修改 CPU 超分比,默认为 2,对应配置项为 cpuOverRate: 2。

修改 QFusion 自带的 NodeExporter 监控端口,默认使用 9200 端口,冲突时可修改为其他可用端口,对应配置项为 nodeExporterPort: “9200"和listenPort: “9200”

安装helm chart

1.使用 helm 从远程仓库安装 qfusion-installer chart 到集群中,即可部署 QFusion 产品:

helm install qfusion qfusion-installer --repo https://helm.woqutech.com:8043/qfusion-rds --devel -n qfusion --set nodeLabel=false

可通过 –set 支持以下安装选项:

  • nodeLabel:是否由安装控制器自动标记节点,已手动执行节点标记因此设置为 false。

  • useLimits:是否为监控组件设置内存 limits,可在集群对 limits 有强制要求时设置为 true。默认为 false。

  • ***安装时需添加node selector参数,否则可能调度失败

  • vip-allocator 状态是pending,原因是如图标签导致的调度问题(qfusion的master节点不是k8s集群的master,导致调度失败);解决方法:去掉这个标签就好了。

  • 在线安装需要repo【helm.woqutech.com:8043/qfusion-rds】中已同步所请求的安装包,默认安装已发布的最新版本,可通过 –version 命令行选项指定版本。

  • 注:如果helm install执行报错Helm not found,请参考步骤2,先安装helm。

2.helm3安装方法,如下方式任选一种即可:

(1)在线安装

curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash

(2)下载二进制包离线安装:

使用二进制包安装步骤:

  • 下载 需要的版本(helm官网链接:https://helm.sh/zh/docs/intro/install/)

  • 解压(tar -zxvf helm-v3.0.0-linux-amd64.tar.gz)

  • 在解压目中找到helm程序,移动到需要的目录中(mv linux-amd64/helm /usr/local/bin/helm)然后就可以执行客户端程序并添加稳定的仓库.

安装结果检查

1.执行

[root@10-10-150-157 installer]# kubectl get pod -n qfusion
NAME                                 READY   STATUS    RESTARTS   AGE
qfusion-installer-7686fd6cf9-q6xnz   0/1     Pending   0          17m

查看QFusion的pod状态是否就绪,若安装正常,大约5min左右所有pod状态即可为Running或Completed状态。 avatar

安装成功之后即可正常登陆平台,具体操作可参考 申请授权 进行功能使用。

2.如果10分钟以上仍有非Running/非Completed的状态,请联系 在线客服 进行处理。

常见异常状态参考:

Pending(调度失败,资源不足,或者节点存在Pod不能容忍的污点)

Terminating(磁盘空间不足,Dockerd与containerd状态不同步)

CrashLoopBackOff(Pod反复拉起后退出登陆,一般是系统配置问题,比如内存资源不足,系统OOM,cgroup OOM)

OOMKilled(节点内存不足或启动内存有限制)

Evicted(磁盘空间不足)