クベルネートのQuestDB
9595 ワード
私は最初に私の元同僚によってQuestDBに導入されました.私はデータベースに興味を持っている、むしろ好奇心旺盛な個人、特に時系列で、私はそれと遊びたいと思っていました.
絶対に必要ない場合は、私のラップトップにJVMをインストールしてください.questdbはJavaで書かれています.それで、2つのオプションがありました.
現在利用できるヘルムチャートがないので、私はKubernetesを選びました;これはQuestDBに貢献する絶好の機会です.
閉じるこの動画はお気に入りから削除されています.Davidを見ることができ、次のビデオでこのプロセスを実行することができます.これは、TelegrafをQuestDBにデータを書き込むように設定することも含んでいます.
Kerbernetes上でのQuestDBのインストール
QuestDBをKubernetesにインストールするには、ヘルムチャートをローカルでクローン化する必要があります.この手順は現在、ヘルムチャートリポジトリが現在QuestDBによって公開されていないため、現在必要です.これは、今後数週間以上の貢献をもって支援することを期待しています.
あなたのそれらのためには気にしない、楽しいビットになることができます.以下のコマンドは、我々が実行したと仮定します
インストールの確認
まず最初にやりたいことは、PODがスケジュールされていることを確認することです.あなたは
questdbが実行されているので、Web UIをチェックアウトするためにサービスを転送します.
魔法のように、あなたはすぐに閲覧することができます
私を信じないで?試してみる🤪
データの書き込み
QuestDBの本当にクールな機能の1つは、大きなデータセットとのばかげたパフォーマンスのほかに、InfluxDBラインプロトコルのサポートです.つまり、Quesdbにデータを書くためにテレグラフを使うことができます.
仮定すると
まず、QuestDBサービスを見てみましょう.
私はKubernetesクラスタの中で少なくともこの記事ではなく、テレグラフを実行するつもりはありません.私もその簡単に簡単にグラフを維持;どれが見つかるかhere .
イージーペイ
これは、KuberDBの公式ヘルムチャートを使用して実行するQuestDBを取得し、telegrafといくつかのデータを書き込むために必要なすべてです.
もちろん、生産に飛躍するときに考慮する様々なものがありますそして、私がQuestDBで私の旅行を続けるので、私はそれをさらに調査します.それまでは、自分でチェックしてください.
あなたが本当に熱心であるならば、以下の構成は利用できる構成へのより深い潜水です.
良い一日を!
ヘルムチャート値説明
まず、QuestDBの展開に使用するイメージとタグをオーバーライドするオプションがあります.デフォルトでは
QuestDBもいくつかの他のポートを提供します.ポートで
ヘルムチャートでは、大きな悪い世界にあなたのサービスを公開するKubernetesイングルのコントローラを活用することができます.実際、QuestDBはかなり大胆です.実際に実行するown public QuestDB それはあなたに260億のレコードを問い合わせることができます.それは野生です.私は、誰もそれを壊したと思いません..まだ😂
Kubernetesのプリミティブ、PVC/PVを通して永続性を使用するためにQuestDB展開を設定することができます.だから慎重にどのくらいのスペースを提供するために考えてください.
絶対に必要ない場合は、私のラップトップにJVMをインストールしてください.questdbはJavaで書かれています.それで、2つのオプションがありました.
現在利用できるヘルムチャートがないので、私はKubernetesを選びました;これはQuestDBに貢献する絶好の機会です.
閉じるこの動画はお気に入りから削除されています.Davidを見ることができ、次のビデオでこのプロセスを実行することができます.これは、TelegrafをQuestDBにデータを書き込むように設定することも含んでいます.
Kerbernetes上でのQuestDBのインストール
QuestDBをKubernetesにインストールするには、ヘルムチャートをローカルでクローン化する必要があります.この手順は現在、ヘルムチャートリポジトリが現在QuestDBによって公開されていないため、現在必要です.これは、今後数週間以上の貢献をもって支援することを期待しています.
git clone https://github.com/questdb/questdb-kubernetes
チャートはAとともに発送するvalues.yaml
それは以前にKubernetes資源を展開している誰にでもよく知らなければなりません.私は次のセクションで少し詳細に各ブロックをカバーし、そのちょっとしたことに興味がある必要があります.あなたのそれらのためには気にしない、楽しいビットになることができます.以下のコマンドは、我々が実行したと仮定します
git clone
上記の作業ディレクトリの上に.されていない場合は、最後にパスを更新どこにクローンした.helm upgrade --install questdb ./questdb-kubernetes/charts/questdb
このコマンドは2番目か2つだけをとり、そのようなものを端末に出力します.Release "questdb" does not exist. Installing it now.
NAME: questdb
LAST DEPLOYED: Mon Aug 24 11:15:15 2020
NAMESPACE: default
STATUS: deployed
REVISION: 1
NOTES:
1. Get the application URL by running these commands:
export POD_NAME=$(kubectl get pods --namespace default -l "app.kubernetes.io/name=questdb,app.kubernetes.io/instance=questdb" -o jsonpath="{.items[0].metadata.name}")
echo "Visit http://127.0.0.1:9000 to use your application"
kubectl --namespace default port-forward $POD_NAME 9000:9000
インストールの確認
まず最初にやりたいことは、PODがスケジュールされていることを確認することです.あなたは
STATUS
ASContainerCreating
しばらくの間、これはコンテナイメージがまだクラスタに取り込まれていることを意味します.$ kubectl get pods
NAME READY STATUS RESTARTS AGE
questdb-0 1/1 Running 0 3s
💥 パーフェクト.questdbが実行されているので、Web UIをチェックアウトするためにサービスを転送します.
kubectl port-forward svc/questdb 8080:80
これはローカルマシンからKubernetesクラスタへのポートを設定します.ローカルポートを指定します8080
ポートに転送すべきである80
QuestDBサービスsvc/questdb
, Kubernetesクラスタの内部魔法のように、あなたはすぐに閲覧することができます
http://localhost:8080
を参照してください.私を信じないで?試してみる🤪
データの書き込み
QuestDBの本当にクールな機能の1つは、大きなデータセットとのばかげたパフォーマンスのほかに、InfluxDBラインプロトコルのサポートです.つまり、Quesdbにデータを書くためにテレグラフを使うことができます.
仮定すると
telegraf.conf
, 入力プラグインを使用してホストからのメトリクスを収集します著名cpu
, disk
, and mem
プラグイン.[agent]
interval = "5s"
[[inputs.cpu]]
[[inputs.disk]]
[[inputs.mem]]
我々は、Telegrafのジェネリックを追加することができますsocket_writer
出力プラグインを使用してデータを書き込みます.[[outputs.socket_writer]]
address = "tcp://questdb:9009"
data_format = "influx"
この出力設定では、TeleGrafがLine Protocol Data Formatを使用していることを指定し、ポートのTCPソケットに書き込みを行います9009
. これは、values.yaml
ファイル.まず、QuestDBサービスを見てみましょう.
$ kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 9d
questdb ClusterIP 10.105.188.157 <none> 80/TCP 52m
あなたはそれを見ることができますPORT(S)
それが唯一のポートのリスト80
, Web UIです.したがって、EndexDBラインプロトコルサポートを有効にする変更を使用して、QuestDB展開をアップグレードする必要があります.cat <<EOF >> values.yaml
service:
type: ClusterIP
port: 80
expose:
influx:
enabled: true
port: 9009
EOF
helm upgrade -f values.yaml questdb ./questdb-kubernetes/charts/questdb
使いました-f
独自の値ファイルを指定するには、グラフによって提供される既定のものと拡張/マージされます.我々values.yaml
IncluxDBサポートを有効にするために必要な設定を追加しますquestdbサービスでポートを公開します.クール、ハッ?我々が再びサービスをチェックするならば、...$ kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 9d
questdb ClusterIP 10.105.188.157 <none> 80/TCP,9009/TCP 56m
港がある9009
😀私はKubernetesクラスタの中で少なくともこの記事ではなく、テレグラフを実行するつもりはありません.私もその簡単に簡単にグラフを維持;どれが見つかるかhere .
イージーペイ
これは、KuberDBの公式ヘルムチャートを使用して実行するQuestDBを取得し、telegrafといくつかのデータを書き込むために必要なすべてです.
もちろん、生産に飛躍するときに考慮する様々なものがありますそして、私がQuestDBで私の旅行を続けるので、私はそれをさらに調査します.それまでは、自分でチェックしてください.
あなたが本当に熱心であるならば、以下の構成は利用できる構成へのより深い潜水です.
良い一日を!
ヘルムチャート値説明
まず、QuestDBの展開に使用するイメージとタグをオーバーライドするオプションがあります.デフォルトでは
questdb/questdb
, これはquestdbチームによって公式に維持されます.私は常に公式に維持されたイメージを使用することを勧めます、しかし、あなたが空気でとらえられた環境にいるか、適当なコンプライアンスチームを持つならば、あなたは必要に応じて上書きすることができます.これはimagePullSecrets
あなたの個人的なレジストリの認証を処理するには、また、提供することができます.書く時に、QuestDBの最新版はそうです5.0.1
.image:
repository: questdb/questdb
pullPolicy: IfNotPresent
# Overrides the image tag whose default is the chart appVersion.
#tag: "5.0.1"
imagePullSecrets: []
次はnameOverride
and fullnameOverride
. ほとんどすべてのチャートはこれらを提供します、そして、彼らは全く表面的です.展開の結果として作成されたリソースの名前を設定できます.今日は使わないつもりです.nameOverride: ""
fullnameOverride: ""
現在、我々はもう少し面白いです.podAnnotations
ポッドに任意の注釈を注入することができます.これは、主にPrometheusでQuestDB展開からメトリクスを集めるのに便利ですエンドポイント発見の注釈を使用できます.podAnnotations: {}
今いくつかの肉のセキュリティのもの.コンテナー内のプロセスが、データを格納するために必要なファイルシステムのグループ所有権と同様に、ユーザーを設定できます.また、私たちのコンテナがカーネルレベルで持っている機能について、むしろ明示的にする能力を持っています.これは、SWANのように優雅に扱われる必要がある巨大なトピックです.ホンク.Kubernetes保安があなたの空想をくすぐる何かであるならば、それが見ている価値がある、そして、最近、それは価値がありました.podSecurityContext: {}
# fsGroup: 2000
securityContext: {}
# capabilities:
# drop:
# - ALL
# readOnlyRootFilesystem: true
# runAsNonRoot: true
# runAsUser: 1000
よろしい.ここでquestdb自体を設定します.私は正直です、私はまだこれについてあまり知りません.しかし、それはdocumented .questdb:
config: #{}
enabled: true
options:
shared.worker.count: 2
KubernetesのQuestDBの実行は素晴らしいです.しかし、我々もそれを消費することができます.私たちはservice
QuestDBにアクセスするために、クラスタ内の他のPODを有効にするブロック.QuestDBはWebサーバを実行し、そのAPIとUIを提供します9000
. しかしながら、HTTPネイティブポートでそれを公開するのは全く一般的です.80
, Kubernetesの中で.これは、クラスタ内から実行できることを意味しますcurl http://questdb
そして、我々が予想するものを得てください.QuestDBもいくつかの他のポートを提供します.ポートで
9009
and 8812
丁重に.私は、実際にヘルムチャートにこれを加えるのを忘れました、そして、それは貢献しましたNiclas Mietz ; それで、ありがとう!😃service:
type: ClusterIP
port: 80
expose:
postgresql:
enabled: false
port: 8812
influx:
enabled: false
port: 9009
あなたはクラスタ内で内部QuestDBにアクセスするよりも楽しいことを知っていますか?それを公開する.oooooo hはい.ヘルムチャートでは、大きな悪い世界にあなたのサービスを公開するKubernetesイングルのコントローラを活用することができます.実際、QuestDBはかなり大胆です.実際に実行するown public QuestDB それはあなたに260億のレコードを問い合わせることができます.それは野生です.私は、誰もそれを壊したと思いません..まだ😂
ingress:
enabled: false
annotations: {}
# kubernetes.io/ingress.class: nginx # kubernetes.io/tls-acme: "true"
# hosts:
# - host: chart-example.local
# paths: []
# tls: []
# # - secretName: chart-example-tls
# # hosts:
# # - chart-example.local
あなたは、データベースが状態/永続性なしで何が良いかについてわかっています.Kubernetesのプリミティブ、PVC/PVを通して永続性を使用するためにQuestDB展開を設定することができます.だから慎重にどのくらいのスペースを提供するために考えてください.
persistence:
enabled: true
#storageClass: "-"
accessMode: ReadWriteOnce
size: 50Gi
QuestDBはGCを無効にするためにJVMでいくつかの魔法のものを行います.あなたはresources
これを明示的に制限するブロック.これらの数字を推測することはありません.これらの制約なしで実行する必要があります/プロフィール/あなたのポッドを監視する“通常の”使用パターンがどのように見えるかを確認します.その後、安全な天井を(10~20°)30 %加えて、それに従います.幸運のベスト.リソース制約はトリッキーなビジネスです.resources: {}
# limits:
# cpu: 100m
# memory: 128Mi
# requests:
# cpu: 100m
# memory: 128Mi
最後に、最後のブロック.すべてのヘルムチャートとそれの後に来るすべてのヘルムチャートの前にすべてのヘルムチャートのように、我々は能力をあなたのQuestDBポッドのスケジューリングを奨励するノードを、あなたの他の生産や消費ポッドにストレージクラスのサポートや地域性かどうか、希望するノードに次の3つのキーで何をすることができます.nodeSelector: {}
tolerations: []
affinity: {}
Read more here .Reference
この問題について(クベルネートのQuestDB), 我々は、より多くの情報をここで見つけました https://dev.to/rawkode/questdb-on-kubernetes-4hheテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol