es-client-deployment.yaml
apiVersion: apps/v1beta1
kind: Deployment
metadata:
name: es-client
namespace: ops
labels:
component: elasticsearch
role: client
spec:
replicas: 2
template:
metadata:
labels:
component: elasticsearch
role: client
spec:
affinity:
podAntiAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 100
podAffinityTerm:
labelSelector:
matchExpressions:
- key: role
operator: In
values:
- client
topologyKey: kubernetes.io/hostname
initContainers:
- name: init-sysctl
image: docker.idc.cedu.cn/.../busybox
command:
- sysctl
- -w
- vm.max_map_count=262144
securityContext:
privileged: true
containers:
- name: es-client
image: docker.idc.cedu.cn/.../elasticsearch:6.7.1_v3
env:
- name: NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
- name: NODE_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: CLUSTER_NAME
value: "k8s_elasticsearch_cluster"
- name: NUMBER_OF_MASTERS
value: "2"
- name: HTTP_CORS_ALLOW_ORIGIN
value: "*"
- name: HTTP_CORS_ENABLE
value: "true"
- name: NETWORK_HOST
value: "0.0.0.0"
- name: MAX_LOCAL_STORAGE_NODES
value: "1"
- name: NODE_INGEST
value: "false"
- name: NODE_MASTER
value: "false"
- name: NODE_DATA
value: "false"
- name: HTTP_ENABLE
value: "true"
- name: ES_JAVA_OPTS
value: -Xms1024m -Xmx1024m
- name: NETWORK_HOST
value: _site_,_lo_
ports:
- containerPort: 9200
name: http
- containerPort: 9300
name: transport
livenessProbe:
tcpSocket:
port: transport
readinessProbe:
httpGet:
path: /_cluster/health
port: http
initialDelaySeconds: 20
timeoutSeconds: 5
volumeMounts:
- name: storage
mountPath: /usr/share/elasticsearch/data
volumes:
- emptyDir:
medium: ""
name: storage
es-data-stateful.yaml
apiVersion: apps/v1beta2
kind: StatefulSet
metadata:
name: es-data-stateful
namespace: ops
labels:
component: elasticsearch
role: data
spec:
serviceName: elasticsearch-data
selector:
matchLabels:
component: elasticsearch
role: data
replicas: 3
updateStrategy:
type: RollingUpdate
template:
metadata:
labels:
component: elasticsearch
role: data
spec:
affinity:
podAntiAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 100
podAffinityTerm:
labelSelector:
matchExpressions:
- key: role
operator: In
values:
- data
topologyKey: kubernetes.io/hostname
terminationGracePeriodSeconds: 10
initContainers:
- name: init-sysctl
image: docker.idc.cedu.cn/.../busybox
command:
- sysctl
- -w
- vm.max_map_count=262144
securityContext:
privileged: true
containers:
- name: es-data
image: docker.idc.cedu.cn/.../elasticsearch:6.7.1_v3
env:
- name: NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
- name: NODE_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: CLUSTER_NAME
value: "k8s_elasticsearch_cluster"
- name: NODE_MASTER
value: "false"
- name: NODE_INGEST
value: "false"
- name: HTTP_ENABLE
value: "false"
- name: NODE_DATA
value: "true"
- name: ES_JAVA_OPTS
value: -Xms1024m -Xmx1024m
- name: NUMBER_OF_MASTERS
value: "2"
- name: HTTP_CORS_ALLOW_ORIGIN
value: "*"
- name: HTTP_CORS_ENABLE
value: "false"
- name: NETWORK_HOST
value: "0.0.0.0"
- name: MAX_LOCAL_STORAGE_NODES
value: "1"
ports:
- containerPort: 9300
name: transport
livenessProbe:
tcpSocket:
port: transport
initialDelaySeconds: 20
periodSeconds: 10
volumeMounts:
- name: storage
mountPath: /usr/share/elasticsearch/data
#volumes:
#- name: storage
# emptyDir: {}
volumeClaimTemplates:
- metadata:
name: storage
spec:
storageClassName: local-storage
accessModes: [ ReadWriteOnce ]
resources:
requests:
storage: 150Gi
es-master-stateful.yaml
apiVersion: apps/v1beta1
kind: StatefulSet
metadata:
name: es-master-stateful
namespace: ops
labels:
component: elasticsearch
role: master
spec:
serviceName: elasticsearch-master
selector:
matchLabels:
component: elasticsearch
role: master
replicas: 3
template:
metadata:
labels:
component: elasticsearch
role: master
spec:
affinity:
podAntiAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 100
podAffinityTerm:
labelSelector:
matchExpressions:
- key: role
operator: In
values:
- master
topologyKey: kubernetes.io/hostname
initContainers:
- name: init-sysctl
image: docker.idc.cedu.cn/.../busybox
command:
- sysctl
- -w
- vm.max_map_count=262144
securityContext:
privileged: true
containers:
- name: es-master
image: docker.idc.cedu.cn/.../elasticsearch:6.7.1_v3
env:
- name: NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
- name: NODE_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: CLUSTER_NAME
value: "k8s_elasticsearch_cluster"
- name: NUMBER_OF_MASTERS
value: "2"
- name: HTTP_CORS_ALLOW_ORIGIN
value: "*"
- name: HTTP_CORS_ENABLE
value: "false"
- name: NETWORK_HOST
value: "0.0.0.0"
- name: MAX_LOCAL_STORAGE_NODES
value: "1"
- name: NODE_MASTER
value: "true"
- name: NODE_INGEST
value: "false"
- name: NODE_DATA
value: "false"
- name: HTTP_ENABLE
value: "false"
- name: ES_JAVA_OPTS
value: -Xms1024m -Xmx1024m
ports:
- containerPort: 9300
name: transport
livenessProbe:
tcpSocket:
port: transport
volumeMounts:
- name: storage
mountPath: /usr/share/elasticsearch/data
volumes:
- name: storage
emptyDir: {}
#volumeClaimTemplates:
#- metadata:
# name: storage
# spec:
# storageClassName: local-storage
# accessModes: [ ReadWriteOnce ]
# resources:
# requests:
# storage: 10Gi
es-svc.yaml
apiVersion: v1
kind: Service
metadata:
name: elasticsearch-discovery
namespace: ops
labels:
component: elasticsearch
role: master
spec:
selector:
component: elasticsearch
role: master
ports:
- name: transport
port: 9300
protocol: TCP
---
apiVersion: v1
kind: Service
metadata:
name: elasticsearch-client
namespace: ops
labels:
component: elasticsearch
role: client
spec:
selector:
component: elasticsearch
role: client
ports:
- name: http
port: 9200
#type: LoadBalancer
---
apiVersion: v1
kind: Service
metadata:
name: elasticsearch-master
namespace: ops
labels:
component: elasticsearch
role: master
spec:
ports:
- port: 9300
name: transport
clusterIP: None
selector:
component: elasticsearch
role: master
---
apiVersion: v1
kind: Service
metadata:
name: elasticsearch-data
namespace: ops
labels:
component: elasticsearch
role: data
spec:
ports:
- port: 9300
name: transport
clusterIP: None
selector:
component: elasticsearch
role: data
kibana_deployment.yaml
apiVersion: v1
kind: Service
metadata:
name: kibana
namespace: ops
labels:
app: kibana
spec:
ports:
- port: 5601
selector:
app: kibana
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: kibana
namespace: ops
labels:
app: kibana
spec:
selector:
matchLabels:
app: kibana
template:
metadata:
labels:
app: kibana
spec:
containers:
- name: kibana
image: docker.idc.cedu.cn/.../kibana:6.7.1_v1
resources:
limits:
cpu: 1000m
requests:
cpu: 100m
env:
- name: elasticsearch.url
value: http://elasticsearch-client.ops.svc.idc.cedu.cn:9200
ports:
- containerPort: 5601
readinessProbe:
tcpSocket:
port: 5601
timeoutSeconds: 10
initialDelaySeconds: 5
livenessProbe:
tcpSocket:
port: 5601
timeoutSeconds: 10
initialDelaySeconds: 5
volumeMounts:
- name: kibana
mountPath: "/usr/share/kibana/config"
volumes:
- name: kibana
configMap:
name: kibana-config
elasticsearch.yaml
# 生成configmap,进行配置热加载
cluster:
name: ${CLUSTER_NAME}
node:
master: ${NODE_MASTER}
data: ${NODE_DATA}
name: ${NODE_NAME}
ingest: ${NODE_INGEST}
max_local_storage_nodes: ${MAX_LOCAL_STORAGE_NODES}
network.host: ${NETWORK_HOST}
path:
data: /usr/share/elasticsearch/data
logs: /usr/share/elasticsearch/logs
bootstrap:
memory_lock: ${MEMORY_LOCK}
http:
enabled: ${HTTP_ENABLE}
compression: true
cors:
enabled: ${HTTP_CORS_ENABLE}
allow-origin: ${HTTP_CORS_ALLOW_ORIGIN}
discovery:
zen:
ping.unicast.hosts: ${DISCOVERY_SERVICE}
minimum_master_nodes: ${NUMBER_OF_MASTERS}
kibana.yaml
# 生成configmap,进行配置热加载
server.name: "kibana"
server.host: "0"
elasticsearch.hosts: [ "http://elasticsearch-client.ops.svc.idc.cedu.cn:9200" ]
xpack.monitoring.ui.container.elasticsearch.enabled: true