容器技术
ubuntu使用APT安装docker并指定版本
Helm部署与使用
Helm常用命令
从Helm仓库创建应用流程示例
Helm部署与使用
K8S中部署mysql-ha高可用集群
helm启动mysql-ha
helm几个常用仓库
Kubernetes使用helm部署Mysql-Ha
k8s入门:Helm 构建 MySQL
docker批量修改tag(批量push)
k8s之yaml文件详解
将 MySQL 通过 bitpoke/mysql-operator 部署到 k8s 内部
k8s pvc扩容:pvc创建后扩容
K8S性能分析
部署Metrics Server
Kubernetes集群搭建
kubespray 部署常见问题和优化汇总
kubernetes-sigs/kubespray at release-2.15
K8S-pod配置文件详解
KubeSphere知识库
在 Kubernetes 上最小化安装 KubeSphere
卸载 KubeSphere 和 Kubernetes
KubeSphere 应用商店
修改pod中容器的时区
k8s之Pod安全策略
Harbor 登陆失败,用户名或者密码不正确。405 Not Allowed
Docker-leanote_n1
kubesphere/kubekey
Kubernetes Static Pod (静态Pod)
kubernets kube-proxy的代理 iptables和ipvs - 30岁再次出发 - 博客园
k8s生产实践之获取客户端真实IP - SSgeek - 博客园
kube-proxy ip-tables故障解决
k8s入门:Helm 构建 MySQL
docker批量修改tag(批量push)
prometheus operator 监控redis-exporter
Helm3 安装 ElasticSearch & Kibana 7.x 版本
kubernete强力删除namespace_redis删除namespace命令
EFK (Elasticsearch + Fluentd + Kibana) 日志分析系统
k8s日志收集实战(无坑)
fluentd收集k8s集群pod日志
Elasticsearch+Fluentd+Kibana 日志收集系统的搭建
TKE/EKS之configmap,secret只读挂载
K8s基于Reloader的ConfigMap/Secret热更新
使用 Reloader 实现热部署_k8s reloader
k8s使用Reloader实现更新configmap后自动重启pod
在 Kubernetes 上对 gRPC 服务器进行健康检查 | Kubernetes
Kubernetes ( k8s ) gRPC服务 健康检查 ( livenessProbe ) 与 就绪检查 ( readinessProbe )
排查kubernetes中高磁盘占用pod
helm 安装 MongoDB 集群
helm 安装 Redis 1 主 2 从 3哨兵
【k8s】使用 Reloader 实现热部署
k8s证书过期,更新后kubelet启动失败
kubeadm证书/etcd证书过期处理
三种监控 Kubernetes 集群证书过期方案
K8s 集群(kubeadm) CA 证书过期解决方案
k8s调度、污点、容忍、不可调度、排水、数据卷挂载
5分钟搞懂K8S的污点和容忍度(理论+实战)
Kubernetes进阶-8基于Istio实现微服务治理
macvlan案例配置
快速解决Dockerhub镜像站无法访问问题
info_scan开源漏洞扫描主系统部署
本文档使用 MrDoc 发布
-
+
首页
Helm3 安装 ElasticSearch & Kibana 7.x 版本
文章转载自:http://www.mydlq.club/article/13/ 系统环境: helm [版本](https://jiuaidu.com/jianzhan/tag/4666/):v3.2.1 Kubernetes 版本:1.18.3 ElasticSearch Chart 版本:[7](https://jiuaidu.com/jianzhan/tag/4030/).7.1 Kibana & ElasticSearch 版本:7.7.1 ## 一、简介 Helm: Helm3(注意:helm 2.0 版本与 3.0 有很大区别)是与 kubernetes 的 kube-apiserver 进行交互,通过 Kubernetes API 控制应用启动、更新与删除的客户端。 Elasticsearch: ElasticSearch 是一个分布式的搜索和分析引擎,可以用于全文检索、结构化检索和分析,并能将这三者结合起来。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,[安装](https://jiuaidu.com/jianzhan/tag/3663/)使用方便,轻松扩展服务节点,更能用于日志收集快速检索等等一些列功能。 Kibana: Kibana 是一个为 ElasticSearch 平台分析和可视化的开源平台,使用 Kibana 能够搜索、展示存储在 ElasticSearch 中的索引数据。使用它可以很方便用图表、表格、地图展示和分析数据。 ## 二、环境配置 ## Kubernetes 节点信息 ## Elastic 栈 Chart 版本说明 ## ElasticSearch 安装资源要求 ## ElasticSearch 集群环境信息 ## Kibana 环境信息 ## 三、配置 StorageClass 配置一个 SotrageClass,用于创建 Kubernetes 存储用的 PV、PVC,因为 ElasticSearch 部署的是 StatefulSet 类型资源,涉及到自动卷分配,需要一个存储卷分配服务。例如,使用 NFS 存储就需要 NFS 共享网络卷的 NFS-Provisioner 服务,能够帮我们自动创建存储空间及 PV 与 PVC,请确认 Kubernetes 集群中存在这样的卷分配服务。 例如,本人使用的是 NFS 存储卷,且存在 NFS Provisioner 服务,则可以按以下配置 StorageClass,如下: ``` kind: StorageClass apiVersion: storage.k8s.io/v1 metadata: name: nfs-storage provisioner: nfs-client ## 需要和 NFS-Provisioner 服务提供者提供的配置的保持一致 allowVolumeExpansion: true reclaimPolicy: Delete ``` 其他存储卷系统请自行查询如何配置 StorageClass,当然也可以提前设置 PVC,然后在 Heml 配置参数文件 values.yaml 中指定要用的 PVC 名称。 > 实践操作时使用rook-ceph提供的cephfs ## 四、提前下载镜像 提前将要部署的应用的镜像下载,避免安装时因为镜像下载过慢而导致安装失败。这里我们主要用到的两个镜像,下载操作如下: ``` ## 拉取 elasticsearch 镜像 $ docker pull elasticsearch:7.7.1 ## 拉取 kibana 镜像 $ docker pull kibana:7.7.1 ``` ## 五、创建集群证书 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、添加证书到 Kubernetes ``` # 添加证书 $ kubectl create secret -n mydlqcloud generic elastic-certificates --from-file=elastic-certificates.p12 # 设置集群用户名密码,用户名不建议修改 $ kubectl create secret -n mydlqcloud generic elastic-credentials \ --from-literal=username=elastic --from-literal=password=mydlq123 ``` ## 六、配置应用参数 通过 Helm 安装 ElasticSearch、Kibana 需要事先创建一个带有配置参数的 values.yaml 文件。然后再执行 Helm install 安装命令时,指定使用此文件。 1、创建 ElasticSearch Master 安装的配置文件 创建 es-master-values.yaml 文件 ``` $ vi 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 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" ##容忍全部污点 ``` 2、创建 ElasticSearch Data 安装的配置文件 创建 es-data-values.yaml 文件 ``` $ vi 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 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" ##容忍全部污点 ``` 3、创建 ElasticSearch Client 安装的配置文件 创建 es-data-values.yaml 文件 ``` $ vi 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" ``` 4、创建 Kibana 安装的配置文件 创建 kibana-values.yaml 文件 ``` $ vi 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: "500m" memory: "1Gi" limits: cpu: "500m" memory: "1Gi" # ============配置 Kibana 参数============ ## kibana 配置中添加语言配置,设置 kibana 为中文 kibanaConfig: kibana.yml: | i18n.locale: "zh-CN" # ============Service 配置============ service: type: NodePort nodePort: "30601" ``` ## 七、Helm 安装 ElasticSearch、Kibana ElasticSearch 与 Kibana 的 Helm Chart 模板是 ES 官方 Github 获取的,它的 Github 地址为 https://github.com/elastic/helm-charts 可以访问该地址了解更多信息。 这里我们只介绍下如何使用 Helm 安装 ElasticSearch 与 Kibana 应用,操作如下: 1、Helm 增加 Elastic 仓库 ``` $ helm repo add elastic https://helm.elastic.co ``` 2、Helm 安装 ElasticSearch ElaticSearch 安装需要安装三次,分别安装 ElasticSearch Master、ElasticSearch Data、ElasticSearch Client 三组,安装的第一组 ElasticSearch 作为 Master 角色节点,负责集群间的管理工作;安装的第二组 ElasticSearch 作为 Data 节点,负责存储数据;安装的第三组 ElasticSearch 作为 Client 节点,负责代理 ElasticSearch Cluster 集群,负载均衡。 ElasticSearch 安装部署如下: \-f:指定部署配置文件 --version:指定使用的 Helm Chart 版本号 \--namespace:指定部署应用的 Namespace 空间 > 在安装 Master 节点后 Pod 启动时候会抛出异常,就绪探针探活失败,这是个正常现象。在执行安装 Data 节点后 Master 节点 Pod 就会恢复正常。 ``` ## 安装 ElasticSearch Master 节点 $ helm install elasticsearch-master -f es-master-values.yaml --namespace mydlqcloud --version 7.7.1 elastic/elasticsearch ## 安装 ElasticSearch Data 节点 $ helm install elasticsearch-data -f es-data-values.yaml --namespace mydlqcloud --version 7.7.1 elastic/elasticsearch ## 安装 ElasticSearch Client 节点 $ helm install elasticsearch-client -f es-client-values.yaml --namespace mydlqcloud --version 7.7.1 elastic/elasticsearch ``` 3、Helm 安装 Kibana ``` $ helm install kibana -f kibana-values.yaml --namespace mydlqcloud --version 7.7.1 elastic/kibana ``` ## 八、查看安装的应用资源 查看部署完成后各个组件的列表与状态: ``` $ kubectl get service,pod -n mydlqcloud | grep -E 'elasticsearch|kibana' service/elasticsearch-client NodePort 10.111.34.166 <none> 9200:30200/TCP,9300:30022/TCP service/elasticsearch-client-headless ClusterIP None <none> 9200/TCP,9300/TCP service/elasticsearch-data ClusterIP 10.101.38.61 <none> 9200/TCP,9300/TCP service/elasticsearch-data-headless ClusterIP None <none> 9200/TCP,9300/TCP service/elasticsearch-master ClusterIP 10.98.230.101 <none> 9200/TCP,9300/TCP service/elasticsearch-master-headless ClusterIP None <none> 9200/TCP,9300/TCP service/kibana-kibana NodePort 10.106.53.52 <none> 5601:30601/TCP pod/elasticsearch-client-0 1/1 Running 0 pod/elasticsearch-data-0 1/1 Running 0 pod/elasticsearch-master-0 1/1 Running 0 pod/elasticsearch-master-1 1/1 Running 0 pod/elasticsearch-master-2 1/1 Running 0 pod/kibana-kibana-5658b7b899-x5265 1/1 Running 0 ``` Pod 信息描述: elasticsearch-master:ES 主节点 Pod; elasticsearch-data:ES 数据节点 Pod; elasticsearch-client: ES 客户端节点 Pod; kibana-kibana:Kibana Pod; ## 九、访问 Kibana 浏览 ElasticSearch 数据 由上面我们指定了 Kibana 的 NodePort 端口为 30601 而我的 Kubernetes 集群地址为 192.168.2.11,所以这里我们输入地址: http://192.168.2.11:30601 访问 Kibana 界面。 然后我们可以看到,会出现登录框,让我们输出用户名、密码,这里我们输入上面配置的用户名、密码 elastic/mydlq123 进行登录: 登录成功后就跳转到 Kibana 主界面: ## Helm3 安装 ElasticSearch & Kibana 7.x 版本的相关教程结束。
adouk
2023年4月6日 15:01
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码