K8s 使用helm部署influxdb2.x(本地数据持久化)

环境:ubuntu 22.04.3 LTS (虚拟机)
K8s版本:v1.22.17

参考文章:1.InfluxDB数据库快速入门与基础使用-腾讯云开发者社区-腾讯云 (tencent.com)

部署helm

helm提供了多种安装方式,具体参考:Helm | 安装Helm也可以直接选择在终端输入以下代码:

sudo snap install helm --classic

添加helm国内仓库

和其他大部分下载软件一样,helm也需要添加国内仓库,这里只列出了部署influxdb所需的仓库

helm repo add bitnami https://charts.bitnami.com/bitnami 
helm repo update && helm search repo influxdb
导出YAML部署文件

在完成仓库更新后,可以找到当前可以部署的influxdb及其版本号,但此时直接部署容器状态会显示“pending”,我们可以先导出该仓库中influxdb的YAML部署文件

helm show values bitnami/influxdb > influxdb.yml

 在终端中使用vim命令进入influxdb.yml文件,属性比较多,但我们只需要关注两处,分别是:

第20行的 storageClass:'' ''

第228行的 nodeSelector: {}

由于没有定义storageClass,在生成pod是会提示PVC生成失败,查阅influxdb官方文档可以找到本地PV的YAML文件。

由于版本更新,新版的PV本地部署中要求节点亲和性设置,这里直接部署到master节点上

influxdata-operator/deploy/local_storage.yaml at master · influxdata/influxdata-operator · GitHubicon-default.png?t=N7T8https://github.com/influxdata/influxdata-operator/blob/master/deploy/local_storage.yaml

vim local-storage.yaml

##*************************************

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: standard-resize
provisioner: kubernetes.io/no-provisioner
volumeBindingMode: Immediate
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: influxdb-data-pv
spec:
  capacity:
    storage: 8Gi
  accessModes:
  - ReadWriteOnce
  persistentVolumeReclaimPolicy: Delete
  storageClassName: local
  local:
    path: /var/lib/influxdb/
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:
          - master

##********************************************

kubectl apply -f local-storage.yaml

这里我们定义了storageClass类型:local ,并分给了它8Gi的空间

因此修改influxdb.yml中

第20行的 storageClass:'' ''    ------------------>     storageClass:'' local''

为了保证influxdb和PV同时部署在master节点上,修改

第228行的 nodeSelector: {} ------------------>  nodeSelector: {kubernetes.io/hostname: master}

(已经提前去除了master节点上的污点,部署失败可以尝试先去除master污点)

需要使用nfs类型存储的也可以使用以下文件,自行修改

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: no-provisioner
provisioner: kubernetes.io/no-provisioner
volumeBindingMode: WaitForFirstConsumer
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: influxdb-data-pv-nfs
  namespace: influxdata
spec:
  capacity:
    storage: 8Gi
  accessModes:
  - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  storageClassName: no-provisioner
  nfs:
    path: /data
    server: nfs.openshift.example.com 

部署influxdb

完成上述操作后,在终端输入(确保版本号正确)

helm install prometheus-influxdb bitnami/influxdb -f influxdb.yml --version 5.9.5 -n influxdb --debug --create-namespace

pod部署过程会比较长,可能会出现pod显示running的同时unready,等待容器彻底运行起来即可

端口映射

此时这个容器是没有Nodeport端口供我们访问的,需要修改svc文件

kubectl edit svc -n influxdb prometheus-influxdb
# Please edit the object below. Lines beginning with a '#' will be ignored,
# and an empty file will abort the edit. If an error occurs while saving this file will be
# reopened with the relevant failures.
#
apiVersion: v1
kind: Service
metadata:
  annotations:
    meta.helm.sh/release-name: prometheus-influxdb
    meta.helm.sh/release-namespace: influxdb
  creationTimestamp: "2023-10-09T07:15:26Z"
  labels:
    app.kubernetes.io/component: influxdb
    app.kubernetes.io/instance: prometheus-influxdb
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/name: influxdb
    app.kubernetes.io/version: 2.7.1
    helm.sh/chart: influxdb-5.9.5
  name: prometheus-influxdb
  namespace: influxdb
  resourceVersion: "188524"
  uid: f0827c4b-0afd-4e26-80d9-75ff90110b27
spec:
  clusterIP: 10.97.109.86
  clusterIPs:
  - 10.97.109.86
  externalTrafficPolicy: Cluster
  internalTrafficPolicy: Cluster
  ipFamilies:
  - IPv4
  ipFamilyPolicy: SingleStack
  ports:
  - nodePort: 31523
    port: 8086
    protocol: TCP
    targetPort: 8086
  selector:
    app.kubernetes.io/component: influxdb
    app.kubernetes.io/instance: prometheus-influxdb
    app.kubernetes.io/name: influxdb
  sessionAffinity: None
  type: NodePort
status:
  loadBalancer: {}

修改完成后在网页输入:主机IP:31523 即可进入influxdb网页,也可以在终端进入容器直接操作数据库

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值