「クラウドネイティブ」Elasticsearch + Kibana on k8sの解説と実践的な操作

「クラウドネイティブ」Elasticsearch + Kibana on k8sの解説と実践的な操作

1. 概要

Elasticsearch は Lucene をベースにした検索エンジンです。 HTTP Web インターフェイスとスキーマフリーの JSON ドキュメントを備えた、分散型のマルチテナント対応フルテキスト検索エンジンを提供します。 Elasticsearch は Java で開発され、Apache ライセンスの条件に基づいてオープンソースとしてリリースされています。

公式ドキュメント: https://www.elastic.co/guide/en/elasticsearch/reference/master/getting-started.htmlGitHub: https://github.com/elastic/elasticsearch

2. Elasticsearch オーケストレーションとデプロイメント

アドレス: https://artifacthub.io/packages/helm/elastic/elasticsearch

1) ソースを追加し、オーケストレーション展開パッケージをダウンロードします

 helmリポジトリにelasticを追加しますhttps://helm.elastic.co
helm pull elastic / elasticsearch --バージョン 7.17.3
tar - xf elasticsearch - 7.17.3.tgz

2) イメージを構築する

Elasticsearch のさまざまなバージョンのダウンロード アドレス: https://www.elastic.co/cn/downloads/past-releases#elasticsearch ここではイメージを再構築しません。ここでは、イメージのプルを高速化するために、リモート イメージをローカル ハーバーにプッシュします。

 docker pull docker .elastic .co / elasticsearch / elasticsearch : 7.17 .3

docker タグ docker .elastic .co / elasticsearch / elasticsearch : 7.17 .3 myharbor .com / bigdata / elasticsearch : 7.17 .3

# 画像をアップロードする
docker push myharbor .com / bigdata / elasticsearch : 7.17 .3

# 画像を削除する
docker rmi myharbor .com / bigdata / elasticsearch : 7.17 .3
crictl rmi myharbor .com / bigdata / elasticsearch : 7.17 .3

3) YAMLレイアウトを変更する

  • elasticsearch/値.yaml
画像: "myharbor.com/bigdata/elasticsearch"

...

...
### これらの行を削除します
ボリュームクレームテンプレート:
アクセスモード: [ "ReadWriteOnce" ]
リソース
リクエスト:
ストレージ: 30 Gi
....

持続性:
有効: true
ラベル:
# StatefulSet の volumeClaimTemplate にデフォルトのラベルを追加します
有効: false
注釈: { }
アクセスモード:
-一度だけ読み書き可能
サイズ: 1Gi
ストレージクラス: "elasticsearch-local-storage"
地元
-名前: elasticsearch - 0
ホスト: "local-168-182-110"
パス: "/opt/bigdata/servers/elasticsearch/data/data1"
-名前: elasticsearch - 1
ホスト: "local-168-182-111"
パス: "/opt/bigdata/servers/elasticsearch/data/data1"
-名前: elasticsearch - 2
ホスト: "local-168-182-112"
パス: "/opt/bigdata/servers/elasticsearch/data/data1"

...

プロトコル: http
httpポート: 9200
トランスポートポート: 9300
サービス
有効: true
タイプ: NodePort
ノードポート: 30920
httpポート名:
  • elasticsearch/テンプレート/ストレージクラス.yaml
種類:ストレージクラス
apiバージョン:ストレージ.k8s .io / v1
メタデータ:
名前: { { .Values ​​.persistence .storageClass } }
プロビジョナー: kubernetes .io / no -プロビジョナー
  • elasticsearch/テンプレート/pv.yaml

 {{- 範囲 .Values.persistence.local }}
---
APIバージョン: v1
種類: 永続ボリューム
メタデータ:
名前: {{.name}}
ラベル:
名前: {{.name}}
仕様:
ストレージクラス名: {{ $.Values.persistence.storageClass }}
容量:
ストレージ: {{ $.Values.persistence.size }}
アクセスモード:
{{- 範囲 $.Values.persistence.accessModes }}
- {{ . |引用 }}
{{- 終わり }}
地元:
パス: {{.path}}
ノードアフィニティ:
必須:
ノードセレクタ用語:
- 一致する表現:
- キー: kubernetes.io/hostname
演算子:
値:
- {{ 。ホスト }}
---
{{- 終わり }}

  • elasticsearch/テンプレート/statefulset.yaml

