说明
- 仅记录操作过程和部署过程
- 请考虑再三之后再决定是否上生产环境!
- 操作系统使用的
CentOS-7.6.1810 x86_64
- Kubernetes集群版本
v1.14.4
- elastic-operator版本为
0.9.0
- elasticsearch和kibana版本为
7.2.0
- elasticsearch和kibana默认提供HTTPS,其中elasticsearch无法关闭HTTPS
参考文档
Elastic Cloud on Kubernetes Quickstart
项目地址
准备环境
Kubernetes集群
- kubectl版本
v1.11+
- kubectl当前content拥有cluster-admin权限
准备存储
- 出于测试目的,本文使用
emptyDir
- 另外还可以使用
volumeClaimTemplates
作为持久化数据存储
部署ECK
部署elastic-operator、CRD资源、RBAC
1 | kubectl apply -f https://download.elastic.co/downloads/eck/0.9.0/all-in-one.yaml |
检查部署情况
1 | kubectl -n elastic-system get pod |
输出示例
1 | NAME READY STATUS RESTARTS AGE |
部署elasticsearch
编辑YAML文件
1 | apiVersion: elasticsearch.k8s.elastic.co/v1alpha1 |
部署YAML
1 | kubectl apply -f elasticsearch.yaml |
部署kibana
编辑YAML文件
1 | apiVersion: kibana.k8s.elastic.co/v1alpha1 |
部署YAML
1 | kubectl apply -f kibana.yaml |
验证和访问服务
查看elasticsearch
查看Pod
1 | kubectl get pod -l common.k8s.elastic.co/type=elasticsearch |
输出示例
1 | NAME READY STATUS RESTARTS AGE |
查看集群状态
1 | kubectl get elasticsearch |
输出示例
1 | NAME HEALTH NODES VERSION PHASE AGE |
查看secret
1 | kubectl get secret -l common.k8s.elastic.co/type=elasticsearch |
输出示例
1 | NAME TYPE DATA AGE |
查看kibana
查看Pod
1 | kubectl get pod -l common.k8s.elastic.co/type=kibana |
输出示例
1 | NAME READY STATUS RESTARTS AGE |
查看集群状态
1 | kubectl get kibana |
输出示例
1 | NAME HEALTH NODES VERSION AGE |
查看secret
1 | kubectl get secret -l common.k8s.elastic.co/type=kibana |
输出示例
1 | NAME TYPE DATA AGE |
获取用户名密码
默认用户名是elastic
访问elasticsearch和kibana的密码存放在elasticsearc-demo-es-elastic-user
可以通过以下方式获取
1 | ELASTIC_PASSWORD=$(kubectl get secrets elasticsearc-demo-es-elastic-user -o=jsonpath='{.data.elastic}' | base64 --decode) |
访问服务
获取svc
elasticsearch
1 | kubectl get svc -l common.k8s.elastic.co/type=elasticsearch |
输出示例
1 | NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE |
kibana
1 | kubectl get svc -l common.k8s.elastic.co/type=kibana |
输出示例
1 | NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE |
访问elasticsearch
1 | curl -k -u "elastic:${ELASTIC_PASSWORD}" "http://10.96.217.252:9200" |
输出示例
1 | { |
访问kibana
修改svc为NodePort
这种做法比较low,建议走
Ingress Controller
1 | kubectl patch svc kibana-demo-kb-http -p '{"spec":{"type":"NodePort"}}' |
获取端口
1 | kubectl get svc -l common.k8s.elastic.co/type=kibana |
示例输出
1 | NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE |
浏览器访问
https://k8s-master:31364
登录
- 用户名:
elastic
- 密码:上面访问elasticsearch时的密码
创建ingress规则
1 | apiVersion: extensions/v1beta1 |