1. 概要¶
InfluxDB は、現在広く使われている時系列データベースです。InfluxDB は Go 言語で記述されており、外部依存関係がなく、インストールと設定が非常に簡単で、大規模な分散システムの監視システムの構築に適しています。
主な機能:
1)時系列に基づき、時間に関連する関数(最大値、最小値、合計など)をサポートします。
2)メトリクス機能:大量のデータをリアルタイムで計算できます。
3)イベントベース:任意のイベントデータをサポートします。
2. 前提条件¶
- Kubernetes クラスターがデプロイされていること
- OpenEBS ストレージプラグインがインストールされていること
3. インストールの準備¶
influxdb はリソース消費が大きいため、クラスターリソースを専有する必要があります。事前にクラスターのスケジューリングを設定する必要があります。
4. クラスターのラベル設定¶
4.1 コマンドを実行してクラスターにラベルを付与¶
# クラスター計画に従い、influxdb サービスをデプロイする k8s ノードにラベルを付与します
# xxx は実際のクラスター内のノードを表します。複数のノード IP はスペースで区切るか、コマンドラインでタブキーを使用して自動補完します
kubectl label nodes xxx influxdb=true
4.2 ラベルの確認¶
5. クラスターの Taint 設定¶
5.1 コマンドを実行してクラスターに Taint を設定¶
6. StorageClass の設定¶
6.1 influxdb 専用の StorageClass を作成¶
# 以下の YAML 内容を k8s クラスターにコピーし、sc-influxdb.yaml として保存します。実際の状況に応じて修正してからデプロイしてください
apiVersion: storage.k8s.io/v1
allowVolumeExpansion: true
kind: StorageClass
metadata:
annotations:
cas.openebs.io/config: |
- name: StorageType
value: "hostpath"
- name: BasePath
value: "/data/influxdb" # このパスは実際の状況に応じて変更できます。十分なストレージ容量があることを確認してください
name: openebs-influxdb # 名前はクラスター内で一意である必要があります。インストール前に /etc/kubeasz/guance/infrastructure/yaml/taos.yaml のデプロイファイルを修正する際に、この名前を合わせて変更してください
provisioner: openebs.io/local
reclaimPolicy: Retain
volumeBindingMode: WaitForFirstConsumer
/data/influxdbディレクトリのディスク容量が十分であることを確認してください。
6.2 influxdb データストレージの容量を設定¶
# /etc/kubeasz/guance/infrastructure/yaml/influxdb.yaml を編集して必要に応じて変更します
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: influx-data
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi # 実際の必要に応じてストレージ容量を設定してください
volumeMode: Filesystem
storageClassName: openebs-hostpath
7. インストール¶
# デフォルトの管理者アカウントは admin です
# デフォルトのログインパスワードは "B8vBISUItYEH4uhk" です
# パスワードをカスタマイズする場合は、インストール前に /etc/kubeasz/guance/infrastructure/yaml/influxdb.yaml を修正してください
# ネームスペースを作成
kubectl create ns middleware
# influxdb サービスをデプロイ
kubectl apply -f /etc/kubeasz/guance/infrastructure/yaml/influxdb.yaml -n middleware
8. デプロイの確認¶
# デフォルトの管理者アカウントは admin です
# デフォルトのログインパスワードは "B8vBISUItYEH4uhk" です
[root@k8s-node01 ~]# kubectl get pods -n middleware
NAME READY STATUS RESTARTS AGE
influxdb-7ff9db677f-v4877 1/1 Running 0 3m42s
[root@k8s-node01 ~]# kubectl exec -it -n middleware influxdb-xxxx influx
kubectl exec [POD] [COMMAND] is DEPRECATED and will be removed in a future version. Use kubectl exec [POD] -- [COMMAND] instead.
Connected to http://localhost:8086 version 1.7.8
InfluxDB shell version: 1.7.8
> auth
username: admin
password:
> show databases;
name: databases
name
----
_internal
>