仕様:
ボリュームクレームテンプレート:
仕様:
# この行を削除
{{toYaml .Values.volumeClaimTemplate |インデント 6 }}

# 次のコンテンツを追加します。
アクセスモード:
{{- 範囲 .Values.persistence.accessModes }}
- {{ . |引用 }}
{{- 終わり }}
リソース:
リクエスト:
ストレージ: {{ .Values.persistence.size |引用 }}
{{- if .Values.persistence.storageClass }}
{{- if (eq "-" .Values.persistence.storageClass) }}
ストレージクラス名: ""
{{- それ以外 }}
ストレージクラス名: "{{ .Values.persistence.storageClass }}"
{{- 終わり }}
{{- 終わり }}

4) 展開を開始する

 # 最初にローカルストレージディレクトリを作成する
mkdir -p / opt / bigdata / servers / elasticsearch / data / data1
chmod -R 777 / opt / bigdata / servers / elasticsearch / data / data1

helm をインストールします- elasticsearch ./elasticsearch -n elasticsearch --create-namespace
# チェック
helm メモを取得- elasticsearch - n elasticsearch
kubectl get pods svc - n elasticsearch - wide を実行します。

注記

名前: my - elasticsearch
最終配備: 2022年1012水曜日23:47:17
名前空間: elasticsearch
ステータス:展開済み
改訂: 1
注記:
1.すべてのクラスタ メンバーが起動するのを確認します。
$ kubectl get pods --namespace=elasticsearch -l app=elasticsearch-master -w2 を実行します。 Helm テストを使用してクラスターの健全性をテストします。
$ helm --namespace=elasticsearch テスト my-elasticsearch

5) テスト検証

 : // 192.168 .182 .110 : 30920 /
カールhttp://192.168.182.110:30920/_cat/nodes
カールhttp://192.168.182.110:30920/_cat/health?pretty

6) エラスティックサーチヘッド

elasticsearch-head GitHubダウンロードアドレス: https://github.com/mobz/elasticsearch-head Googleブラウザelasticsearch-headプラグイン:

リンク: https://pan.baidu.com/s/1kYcTjBDPmSWVzsku2hEW7w?pwd=67v4 抽出コード: 67v4

7) アンインストール

 helm アンインストール my - elasticsearch - n elasticsearch
kubectl ns elasticsearchを削除します--force

