【智簡聯接,萬物互聯】華為云·云享專家董昕:Serverless和微服務下, IoT的變革蓄勢待發
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 插件,并且部分功能免費,這里我們配置安全證書文件。
生成證書文件
# 運行容器生成證書 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
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小時內刪除侵權內容。