参考:
参考2
参考3
- vim es.yamlapiVersion: policy/v1beta1
- kind: PodDisruptionBudget
- metadata:
- name: elasticsearch-pdb
- spec:
- selector:
- matchLabels:
- app: elasticsearch
- maxUnavailable: 1
- ---
- apiVersion: apps/v1
- kind: StatefulSet
- metadata:
- name: elasticsearch
- spec:
- serviceName: elasticsearch-hs
- replicas: 3
- selector:
- matchLabels:
- app: elasticsearch
- updateStrategy:
- type: RollingUpdate
- podManagementPolicy: Parallel
- template:
- metadata:
- labels:
- app: elasticsearch
- spec:
- affinity:
- podAntiAffinity:
- requiredDuringSchedulingIgnoredDuringExecution:
- - labelSelector:
- matchExpressions:
- - key: "app"
- operator: In
- values:
- - elasticsearch
- topologyKey: "kubernetes.io/hostname"
- containers:
- - name: elasticsearch
- image: harbor.kp.com/keepwork/elasticsearch:7.5.0
- resources:
- limits:
- cpu: 1
- memory: 2Gi
- requests:
- cpu: 0.01
- memory: 2Gi
- ports:
- - containerPort: 9200
- name: rest
- protocol: TCP
- - containerPort: 9300
- name: inter-node
- protocol: TCP
- volumeMounts:
- - name: data
- mountPath: /usr/share/elasticsearch/data
- - name: plugins
- mountPath: /usr/share/elasticsearch/plugins
- env:
- - name: cluster.name
- value: k8s-logs
- - name: node.name
- valueFrom:
- fieldRef:
- fieldPath: metadata.name
- - name: discovery.zen.ping.unicast.hosts
- value: "elasticsearch-0.elasticsearch-hs,elasticsearch-1.elasticsearch-hs,elasticsearch-2.elasticsearch-hs"
- - name: discovery.zen.minimum_master_nodes
- value: "2"
- - name: cluster.initial_master_nodes #此参数es7以上才能设置
- value: elasticsearch-0,elasticsearch-1
- - name: ES_JAVA_OPTS
- value: "-Xms1536m -Xmx1536m"
- - name: TZ
- value: "Asia/Shanghai"
- initContainers:
- - name: fix-permissions-data
- image: registry.cn-hangzhou.aliyuncs.com/caosx-public/busybox:1.28.3
- command: ["sh", "-c", "chown -R 1000:1000 /usr/share/elasticsearch/data"]
- securityContext:
- privileged: true
- volumeMounts:
- - name: data
- mountPath: /usr/share/elasticsearch/data
- - name: fix-permissions-plugins
- image: registry.cn-hangzhou.aliyuncs.com/caosx-public/busybox:1.28.3
- command: ["sh", "-c", "rm -fr /usr/share/elasticsearch/plugins/lost+found && chown -R 1000:1000 /usr/share/elasticsearch/plugins"]
- securityContext:
- privileged: true
- volumeMounts:
- - name: plugins
- mountPath: /usr/share/elasticsearch/plugins
- - name: increase-vm-max-map
- image: registry.cn-hangzhou.aliyuncs.com/caosx-public/busybox:1.28.3
- command: ["sysctl", "-w", "vm.max_map_count=262144"]
- securityContext:
- privileged: true
- - name: increase-fd-ulimit
- image: registry.cn-hangzhou.aliyuncs.com/caosx-public/busybox:1.28.3
- command: ["sh", "-c", "ulimit -n 65536"]
- securityContext:
- privileged: true
- volumeClaimTemplates:
- - metadata:
- name: data
- labels:
- app: elasticsearch
- spec:
- accessModes: [ "ReadWriteOnce" ]
- storageClassName: local
- resources:
- requests:
- storage: 20Gi
- - metadata:
- name: plugins
- labels:
- app: elasticsearch
- spec:
- accessModes: [ "ReadWriteOnce" ]
- storageClassName: local
- resources:
- requests:
- storage: 200Mi
- ---
- kind: Service
- apiVersion: v1
- metadata:
- name: elasticsearch-hs
- labels:
- app: elasticsearch
- spec:
- selector:
- app: elasticsearch
- clusterIP: None
- ports:
- - port: 9300
- targetPort: 9300
- ---
- kind: Service
- apiVersion: v1
- metadata:
- name: elasticsearch-cs
- labels:
- app: elasticsearch
- spec:
- selector:
- app: elasticsearch
- ports:
- - port: 9200
- targetPort: 9200
- ---
- apiVersion: extensions/v1beta1
- kind: Ingress
- metadata:
- name: elasticsearch-ingress
- spec:
- rules:
- - host: elasticsearch.gdcattsoft2.com
- http:
- paths:
- - path: /
- backend:
- serviceName: elasticsearch-cs
- servicePort: 9200