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