如何在 Kubernetes 上部署 Elasticsearch?
在當今世界,資料是企業的生命線。無論是客戶資料、銷售資料還是產品資料,能夠有效地儲存、搜尋和分析資料都可能對公司的成功產生重大影響。Elasticsearch 是一款分散式搜尋和分析引擎,專為速度和可擴充套件性而設計。
它每秒可以處理數百萬個查詢,並且可以輕鬆處理 PB 級別的資料。另一方面,Kubernetes 是一種開源容器編排系統,可自動執行應用程式部署、擴充套件和管理。
設定環境
安裝必要的工具(kubectl、helm)
在 Kubernetes 上部署 Elasticsearch 之前,您需要在本地機器上安裝 kubectl 和 helm。Kubectl 是一個命令列介面 (CLI) 工具,用於與 Kubernetes 叢集通訊並管理諸如部署、服務和 Pod 等資源。
Helm 是 Kubernetes 的包管理器,透過提供預配置的圖表來簡化應用程式安裝過程。
配置 Kubernetes 叢集以進行 Elasticsearch 部署
在本地機器上安裝 kubectl 和 helm 後,您需要配置 Kubernetes 叢集以進行 Elasticsearch 部署。這包括為 Elasticsearch 資源建立名稱空間並設定持久儲存。要使用 kubectl 建立名稱空間,請執行以下操作:
kubectl create namespace elasticsearch
這將建立一個名為 `elasticsearch` 的新名稱空間。
下一步是配置持久儲存,它允許將資料儲存在單個 Pod 之外,以便即使 Pod 因維護或擴充套件需要而發生故障或重新啟動,資料仍然可用。您應該安裝外部儲存提供程式,例如 NFS 儲存類供應程式或雲提供商的塊儲存類,這些儲存類提供預配的塊卷。
建立 Elasticsearch 部署
建立部署配置的 YAML 檔案
在 Kubernetes 上部署 Elasticsearch 之前,您需要建立一個 YAML 檔案來定義 Elasticsearch 部署的配置。Kubernetes 使用此 YAML 檔案來了解您希望如何部署 ElasticSearch。
以下是 YAML 檔案的示例
apiVersion: apps/v1
kind: Deployment metadata:
name: elasticsearch spec:
selector: matchLabels:
app: elasticsearch replicas: 1
template: metadata:
labels: app: elasticsearch
spec: containers:
- name: elasticsearch image: docker.elastic.co/elasticsearch/elasticsearch:{VERSION}
ports: - containerPort: 9200
name: http - containerPort: 9300
name: tcp
此 YAML 檔案包含在 Kubernetes Pod 中執行的 Elasticsearch 容器的單個副本的規範。
在 YAML 檔案中定義資源、副本和其他設定
除了為 Elasticsearch 部署定義副本數量和映象標籤外,您還可以指定各種資源需求,例如 CPU 和記憶體限制。預設情況下,Kubernetes 將根據其已知特徵為每個容器分配預設的資源請求和限制。要為 ElasticSearch 部署定義自定義資源限制或需求,請在容器規範中新增以下行:
resources: requests : memory : "8Gi" cpu : "2" limits : memory : "16Gi" cpu : "4"
您還可以配置各種其他設定,例如環境變數、命令列引數、存活性探測等。
使用 kubectl apply 命令部署 Elasticsearch 例項
建立 YAML 檔案後,您可以使用 kubectl apply 命令將其部署到 Kubernetes 叢集:
kubectl apply -f elasticsearch.yaml
此命令將根據 YAML 檔案中指定的配置建立一個新的部署。
您可以透過執行 `kubectl get deployments` 和 `kubectl get pods` 來檢視 Elasticsearch 部署的狀態。恭喜!
您已成功在 Kubernetes 上建立並部署了 Elasticsearch 例項。下一步是配置 Elasticsearch 設定,例如節點、索引模式、對映等。
配置 Elasticsearch
設定索引模式和對映
在 Kubernetes 上成功部署 ElasticSearch 集群后,下一步是將其配置為適合您的資料需求。此配置的一個重要方面是設定索引模式和對映。索引模式是定義資料如何在 ElasticSearch 中組織的一種方法,而對映則指定將在每個索引中儲存的欄位及其資料型別。
要建立索引模式,您可以使用 Kibana 或 ElasticSearch REST API。對於不熟悉 API 或程式設計的人員,Kibana 使配置 ElasticSearch 例項變得更容易。
要在 Kibana 中建立索引模式,請轉到管理選項卡並選擇“索引模式”。然後單擊“建立索引模式”並輸入模式的名稱。
配置節點設定以獲得最佳效能
Elasticsearch 節點負責索引和儲存文件,以及在執行查詢時搜尋文件。為了確保 Kubernetes 上的 Elasticsearch 部署的最佳效能,正確配置節點設定非常重要。配置節點時需要考慮的一個重要因素是記憶體分配。
預設情況下,Elasticsearch 為每個節點分配 1GB 的記憶體,如果您處理大型資料集,這可能不夠。要調整此設定,只需編輯每個節點上的 jvm.options 檔案並將 -Xms1g 和 -Xmx1g 更改為更高的值。
配置節點時需要考慮的另一個因素是每個索引的分片數。Elasticsearch 索引可以拆分為多個分片以提高效能。
在 Kubernetes 上部署 Kibana
透過 Helm 圖表安裝 Kibana
Kibana 是一款開源資料視覺化和探索工具,可用於視覺化 Elasticsearch 資料。它通常與 Elasticsearch 一起部署,以提供一個使用者友好的介面來與資料互動。為了在 Kubernetes 上部署 Kibana,我們將使用 Helm 包管理器。
Helm 是一款強大的工具,允許我們將預配置的包(稱為圖表)部署到 Kubernetes 叢集。為了使用 Helm 安裝 Kibana,我們首先需要將 Elastic 儲存庫新增到 Helm 配置中:
bash helm repo add elastic https://helm.elastic.co
新增 Elastic 儲存庫後,我們可以安裝 Kibana 圖表:
bash helm install kibana elastic/kibana
這將在 Kubernetes 叢集上部署 Kibana 的單個例項,可以透過 Web 瀏覽器訪問 http://:5601。
配置 Kibana 以連線到已部署的 ElasticSearch 叢集
為了使 Kibana 與 Elasticsearch 互動,它需要知道如何連線到它。預設情況下,Helm 圖表將使用一些合理的預設值配置 Kibana,這些值應該可以開箱即用。但是,如果您需要更多地控制 Kibana 如何連線到 Elasticsearch(例如,如果您已為 Elasticsearch 部署配置了高可用性),則可能需要編輯一些配置檔案。
最簡單的方法是使用 Kubernetes 中的 ConfigMap。首先,我們將建立一個名為 `kibana.yml` 的新 ConfigMap:
bash kubectl create configmap kibana-yml --from-file=kibana.yml
接下來,我們將告訴 Elastic 圖表我們希望它使用我們自定義的 `kibana.yml` 檔案進行配置:
bash helm upgrade kibana elastic/kibana --set configMap=kibana-yml
此時,Kibana 應該已配置為連線到我們的 Elasticsearch 部署。
結論
在本文中,我們討論了在 Kubernetes 上部署 Elasticsearch 的重要性,並提供了有關如何執行此操作的詳細指南。我們介紹了在 Kubernetes 上部署 Elasticsearch 的先決條件,設定了環境,使用 kubectl apply 命令建立了 Elasticsearch 部署,配置了 Elasticsearch 以獲得最佳效能設定,並在 Kubernetes 上使用 Helm 圖表部署了 Kibana。此外,我們討論瞭如何使用 Prometheus 監控 ElasticSearch 叢集。
在 Kubernetes 上部署 Elasticsearch 可以為組織帶來許多好處,例如可擴充套件性、自動化管理和提高效率。透過遵循本文中概述的步驟,您可以成功地在 Kubernetes 上部署自己的 ElasticSearch 叢集。
資料結構
網路
關係型資料庫
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP