尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

InfluxDB离线内网环境完整部署适配方案

InfluxDB离线内网环境完整部署适配方案 InfluxDB离线内网环境完整部署适配方案技术栈Kubernetes v1.32.13 Rocky Linux 8.6 InfluxDB 2.7.x Containerd 1.7.x操作环境 / 对接原理 / 详细步骤 / 完整命令 / 配置文件 / 验证流程 / 排错方案InfluxDB离线内网环境完整部署适配方案操作环境K8s 集群 3 节点k8s-master(192.168.1.10), k8s-node1(192.168.1.11), k8s-node2(192.168.1.12)InfluxDB 部署于 K8s 集群中InfluxDB 版本 2.7.x容器镜像 influxdb:2.7使用 Containerd 作为容器运行时持久化存储已配置 StorageClassInfluxDB 数据目录 /var/lib/influxdb2 通过 PVC 挂载预留足够存储空间节点配置满足业务需求已配置资源 requests/limits使用 ConfigMap 挂载配置文件Secret 加密存储密码已安装 Helm v3.x 或使用原生 YAML 清单部署K8s 版本 v1.32.13对接原理InfluxDB 容器化部署是将 InfluxDB 以 Pod 形式运行在 K8s 集群中通过 PVCPersistentVolumeClaim实现数据持久化确保 Pod 重建或迁移后数据不丢失。InfluxDB 容器通过 ConfigMap 挂载配置文件实现配置与镜像分离通过 Secret 加密存储账号密码。Service 提供稳定的访问入口ClusterIP 或 NodePort业务 Pod 通过 Service 域名访问 InfluxDB。Deployment 管理 InfluxDB Pod 生命周期配合节点亲和性nodeAffinity将 InfluxDB 固定在特定节点避免 Pod 漂移导致性能波动。探针livenessProbe/readinessProbe确保服务健康状态自动检测和恢复。详细步骤1. 创建命名空间和持久化存储PVC# 创建命名空间kubectl create namespace middleware# 查看可用 StorageClasskubectl get storageclass# 创建 PVCcat /tmp/influxdb-pvc.yaml EOFapiVersion: v1kind: PersistentVolumeClaimmetadata:name: influxdb-data-pvcnamespace: middlewarespec:accessModes:- ReadWriteOnceresources:requests:storage: 50GistorageClassName: local-storageEOFkubectl apply -f /tmp/influxdb-pvc.yamlkubectl get pvc -n middleware2. 创建 ConfigMap 挂载 InfluxDB 配置文件# 创建 ConfigMapcat /tmp/influxdb-configmap.yaml EOFapiVersion: v1kind: ConfigMapmetadata:name: influxdb-confignamespace: middlewaredata:config.yml: |# InfluxDB 配置文件# 根据业务需求调整参数EOFkubectl apply -f /tmp/influxdb-configmap.yamlkubectl get configmap -n middleware3. 创建 Secret 加密存储密码# 创建 Secretecho -n Root123456 /tmp/passwordkubectl create secret generic influxdb-secret --namespacemiddleware --from-filepassword/tmp/passwordrm -f /tmp/passwordkubectl get secret -n middleware4. 创建 Service 提供访问入口# 创建 Servicecat /tmp/influxdb-service.yaml EOFapiVersion: v1kind: Servicemetadata:name: influxdb-servicenamespace: middlewarelabels:app: influxdbspec:type: ClusterIPports:- port: 8086targetPort: 8086protocol: TCPname: influxdbselector:app: influxdbEOFkubectl apply -f /tmp/influxdb-service.yamlkubectl get svc -n middleware5. 创建 Deployment 部署 InfluxDB# 创建 Deploymentcat /tmp/influxdb-deploy.yaml EOFapiVersion: apps/v1kind: Deploymentmetadata:name: influxdbnamespace: middlewarelabels:app: influxdbspec:replicas: 1selector:matchLabels:app: influxdbstrategy:type: Recreatetemplate:metadata:labels:app: influxdbspec:containers:- name: influxdbimage: influxdb:2.7imagePullPolicy: IfNotPresentports:- containerPort: 8086env:- name: PASSWORDvalueFrom:secretKeyRef:name: influxdb-secretkey: passwordresources:requests:cpu: 1memory: 2Gilimits:cpu: 4memory: 8GivolumeMounts:- name: datamountPath: /var/lib/influxdb2- name: configmountPath: /etc/influxdb2/config.ymlsubPath: config.ymllivenessProbe:tcpSocket:port: 8086initialDelaySeconds: 60periodSeconds: 10readinessProbe:tcpSocket:port: 8086initialDelaySeconds: 30periodSeconds: 5volumes:- name: datapersistentVolumeClaim:claimName: influxdb-data-pvc- name: configconfigMap:name: influxdb-configEOFkubectl apply -f /tmp/influxdb-deploy.yamlkubectl get pods -n middleware -w6. 验证连接和初始化# 查看 Pod 状态kubectl get pods -n middleware -l appinfluxdb# 查看日志kubectl logs -f $(kubectl get pods -n middleware -l appinfluxdb -o jsonpath{.items[0].metadata.name}) -n middleware# 集群内通过 Service 访问测试kubectl run influxdb-client --imageinfluxdb:2.7 -n middleware --rm -it --restartNever -- sh -c echo 连接测试成功# 验证持久化kubectl get pvc influxdb-data-pvc -n middleware验证流程# 1. Pod 运行状态kubectl get pods -n middleware -l appinfluxdb# 预期STATUSRunning, READY1/1# 2. PVC 绑定状态kubectl get pvc influxdb-data-pvc -n middleware# 预期STATUSBound# 3. Service 访问入口kubectl get svc influxdb-service -n middleware# 预期TYPEClusterIP, PORT(S)8086/TCP# 4. ConfigMap 和 Secretkubectl get configmap,secret -n middleware | grep influxdb# 预期均存在# 5. 连通性测试kubectl exec -it $(kubectl get pods -n middleware -l appinfluxdb -o jsonpath{.items[0].metadata.name}) -n middleware -- sh -c echo test# 预期命令执行成功# 6. 持久化验证删除 Pod 后数据保留kubectl delete pod $(kubectl get pods -n middleware -l appinfluxdb -o jsonpath{.items[0].metadata.name}) -n middlewaresleep 30kubectl get pods -n middleware -l appinfluxdb# 预期Pod 重建后 Running数据未丢失排错方案写入超时检查并发写入数、batch 大小、磁盘 IO、网络带宽查询慢检查时间范围、数据量、索引设计、Flux 查询优化磁盘爆满检查保留策略RP、分片持续时间、数据过期清理内存占用高检查 TSI 索引、缓存配置、并发查询数数据上报断连检查网络连通性、Token 权限、Org/Bucket 配置时序错乱检查客户端时间同步、时间戳精度、时区配置OOM检查内存限制、查询并发、数据保留策略、缓存大小备份恢复失败检查备份文件完整性、版本兼容性、磁盘空间
返回列表