data es集群master_Kubernetes Helm3 部署 ElasticSearch amp; Kibana 7 集群
一、簡介
- Elasticsearch 是一個分布式的搜索和分析引擎,可以用于全文檢索、結構化檢索和分析,并能將這三者結合起來。設計用于云計算中,能夠達到實時搜索,穩(wěn)定,可靠,快速,安裝使用方便,輕松擴展服務節(jié)點,更能用于日志收集快速檢索等等一些列功能。
- Kibana 是一個為 Elasticsearch 平臺分析和可視化的開源平臺,使用 Kibana 能夠搜索、展示存儲在 Elasticsearch 中的索引數(shù)據(jù)。使用它可以很方便用圖表、表格、地圖展示和分析數(shù)據(jù)。
- Helm:Helm(注意:helm 2.0 版本與 3.0 有很大區(qū)別)是與 kubernetes 的 kube-apiserver 進行交互,通過 Kubernetes API 控制應用啟動、更新與刪除的客戶端。
二、資源準備
ElasticSearch 安裝有最低安裝要求,如果執(zhí)行 Helm 安裝命令后 Pod 無法正常啟動,請檢查是否符合最低要求的配置。
1、資源要求
| ElasticSearch節(jié)點 | CPU最小要求 | 內(nèi)存最小要求 |
|---|---|---|
| Kubernetes master | 核心數(shù) > 2 | 內(nèi)存 > 2Gi |
| Kubernetes data | 核心數(shù) > 1 | 內(nèi)存 > 2Gi |
| Kubernetes client | 核心數(shù) > 1 | 內(nèi)存 > 2Gi |
2、ElasticSearch 集群環(huán)境
| 集群名稱 | 節(jié)點類型 | 副本數(shù)目 | 存儲大小 | 網(wǎng)絡模式 | 描述 |
|---|---|---|---|---|---|
| elasticsearch | Kubernetes Master | 3 | 5Gi | ClusterIP | 主節(jié)節(jié)點,用于控制 ES 集群 |
| elasticsearch | Kubernetes Data | 3 | 50Gi | ClusterIP | 數(shù)據(jù)節(jié)點,用于存儲 ES 數(shù)據(jù) |
| elasticsearch | Kubernetes Client | 2 | 無 | NodePort(30200) | 負責處理用戶請求,實現(xiàn)請求轉發(fā)、負載均衡 |
3、Kibana 環(huán)境信息
| 應用名稱 | 副本數(shù)目 | 存儲大小 | 網(wǎng)絡模式 | 描述 |
|---|---|---|---|---|
| Kibana | 1 | 無 | NodePort(30601) | 用于展示 ElasticSearch 數(shù)據(jù)的應用 |
三、配置 StorageClass
配置一個 SotrageClass,用于創(chuàng)建 Kubernetes 存儲用的 PV、PVC,因為 ElasticSearch 部署的是 StatefulSet 類型資源,涉及到自動卷分配,需要一個存儲卷分配服務。例如,使用 NFS 存儲就需要 NFS 共享網(wǎng)絡卷的 NFS-Provisioner 服務,能夠幫我們自動創(chuàng)建存儲空間及 PV 與 PVC,請確認 Kubernetes 集群中存在這樣的卷分配服務。這里使用的是 NFS 存儲卷,且存在 NFS Provisioner 服務,使用之前創(chuàng)建的 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
五、創(chuàng)建集群證書
ElasticSearch 7.x 版本默認安裝了 X-Pack 插件,并且部分功能免費,這里我們配置安全證書文件。
1、生成證書文件
#?運行容器生成證書
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
2、添加證書到集群
#?添加證書
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
六、配置應用參數(shù)
通過 Helm 安裝 ?需要事先創(chuàng)建一個帶有配置參數(shù)的 values.yaml 文件。然后再執(zhí)行 Helm install 安裝命令時,指定使用此文件。
1、ElasticSearch Master
創(chuàng)建 es-master-values.yaml 文件
#?============設置集群名稱============
##?設置集群名稱
clusterName:?"elasticsearch"
##?設置節(jié)點名稱
nodeGroup:?"master"
##?設置角色
roles:
master:?"true"
ingest:?"false"
data:?"false"
#?============鏡像配置============
##?指定鏡像與鏡像版本
image:?"docker.elastic.co/elasticsearch/elasticsearch"
imageTag:?"7.7.1"
##?副本數(shù)
replicas:?3
#?============資源配置============
##?JVM?配置參數(shù)
esJavaOpts:?"-Xmx1g?-Xms1g"
##?部署資源配置(生成環(huán)境一定要設置大些)
resources:
requests:
cpu:?"2000m"
memory:?"2Gi"
limits:
cpu:?"2000m"
memory:?"2Gi"
##?數(shù)據(jù)持久卷配置
persistence:
enabled:?true
##?存儲數(shù)據(jù)大小配置
volumeClaimTemplate:
storageClassName:?nfs-storage-new
accessModes:?[?"ReadWriteOnce"?]
resources:
requests:
storage:?5Gi
#?============安全配置============
##?設置協(xié)議,可配置為?http、https
protocol:?http
##?證書掛載配置,這里我們掛入上面創(chuàng)建的證書
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?參數(shù)?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
##?環(huán)境變量配置,這里引入上面設置的用戶名、密碼?secret?文件
extraEnvs:
-?name:?ELASTIC_USERNAME
valueFrom:
secretKeyRef:
name:?elastic-credentials
key:?username
-?name:?ELASTIC_PASSWORD
valueFrom:
secretKeyRef:
name:?elastic-credentials
key:?password
#?============調(diào)度配置============
##?設置調(diào)度策略
##?- hard:只有當有足夠的節(jié)點時 Pod 才會被調(diào)度,并且它們永遠不會出現(xiàn)在同一個節(jié)點上
##?- soft:盡最大努力調(diào)度
antiAffinity:?"hard"
##?容忍配置(一般?kubernetes?master?或其它設置污點的節(jié)點,只有指定容忍才能進行調(diào)度,如果測試環(huán)境只有三個節(jié)點,則可以開啟在?master?節(jié)點安裝應用)
#tolerations:
#??-?operator:?"Exists"??##容忍全部污點2、ElasticSearch Data
創(chuàng)建 es-data-values.yaml 文件
#?============設置集群名稱============
##?設置集群名稱
clusterName:?"elasticsearch"
##?設置節(jié)點名稱
nodeGroup:?"data"
##?設置角色
roles:
??master:?"false"
??ingest:?"true"
??data:?"true"
#?============鏡像配置============
##?指定鏡像與鏡像版本
image:?"docker.elastic.co/elasticsearch/elasticsearch"
imageTag:?"7.7.1"
##?副本數(shù)
replicas:?3
#?============資源配置============
##?JVM?配置參數(shù)
esJavaOpts:?"-Xmx1g?-Xms1g"
##?部署資源配置(生成環(huán)境一定要設置大些)
resources:
??requests:
????cpu:?"1000m"
????memory:?"2Gi"
??limits:
????cpu:?"1000m"
????memory:?"2Gi"
##?數(shù)據(jù)持久卷配置
persistence:
??enabled:?true
##?存儲數(shù)據(jù)大小配置
volumeClaimTemplate:
??storageClassName:?nfs-storage-new
??accessModes:?[?"ReadWriteOnce"?]
??resources:
????requests:
??????storage:?50Gi
#?============安全配置============
##?設置協(xié)議,可配置為?http、https
protocol:?http
##?證書掛載配置,這里我們掛入上面創(chuàng)建的證書
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?參數(shù)?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##?環(huán)境變量配置,這里引入上面設置的用戶名、密碼?secret?文件
extraEnvs:
??-?name:?ELASTIC_USERNAME
????valueFrom:
??????secretKeyRef:
????????name:?elastic-credentials
????????key:?username
??-?name:?ELASTIC_PASSWORD
????valueFrom:
??????secretKeyRef:
????????name:?elastic-credentials
????????key:?password
#?============調(diào)度配置============
##?設置調(diào)度策略
##?- hard:只有當有足夠的節(jié)點時 Pod 才會被調(diào)度,并且它們永遠不會出現(xiàn)在同一個節(jié)點上
##?- soft:盡最大努力調(diào)度
antiAffinity:?"hard"
##?容忍配置(一般?kubernetes?master?或其它設置污點的節(jié)點,只有指定容忍才能進行調(diào)度,如果測試環(huán)境只有三個節(jié)點,則可以開啟在?master?節(jié)點安裝應用)
#tolerations:?
#??-?operator:?"Exists"??##容忍全部污點
3、ElasticSearch Client
創(chuàng)建 es-client-values.yaml 文件
#?============設置集群名稱============
##?設置集群名稱
clusterName:?"elasticsearch"
##?設置節(jié)點名稱
nodeGroup:?"client"
##?設置角色
roles:
master:?"false"
ingest:?"false"
data:?"false"
#?============鏡像配置============
##?指定鏡像與鏡像版本
image:?"docker.elastic.co/elasticsearch/elasticsearch"
imageTag:?"7.7.1"
##?副本數(shù)
replicas:?2
#?============資源配置============
##?JVM?配置參數(shù)
esJavaOpts:?"-Xmx1g?-Xms1g"
##?部署資源配置(生成環(huán)境一定要設置大些)
resources:
requests:
cpu:?"1000m"
memory:?"2Gi"
limits:
cpu:?"1000m"
memory:?"2Gi"
##?數(shù)據(jù)持久卷配置
persistence:
enabled:?false
#?============安全配置============
##?設置協(xié)議,可配置為?http、https
protocol:?http
##?證書掛載配置,這里我們掛入上面創(chuàng)建的證書
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?參數(shù)?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
##?環(huán)境變量配置,這里引入上面設置的用戶名、密碼?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"4、Kibana 安裝的配置文件
創(chuàng)建 es-kibana-values.yaml 文件
#?============鏡像配置============
##?指定鏡像與鏡像版本
image:?"docker.elastic.co/kibana/kibana"
imageTag:?"7.7.1"
##?配置?ElasticSearch?地址
elasticsearchHosts:?"http://elasticsearch-client:9200"
#?============環(huán)境變量配置============
##?環(huán)境變量配置,這里引入上面設置的用戶名、密碼?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?參數(shù)============
##?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 可以訪問該地址了解更多信息。
1、Helm 安裝 ElasticSearch
ElaticSearch 安裝需要安裝三次,分別安裝 ElasticSearch Master、ElasticSearch Data、ElasticSearch Client 三組。
- 安裝的第一組 ElasticSearch 作為 Master 角色節(jié)點,負責集群間的管理工作;
- 安裝的第二組 ElasticSearch 作為 Data 節(jié)點,負責存儲數(shù)據(jù);
- 安裝的第三組 ElasticSearch 作為 Client 節(jié)點,負責代理 ElasticSearch Cluster 集群,負載均衡。
ElasticSearch 安裝部署如下:
-f:指定部署配置文件–version:指定使用的 Helm Chart 版本號
#?添加?Chart?倉庫
helm?repo?add??elastic????https://helm.elastic.co
helm?repo?update
#?安裝?ElasticSearch?Master?節(jié)點
helm?install?elasticsearch-master?-f?es-master-values.yaml?--version?7.7.1?elastic/elasticsearch
#?安裝?ElasticSearch?Data?節(jié)點
helm?install?elasticsearch-data?-f?es-data-values.yaml?--version?7.7.1?elastic/elasticsearch
#?安裝?ElasticSearch?Client?節(jié)點
helm?install?elasticsearch-client?-f?es-client-values.yaml?--version?7.7.1?elastic/elasticsearch?
??注意:
?在安裝 Master 節(jié)點后 Pod 啟動時候會拋出異常,就緒探針探活失敗,這是個正常現(xiàn)象。在執(zhí)行安裝 Data 節(jié)點后 Master 節(jié)點 Pod 就會恢復正常。
?
2、Helm 安裝 Kibana
helm?install?kibana?-f?es-kibana-values.yaml?--version?7.7.1?elastic/kibana
八、查看安裝的應用資源
查看部署完成后各個組件的列表與狀態(tài):
$?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??????????88sPod 信息描述:
- elasticsearch-master:ES 主節(jié)點 Pod;
- elasticsearch-data:ES 數(shù)據(jù)節(jié)點 Pod;
- elasticsearch-client:ES 客戶端節(jié)點 Pod;
- kibana-kibana:Kibana Pod;
十、訪問 Kibana 瀏覽 ElasticSearch 數(shù)據(jù)
由上面我們指定了 Kibana 的 NodePort 端口為 30601,所以這里我們輸入地址:http://nodeIp:30601 訪問 Kibana 界面。
然后我們可以看到,會出現(xiàn)登錄框,讓我們輸出用戶名、密碼,這里我們輸入上面配置的用戶名、密碼elastic/admin@123進行登錄:
登錄成功后就跳轉到 Kibana 主界面:
示例資料:
- https://github.com/zuozewei/blog-example/tree/master/Kubernetes/k8s-ek
總結
以上是生活随笔為你收集整理的data es集群master_Kubernetes Helm3 部署 ElasticSearch amp; Kibana 7 集群的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 秋天青岛有什么好玩的,秋天去青岛需要准备
- 下一篇: java中showconfirmdial