Kubernetes 集群 Helm3 安裝 ElasticSearch & Kibana 7集群

      網友投稿 1123 2025-04-01

      簡介

      資源準備

      資源要求

      ElasticSearch 集群環境

      Kibana 環境信息

      簡介

      資源準備

      資源要求

      ElasticSearch 集群環境

      Kibana 環境信息

      配置 StorageClass

      提前下載鏡像

      創建集群證書

      生成證書文件

      添加證書到集群

      配置應用參數

      ElasticSearch Master

      ElasticSearch Data

      ElasticSearch Client

      Kibana 安裝的配置文件

      helm 安裝

      helm 安裝 ElasticSearch

      Helm 安裝 Kibana

      查看安裝的應用資源

      訪問 Kibana 瀏覽 ElasticSearch 數據

      簡介

      Elasticsearch 是一個分布式的搜索和分析引擎,可以用于全文檢索、結構化檢索和分析,并能將這三者結合起來。設計用于云計算中,能夠達到實時搜索,穩定,可靠,快速,安裝使用方便,輕松擴展服務節點,更能用于日志收集快速檢索等等一些列功能。

      Kibana 是一個為 Elasticsearch 平臺分析和可視化的開源平臺,使用 Kibana 能夠搜索、展示存儲在 Elasticsearch 中的索引數據。使用它可以很方便用圖表、表格、地圖展示和分析數據。

      Helm: Helm(注意:helm 2.0 版本與 3.0 有很大區別)是與 kubernetes 的 kube-apiserver 進行交互,通過 Kubernetes API 控制應用啟動、更新與刪除的客戶端。

      資源準備

      ElasticSearch 安裝有最低安裝要求,如果執行 Helm 安裝命令后 Pod 無法正常啟動,請檢查是否符合最低要求的配置。

      資源要求

      ElasticSearch 集群環境

      Kibana 環境信息

      配置 StorageClass

      配置一個 SotrageClass,用于創建 Kubernetes 存儲用的 PV、PVC,因為 ElasticSearch 部署的是 StatefulSet 類型資源,涉及到自動卷分配,需要一個存儲卷分配服務。例如,使用 NFS 存儲就需要 NFS 共享網絡卷的 NFS-Provisioner 服務,能夠幫我們自動創建存儲空間及 PV 與 PVC,請確認 Kubernetes 集群中存在這樣的卷分配服務。

      這里使用的是 NFS 存儲卷,且存在 NFS Provisioner 服務,使用之前創建的 StorageClass,如下:

      $ kubectl get StorageClass NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE nfs-storage-new (default) nfs-client Delete Immediate false 6d4h

      提前下載鏡像

      提前將要部署的應用的鏡像下載,避免安裝時因為鏡像下載過慢而導致安裝失敗。這里我們主要用到的兩個鏡像,下載操作如下:

      ## 拉取 elasticsearch 鏡像 docker pull elasticsearch:7.7.1 ## 拉取 kibana 鏡像 docker pull kibana:7.7.1

      創建集群證書

      ElasticSearch 7.x 版本默認安裝了 X-Pack 插件,并且部分功能免費,這里我們配置安全證書文件。

      生成證書文件

      Kubernetes 集群 Helm3 安裝 ElasticSearch & Kibana 7集群

      # 運行容器生成證書 docker run --name elastic-charts-certs -i -w /app elasticsearch:7.7.1 /bin/sh -c \ "elasticsearch-certutil ca --out /app/elastic-stack-ca.p12 --pass '' && \ elasticsearch-certutil cert --name security-master --dns \ security-master --ca /app/elastic-stack-ca.p12 --pass '' --ca-pass '' --out /app/elastic-certificates.p12" # 從容器中將生成的證書拷貝出來 docker cp elastic-charts-certs:/app/elastic-certificates.p12 ./ # 刪除容器 docker rm -f elastic-charts-certs # 將 pcks12 中的信息分離出來,寫入文件 openssl pkcs12 -nodes -passin pass:'' -in elastic-certificates.p12 -out elastic-certificate.pem

      添加證書到集群

      # 添加證書 kubectl create secret generic elastic-certificates --from-file=elastic-certificates.p12 kubectl create secret generic elastic-certificate-pem --from-file=elastic-certificate.pem # 設置集群用戶名密碼,用戶名不建議修改 kubectl create secret generic elastic-credentials \ --from-literal=username=elastic --from-literal=password=admin@123

      配置應用參數

      通過 Helm 安裝 需要事先創建一個帶有配置參數的 values.yaml 文件。然后再執行 Helm install 安裝命令時,指定使用此文件。

      ElasticSearch Master

      創建 es-master-values.yaml 文件

      # ============設置集群名稱============ ## 設置集群名稱 clusterName: "elasticsearch" ## 設置節點名稱 nodeGroup: "master" ## 設置角色 roles: master: "true" ingest: "false" data: "false" # ============鏡像配置============ ## 指定鏡像與鏡像版本 image: "docker.elastic.co/elasticsearch/elasticsearch" imageTag: "7.7.1" ## 副本數 replicas: 3 # ============資源配置============ ## JVM 配置參數 esJavaOpts: "-Xmx1g -Xms1g" ## 部署資源配置(生成環境一定要設置大些) resources: requests: cpu: "2000m" memory: "2Gi" limits: cpu: "2000m" memory: "2Gi" ## 數據持久卷配置 persistence: enabled: true ## 存儲數據大小配置 volumeClaimTemplate: storageClassName: nfs-storage-new accessModes: [ "ReadWriteOnce" ] resources: requests: storage: 5Gi # ============安全配置============ ## 設置協議,可配置為 http、https protocol: http ## 證書掛載配置,這里我們掛入上面創建的證書 secretMounts: - name: elastic-certificates secretName: elastic-certificates path: /usr/share/elasticsearch/config/certs ## 允許您在/usr/share/elasticsearch/config/中添加任何自定義配置文件,例如 elasticsearch.yml ## ElasticSearch 7.x 默認安裝了 x-pack 插件,部分功能免費,這里我們配置下 ## 下面注掉的部分為配置 https 證書,配置此部分還需要配置 helm 參數 protocol 值改為 https esConfig: elasticsearch.yml: | xpack.security.enabled: true xpack.security.transport.ssl.enabled: true xpack.security.transport.ssl.verification_mode: certificate xpack.security.transport.ssl.keystore.path: /usr/share/elasticsearch/config/certs/elastic-certificates.p12 xpack.security.transport.ssl.truststore.path: /usr/share/elasticsearch/config/certs/elastic-certificates.p12 # xpack.security.http.ssl.enabled: true # xpack.security.http.ssl.truststore.path: /usr/share/elasticsearch/config/certs/elastic-certificates.p12 # xpack.security.http.ssl.keystore.path: /usr/share/elasticsearch/config/certs/elastic-certificates.p12 ## 環境變量配置,這里引入上面設置的用戶名、密碼 secret 文件 extraEnvs: - name: ELASTIC_USERNAME valueFrom: secretKeyRef: name: elastic-credentials key: username - name: ELASTIC_PASSWORD valueFrom: secretKeyRef: name: elastic-credentials key: password # ============調度配置============ ## 設置調度策略 ## - hard:只有當有足夠的節點時 Pod 才會被調度,并且它們永遠不會出現在同一個節點上 ## - soft:盡最大努力調度 antiAffinity: "hard" ## 容忍配置(一般 kubernetes master 或其它設置污點的節點,只有指定容忍才能進行調度,如果測試環境只有三個節點,則可以開啟在 master 節點安裝應用) #tolerations: # - operator: "Exists" ##容忍全部污點

      ElasticSearch Data

      創建 es-data-values.yaml 文件

      # ============設置集群名稱============ ## 設置集群名稱 clusterName: "elasticsearch" ## 設置節點名稱 nodeGroup: "data" ## 設置角色 roles: master: "false" ingest: "true" data: "true" # ============鏡像配置============ ## 指定鏡像與鏡像版本 image: "docker.elastic.co/elasticsearch/elasticsearch" imageTag: "7.7.1" ## 副本數 replicas: 3 # ============資源配置============ ## JVM 配置參數 esJavaOpts: "-Xmx1g -Xms1g" ## 部署資源配置(生成環境一定要設置大些) resources: requests: cpu: "1000m" memory: "2Gi" limits: cpu: "1000m" memory: "2Gi" ## 數據持久卷配置 persistence: enabled: true ## 存儲數據大小配置 volumeClaimTemplate: storageClassName: nfs-storage-new accessModes: [ "ReadWriteOnce" ] resources: requests: storage: 50Gi # ============安全配置============ ## 設置協議,可配置為 http、https protocol: http ## 證書掛載配置,這里我們掛入上面創建的證書 secretMounts: - name: elastic-certificates secretName: elastic-certificates path: /usr/share/elasticsearch/config/certs ## 允許您在/usr/share/elasticsearch/config/中添加任何自定義配置文件,例如 elasticsearch.yml ## ElasticSearch 7.x 默認安裝了 x-pack 插件,部分功能免費,這里我們配置下 ## 下面注掉的部分為配置 https 證書,配置此部分還需要配置 helm 參數 protocol 值改為 https esConfig: elasticsearch.yml: | xpack.security.enabled: true xpack.security.transport.ssl.enabled: true xpack.security.transport.ssl.verification_mode: certificate xpack.security.transport.ssl.keystore.path: /usr/share/elasticsearch/config/certs/elastic-certificates.p12 xpack.security.transport.ssl.truststore.path: /usr/share/elasticsearch/config/certs/elastic-certificates.p12 # xpack.security.http.ssl.enabled: true # xpack.security.http.ssl.truststore.path: /usr/share/elasticsearch/config/certs/elastic-certificates.p12 # xpack.security.http.ssl.keystore.path: /usr/share/elasticsearch/config/certs/elastic-certificates.p12 ## 環境變量配置,這里引入上面設置的用戶名、密碼 secret 文件 extraEnvs: - name: ELASTIC_USERNAME valueFrom: secretKeyRef: name: elastic-credentials key: username - name: ELASTIC_PASSWORD valueFrom: secretKeyRef: name: elastic-credentials key: password # ============調度配置============ ## 設置調度策略 ## - hard:只有當有足夠的節點時 Pod 才會被調度,并且它們永遠不會出現在同一個節點上 ## - soft:盡最大努力調度 antiAffinity: "hard" ## 容忍配置(一般 kubernetes master 或其它設置污點的節點,只有指定容忍才能進行調度,如果測試環境只有三個節點,則可以開啟在 master 節點安裝應用) #tolerations: # - operator: "Exists" ##容忍全部污點

      ElasticSearch Client

      創建 es-client-values.yaml 文件

      # ============設置集群名稱============ ## 設置集群名稱 clusterName: "elasticsearch" ## 設置節點名稱 nodeGroup: "client" ## 設置角色 roles: master: "false" ingest: "false" data: "false" # ============鏡像配置============ ## 指定鏡像與鏡像版本 image: "docker.elastic.co/elasticsearch/elasticsearch" imageTag: "7.7.1" ## 副本數 replicas: 2 # ============資源配置============ ## JVM 配置參數 esJavaOpts: "-Xmx1g -Xms1g" ## 部署資源配置(生成環境一定要設置大些) resources: requests: cpu: "1000m" memory: "2Gi" limits: cpu: "1000m" memory: "2Gi" ## 數據持久卷配置 persistence: enabled: false # ============安全配置============ ## 設置協議,可配置為 http、https protocol: http ## 證書掛載配置,這里我們掛入上面創建的證書 secretMounts: - name: elastic-certificates secretName: elastic-certificates path: /usr/share/elasticsearch/config/certs ## 允許您在/usr/share/elasticsearch/config/中添加任何自定義配置文件,例如 elasticsearch.yml ## ElasticSearch 7.x 默認安裝了 x-pack 插件,部分功能免費,這里我們配置下 ## 下面注掉的部分為配置 https 證書,配置此部分還需要配置 helm 參數 protocol 值改為 https esConfig: elasticsearch.yml: | xpack.security.enabled: true xpack.security.transport.ssl.enabled: true xpack.security.transport.ssl.verification_mode: certificate xpack.security.transport.ssl.keystore.path: /usr/share/elasticsearch/config/certs/elastic-certificates.p12 xpack.security.transport.ssl.truststore.path: /usr/share/elasticsearch/config/certs/elastic-certificates.p12 # xpack.security.http.ssl.enabled: true # xpack.security.http.ssl.truststore.path: /usr/share/elasticsearch/config/certs/elastic-certificates.p12 # xpack.security.http.ssl.keystore.path: /usr/share/elasticsearch/config/certs/elastic-certificates.p12 ## 環境變量配置,這里引入上面設置的用戶名、密碼 secret 文件 extraEnvs: - name: ELASTIC_USERNAME valueFrom: secretKeyRef: name: elastic-credentials key: username - name: ELASTIC_PASSWORD valueFrom: secretKeyRef: name: elastic-credentials key: password # ============Service 配置============ service: type: NodePort nodePort: "30200"

      Kibana 安裝的配置文件

      創建 es-kibana-values.yaml 文件

      # ============鏡像配置============ ## 指定鏡像與鏡像版本 image: "docker.elastic.co/kibana/kibana" imageTag: "7.7.1" ## 配置 ElasticSearch 地址 elasticsearchHosts: "http://elasticsearch-client:9200" # ============環境變量配置============ ## 環境變量配置,這里引入上面設置的用戶名、密碼 secret 文件 extraEnvs: - name: 'ELASTICSEARCH_USERNAME' valueFrom: secretKeyRef: name: elastic-credentials key: username - name: 'ELASTICSEARCH_PASSWORD' valueFrom: secretKeyRef: name: elastic-credentials key: password # ============資源配置============ resources: requests: cpu: "1000m" memory: "2Gi" limits: cpu: "1000m" memory: "2Gi" # ============配置 Kibana 參數============ ## kibana 配置中添加語言配置,設置 kibana 為中文 kibanaConfig: kibana.yml: | i18n.locale: "zh-CN" # ============Service 配置============ service: type: NodePort nodePort: "30601"

      helm 安裝

      ElasticSearch 與 Kibana 的 Helm Chart 模板是 ES 官方 Github 獲取的,它的 Github 地址為 https://github.com/elastic/helm-charts 可以訪問該地址了解更多信息。

      Helm 安裝 ElasticSearch

      ElaticSearch 安裝需要安裝三次,分別安裝 ElasticSearch Master、ElasticSearch Data、ElasticSearch Client 三組。

      安裝的第一組 ElasticSearch 作為 Master 角色節點,負責集群間的管理工作;

      安裝的第二組 ElasticSearch 作為 Data 節點,負責存儲數據;

      安裝的第三組 ElasticSearch 作為 Client 節點,負責代理 ElasticSearch Cluster 集群,負載均衡。

      ElasticSearch 安裝部署如下:

      -f:指定部署配置文件

      –version:指定使用的 Helm Chart 版本號

      # 添加 Chart 倉庫 helm repo add elastic https://helm.elastic.co helm repo update # 安裝 ElasticSearch Master 節點 helm install elasticsearch-master -f es-master-values.yaml --version 7.7.1 elastic/elasticsearch # 安裝 ElasticSearch Data 節點 helm install elasticsearch-data -f es-data-values.yaml --version 7.7.1 elastic/elasticsearch # 安裝 ElasticSearch Client 節點 helm install elasticsearch-client -f es-client-values.yaml --version 7.7.1 elastic/elasticsearch

      ??注意:

      在安裝 Master 節點后 Pod 啟動時候會拋出異常,就緒探針探活失敗,這是個正常現象。在執行安裝 Data 節點后 Master 節點 Pod 就會恢復正常。

      Helm 安裝 Kibana

      helm install kibana -f es-kibana-values.yaml --version 7.7.1 elastic/kibana

      查看安裝的應用資源

      查看部署完成后各個組件的列表與狀態:

      $ kubectl get service,pod | grep -E 'elasticsearch|kibana' service/elasticsearch-client NodePort 10.96.209.182 9200:30200/TCP,9300:30209/TCP 3m35s service/elasticsearch-client-headless ClusterIP None 9200/TCP,9300/TCP 3m35s service/elasticsearch-data ClusterIP 10.96.219.21 9200/TCP,9300/TCP 4m12s service/elasticsearch-data-headless ClusterIP None 9200/TCP,9300/TCP 4m12s service/elasticsearch-master ClusterIP 10.96.37.135 9200/TCP,9300/TCP 5m11s service/elasticsearch-master-headless ClusterIP None 9200/TCP,9300/TCP 5m15s service/kibana-kibana NodePort 10.96.107.176 5601:30601/TCP 90s pod/elasticsearch-client-0 0/1 Running 0 3m35s pod/elasticsearch-client-1 0/1 Running 0 3m35s pod/elasticsearch-data-0 0/1 Running 0 4m12s pod/elasticsearch-data-1 0/1 Running 0 4m12s pod/elasticsearch-data-2 0/1 Running 0 4m11s pod/elasticsearch-master-0 0/1 Running 0 5m11s pod/elasticsearch-master-1 0/1 Running 0 5m10s pod/elasticsearch-master-2 0/1 Running 0 5m9s pod/kibana-kibana-6f785f69c9-gzc2p 0/1 Running 0 88s

      Pod 信息描述:

      elasticsearch-master:ES 主節點 Pod;

      elasticsearch-data:ES 數據節點 Pod;

      elasticsearch-client:ES 客戶端節點 Pod;

      kibana-kibana:Kibana Pod;

      訪問 Kibana 瀏覽 ElasticSearch 數據

      由上面我們指定了 Kibana 的 NodePort 端口為 30601,所以這里我們輸入地址:http://nodeIp:30601 訪問 Kibana 界面。

      然后我們可以看到,會出現登錄框,讓我們輸出用戶名、密碼,這里我們輸入上面配置的用戶名、密碼elastic/admin@123進行登錄:

      登錄成功后就跳轉到 Kibana 主界面:

      示例資料:

      https://github.com/zuozewei/blog-example/tree/master/Kubernetes/k8s-ek

      Elasticsearch Kubernetes

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:word上下邊距怎么設置(word文檔怎樣設置上下邊距)
      下一篇:格式粘貼板(無格式粘貼)
      相關文章
      33333在线亚洲| 亚洲欧洲日产韩国在线| 亚洲熟妇成人精品一区| 亚洲熟妇无码爱v在线观看| 久久精品国产96精品亚洲| 精品亚洲永久免费精品| 亚洲国产另类久久久精品黑人| 亚洲色婷婷综合久久| 亚洲精品字幕在线观看| 亚洲VA成无码人在线观看天堂| 亚洲精品无码成人片久久| 日韩精品亚洲aⅴ在线影院| 中文字幕在亚洲第一在线| 国产亚洲人成A在线V网站| 亚洲综合无码AV一区二区| 亚洲综合在线另类色区奇米| 亚洲精品国产精品乱码视色| 亚洲国产精品一区二区久久hs| 久久久久久久综合日本亚洲| 亚洲va中文字幕无码久久| 国产亚洲AV无码AV男人的天堂 | 在线观看亚洲精品国产| 国产av无码专区亚洲av果冻传媒| 亚洲综合网站色欲色欲| 精品亚洲综合在线第一区| 亚洲欧洲日韩国产综合在线二区| 亚洲最大福利视频网站| 亚洲在成人网在线看| 亚洲日本久久久午夜精品| 亚洲精品无码久久久久YW| 国产精品亚洲综合| 亚洲中文字幕伊人久久无码| 久久精品国产亚洲麻豆| 亚洲av无码不卡| 亚洲国产成人九九综合| 亚洲中文字幕无码久久2020| 国产91成人精品亚洲精品| 在线观看国产区亚洲一区成人 | 亚洲国产精品尤物yw在线| 在线亚洲午夜理论AV大片| 久久久久亚洲av无码专区蜜芽 |