rm - fr / opt / bigdata /サーバー/ elasticsearch /データ/ data1 /*
ssh local-168-182-111 "rm -fr /opt/bigdata/servers/elasticsearch/data/data1/* "
ssh local-168-182-112 "rm -fr /opt/bigdata/servers/elasticsearch/data/data1/* "

docker rmi myharbor.com/bigdata/elasticsearch:7.17.3
crictl rmi myharbor.com/bigdata/elasticsearch:7.17.3
ssh local-168-182-111 "crictl rmi myharbor.com/bigdata/elasticsearch:7.17.3"
ssh local-168-182-112 "crictl rmi myharbor.com/bigdata/elasticsearch:7.17.3"

3. Kibana オーケストレーションとデプロイメント

アドレス: https://artifacthub.io/packages/helm/bitnami/kibana?modal=install

1) ソースを追加し、オーケストレーション展開パッケージをダウンロードします

 helm リポジトリに bitnami を追加します https://charts.bitnami.com/bitnami
helm pull bitnami/kibana --バージョン 10.2.6
tar -xf キバナ-10.2.6.tgz

2) イメージを構築する

イメージはここで再構築されるのではなく、高速化のためにローカルの港にプッシュされます。 [注意] バージョン番号はESに対応している必要があります。バージョンが異なる場合、互換性のないストレージが発生する可能性があります。

 docker pull docker.io/bitnami/kibana:7.17.3
docker タグ docker.io/bitnami/kibana:7.17.3 myharbor.com/bigdata/kibana:7.17.3

# 画像をアップロードする
docker push myharbor.com/bigdata/kibana:7.17.3

# 画像を削除する
docker rmi myharbor.com/bigdata/kibana:7.17.3
crictl rmi myharbor.com/bigdata/kibana:7.17.3

3) YAMLレイアウトを変更する

  • キバナ/値.yaml

画像:
レジストリ: myharbor.com
リポジトリ: bigdata/kibana
タグ: 8.4.3-debian-11-r1

...

レプリカ数: 1

...

持続性:
有効: true
アクセスモード:
-一度だけ読み書き可能
サイズ: 1Gi
ストレージクラス: "kibana-local-storage"
地元:
- 名前: キバナ-0
ホスト: "local-168-182-111"
パス: "/opt/bigdata/servers/kibana/data/data1"

...

サービス:
ポート:
http: 5601
タイプ: NodePort
ノードポート:
http: "30601"

...

エラスティックサーチ:
ホスト:
-elasticsearch-マスター.elasticsearch
ポート: "9200"

  • キバナ/テンプレート/値.yaml

 {{- 範囲 .Values.persistence.local }}
---
APIバージョン: v1
種類: 永続ボリューム
メタデータ:
名前: {{.name}}
ラベル:
名前: {{.name}}
仕様:
ストレージクラス名: {{ $.Values.persistence.storageClass }}
容量:
ストレージ: {{ $.Values.persistence.size }}
アクセスモード:
{{- 範囲 $.Values.persistence.accessModes }}
- {{ . |引用 }}
{{- 終わり }}
地元:
パス: {{.path}}
ノードアフィニティ:
必須:
ノードセレクタ用語:
- 一致する表現:
- キー: kubernetes.io/hostname
演算子:
値:
- {{ 。ホスト }}
---
{{- 終わり }}

  • kibana/テンプレート/ストレージクラス.yaml

種類: ストレージクラス
APIバージョン: storage.k8s.io/v1
メタデータ:
名前: {{ .Values.persistence.storageClass }}
プロビジョナー: kubernetes.io/no-provisioner

  • キバナ/テンプレート/pv.yaml

 {{- 範囲 .Values.persistence.local }}
---
APIバージョン: v1
種類: 永続ボリューム
メタデータ:
名前: {{.name}}
ラベル:
名前: {{.name}}
仕様:
ストレージクラス名: {{ $.Values.persistence.storageClass }}
容量:
ストレージ: {{ $.Values.persistence.size }}
アクセスモード:
{{- 範囲 $.Values.persistence.accessModes }}
- {{ . |引用 }}
{{- 終わり }}
地元:
パス: {{.path}}
ノードアフィニティ:
必須:
ノードセレクタ用語:
- 一致する表現:
- キー: kubernetes.io/hostname
演算子:
値:
- {{ 。ホスト }}
---
{{- 終わり }}

4) 展開を開始する

 # 最初にローカルストレージディレクトリを作成する
mkdir -p /opt/bigdata/servers/kibana/data/data1
chmod -R 777 /opt/bigdata/servers/kibana/data/data1

helm で my-kibana をインストールします。/kibana -n kibana --create-namespace
# チェック
helm は、my-kibana -n kibana のメモを取得します。
kubectl ポッドの取得、svc -n kibana -owide

注記

名前: my-kibana
最終デプロイ: 2022年10月13日木曜日 22:43:30
名前空間: kibana
ステータス: 展開済み
改訂: 1
テストスイート: なし
注記:
チャート名: キバナ
チャートバージョン: 10.2.6
アプリバージョン: 8.4.3

** チャートが展開されるまでしばらくお待ちください **#####################################################################################################
### エラー: 'helm install' 呼び出しで Elasticsearch 外部ホストまたはポートを指定しませんでした ###
##############################################################################

次のコマンドを実行して Kibana のデプロイを完了します。

Helm upgrade --namespace kibana my-kibana my-repo/kibana \
--set elasticsearch.hosts[0]=YOUR_ES_HOST、elasticsearch.port=YOUR_ES_PORT

「YOUR_ES_HOST」および「YOUR_ES_PORT」プレースホルダーを、Elasticsearch デプロイメントの適切な値に置き換えます。

5) テスト検証

ウェブ: http://192.168.182.111:30601

6) アンインストール

 helm アンインストール my-kibana -n kibana
kubectl delete ns kibana --force

ssh local-168-182-111 rm -fr /opt/bigdata/servers/kibana/data/data1/*

docker rmi myharbor.com/bigdata/bigdata:8.4.3-debian-11-r1
crictl rmi myharbor.com/bigdata/bigdata:8.4.3-debian-11-r1

Elasticsearch オン K8S

ダウンロードアドレス: https://gitee.com/hadoop-bigdata/elasticsearch-on-k8skibana-on-k8s

ダウンロードアドレス: https://gitee.com/hadoop-bigdata/kibana-on-k8s

<<:  マイクロソフトの100を超えるグローバルインテリジェントクラウドイノベーションと複数のクラウドサービスが中国の新しいデータセンターに所在

>>:  クラウドネイティブなデータ ウェアハウスとデータ レイクを構築するためのベスト プラクティス

推薦する

ボックス検索からボックスサービスへ: 検索の進化の方向

ユーザーは、スーパーで何を食べるか、何を買うかなど、直前の行動ですぐに結果を求めるためにモバイル検索...

コメント:国美は電子商取引事業を統合する必要がある

状況の展開から判断すると、Gome が Gome Mall と Kuba.com を統合するのは時間...

Sina Weibo、チェス盤から駒にどうやって変わったのか?

長らく噂されていたアリによる新浪微博への投資は、メーデー連休中にようやく確認された。それ以来、新浪微...

9階建てのタワーは土から始まる:5Gとエッジコンピューティングを支えるサーバープラットフォームの話

はじめに: 5Gがますます近づき、それに伴うNFVやエッジコンピューティングも本格的に発展しつつあり...

ついに誰かがSaaSを明確にした

[[405394]]この記事はWeChatの公開アカウント「Big Data DT」から転載したもの...

#11.11# cmivps: 香港の無制限トラフィックVPSが6.64ドルから​​、香港CMI 3ネットワーク直結回線

cmivps は 11.11 向けに香港 VPS プロモーションも開始しました。比較的高構成の香港 ...

新しいサイトが含まれない要因と解決策

多くのウェブマスターは、この厄介な問題に遭遇します。なぜ私の新しいサイトはいつも含まれないのでしょう...

Dynatrace がガートナーの 2019 年 APM マジック クアドラントで 9 年連続リーダーに選出

エンタープライズ クラウド向けソフトウェア インテリジェンス企業である Dynatrace は本日、...

アトリビューション分析のやり方がわからないと、チャンネルのコンバージョンやユーザー数の増加がどんどん悪くなるのも当然です。

APPは開発され、広告も行われ、チャネルも選択され、予算も確保されましたが(いつも足りない気がします...

分散ストレージのメタデータ設計

[[247858]]従来のストレージ設計方法には、主に以下のカテゴリが含まれます。 GlusterF...

「言葉にできない」食べ物: hostodo-アジア最適化 IP/$2/1g メモリ/90g ハードディスク/3T トラフィック/QN/ロサンゼルス

hostodo.com は、新しいサーバーと QN のアジア向けに最適化された IP という新しいも...

エッジ コンピューティングとそれが今日のビジネスにとって重要である理由について学びましょう。

エッジ コンピューティング市場は、モノのインターネット、パブリック クラウド サービス、特許、標準な...

2020年に5Gとエッジコンピューティングはどのように発展するのでしょうか?

2020 年の新年の初めには、エッジ コンピューティングと 5G をめぐる新たな誇大宣伝の波が間違い...

なぜ CAP が分配理論の基礎となるのでしょうか?

分散システムでは、次の 3 つの指標に細心の注意を払います。データの一貫性;システムの可用性;ノード...

SEOランキングを安定させる最も効果的な方法:微調整

導入:多くの SEO 担当者は、ウェブサイトのランキングが変動し、不安定になるという状況に遭遇したこ...