官方提供了yaml, 用于快速部署 operator 等基本服务
下载链接: https://www.elastic.co/cn/downloads/elastic-cloud-kubernetes
wget <https://download.elastic.co/downloads/eck/1.0.1/all-in-one.yaml>
kubectl apply -f all-in-one.yaml
然后创建 es 节点与 kibana 节点
# file: eck.yaml
apiVersion: elasticsearch.k8s.elastic.co/v1beta1
kind: Elasticsearch
metadata:
namespace: log
name: log-elastic
spec:
version: 7.6.1
http:
tls:
selfSignedCertificate:
disabled: true # 关闭ssl
nodeSets:
- name: default
count: 3
podTemplate:
spec:
affinity:
podAntiAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 100
podAffinityTerm:
labelSelector:
matchLabels:
elasticsearch.k8s.elastic.co/cluster-name: log-elastic
topologyKey: kubernetes.io/hostname # 基于hostname的拓扑
initContainers:
- name: sysctl
securityContext:
privileged: true
command: ['sh', '-c', 'sysctl -w vm.max_map_count=262144']
containers:
- name: elasticsearch
env:
- name: ES_JAVA_OPTS
value: "-Xms1536m -Xmx1536m"
resources:
requests:
memory: 2Gi
cpu: 0.5
limits:
memory: 3Gi
cpu: 2
volumeClaimTemplates:
- metadata:
name: elasticsearch-data
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 100Gi
storageClassName: log-es-local-storage # 填写有效的storageclass
config:
node.master: true # 作为master节点可以参与选举
node.data: true
node.ingest: true
node.store.allow_mmap: false # 关闭内存映射功能
---
apiVersion: kibana.k8s.elastic.co/v1beta1
kind: Kibana
metadata:
namespace: log
name: log-kibana
spec:
version: 7.6.1
http:
tls:
selfSignedCertificate:
disabled: true
count: 1
elasticsearchRef:
name: log-elastic
podTemplate:
spec:
containers:
- name: kibana
env:
- name: ES_JAVA_OPTS
value: "-Xms512m -Xmx1024m"
resources:
requests:
memory: 1Gi
cpu: 0.5
limits:
memory: 2Gi
cpu: 2
执行 kubectl apply -f eck.yaml
创建es集群.
NAME=log-elastic # 集群名字
PASSWORD=$(kubectl get secret $NAME-es-elastic-user -n log -o=jsonpath='{.data.elastic}' | base64 --decode)
如果有启用ssl的话
kubectl get secret "$NAME-es-http-certs-public" -n log -o go-template='{{index .data "tls.crt" | base64decode }}' > tls.crt
# curl -u "elastic:$PASSWORD" -k "<https://localhost:9200>" # 集群启用letls
curl -u "elastic:$PASSWORD" "<http://localhost:9200>"