K8S容器平台离线安装
安装前环境检查
在开始正式安装之前,务必根据您要部署的基础环境查看 环境准备
当安装环境无法访问公网时,安装流程需要在安装前增加 2 个步骤:
1.拷贝离线安装包到安装环境,并解压得到安装目录。
2.向可访问的镜像仓库导入安装包内的离线镜像包。
安装时调整以下 2 个步骤:
1.下载配置文件步骤可直接从本文档中复制内容在本地创建文件。
2.最终使用安装目录内的本地 chart 文件执行 helm 安装。
其他步骤与正常安装相同,文档仅重点介绍导入镜像和从本地 chart 安装步骤。
标记节点角色
1.为所有可用节点打上qfusion/node=标签标记,用于部署产品和调度数据库实例。
kubectl label node [Nodes] qfusion/node=
2.为运行 QFusion 平台管控面组件的节点打上 qfusion/master=true 标签,标记多个节点时将采取高可用部署策略:
kubectl label node [Nodes] qfusion/master=true
创建集群命名空间
登录任意master所在的节点,手动创建平台命名空间,用于部署产品组件,以下步骤假设使用qfusion命名空间:
kubectl create ns qfusion
从3.12.3版本开始,qfusion产品引入Istio实现服务网格,使用前需为qfusion命名空间打上特定标签,否则无法从集群外部访问:
kubectl label ns qfusion qf-istio-discovery=enabled qf-useistio=enabled --overwrite
将安装包拷贝至部署节点,解压进入安装目录
将离线安装包拷贝到作为部署节点的服务器上任意目录,解压安装包,得到docker目录
tar xvf qfusion_release-3.12.7-rds-xxxxx.tar
进入安装目录
cd qfusion_release-3.12.7-rds-xxxxx
配置安装文件
1.生成配置文件:复制如下内容,写入一个空文件,并命名为ext-profile.yaml,保存
# 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” 2.基于ext-profile.yaml创建 configmap:
kubectl create cm install-ext-profiles -n qfusion --from-file=external.profile=ext-profile.yaml -o yaml --dry-run=client | kubectl apply -f -
导入本地镜像
-
该步骤要求客户环境已部署有可访问的镜像仓库服务(也可使用安装包内自带资源临时部署)。
-
如示例中提供镜像服务的源地址为registry.mirror.com,镜像仓库名为qfusion。镜像服务源地址根据实际情况提供即可,镜像仓库名请固定设置为qfusion。 1.将 installer/roles/kube-install/files/bin/skopeo 二进制文件复制到系统可执行路径中,并赋予可执行权限:
cp installer/roles/kube-install/files/bin/skopeo /usr/bin/skopeo
chmod 755 /usr/bin/skopeo
2.用安装包附带的bin/tarsalt程序对离线镜像资源包registry/images.rds进行解密,得到镜像压缩包images.tar(若压缩包已存在则跳过此步骤):
bin/tarsalt -src-file=registry/images.irds
3.解压安装包registry目录中的images.tar镜像压缩包,得到docker目录
cd registry
tar xvf images.tar
4.将安装包内的镜像资源同步到镜像仓库。执行安装包installer目录中的sync_images.sh脚本,将镜像所在目录和镜像仓库地址作为参数传入:
../installer/sync-images.sh $(pwd)/docker registry.mirror.com/qfusion
-
registry.mirror.com,本地镜像仓库地址(即本地镜像源),根据实际情况调整
-
qfusion:镜像仓库(仓库名称),默认为qfusion 5.* 需要注意的是:当前版本仓库中默认只有mysql5.7的镜像,其它类型数据库镜像,可在部署完成后通过管理平台执行导入。 具体操作:admin用户登录管理平台,左侧菜单——平台管理——数据库镜像——导入镜像。 在联网状态下,开源类数据库可通过推荐url直接导入;对于商业数据库,管理平台页面也提供了镜像制作方法的参考。
从本地 chart 文件安装
切换到安装包 installer 目录执行以下命令:
helm install qfusion qfusion-installer -n qfusion --set global.registry=<registry.mirror.com> --set global.repository=<qfusion> --set global.registryUserName=<userName> --set global.registryPassword=<password> --set nodeLabel=false
- 添加的
global.registry
和global.repository
选项为安装时使用的镜像源和镜像仓库,需要替换为上文导入镜像步骤中使用的镜像源地址和镜像仓库名。 - 添加的
global.registryUserName
和global.registryPassword
选项为远程镜像仓库的用户名与密码 - 离线安装的版本由qfusion-installer/Chart.yaml文件内容所决定。
注意:
1、需要在所有node节点登录远程镜像仓库
$ docker login -u <username> -p <password> registry.cn-hangzhou.aliyuncs.com
2、如果遇到已经登录docker仓库,k8s仍提示
repository does not exist or may require' docker login: denied: requested access to the resource is denied
,执行如下命令:$ cp /root/.docker/config.json /var/lib/kubelet/ $ systemctl restart kubelet.service
安装结果检查
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状态。
安装成功之后即可正常登陆平台,具体操作可参考 申请授权 进行功能使用。
2.如果10分钟以上仍有非Running/非Completed的状态,请联系 在线客服 进行处理。
常见异常状态参考:
Pending(调度失败,资源不足,或者节点存在Pod不能容忍的污点)
Terminating(磁盘空间不足,Dockerd与containerd状态不同步)
CrashLoopBackOff(Pod反复拉起后退出登陆,一般是系统配置问题,比如内存资源不足,系统OOM,cgroup OOM)
OOMKilled(节点内存不足或启动内存有限制)
Evicted(磁盘空间不足)