在kubernetes k8s上部署elasticsearch es单节点或集群
来源:原创
时间:2021-04-08
作者:脚本小站
分类:Linux
这里用nfs作为存储:
https://www.scriptjc.com/article/1147
官方文档:单节点或集群配置文档如下。
https://www.elastic.co/guide/en/elasticsearch/reference/6.8/docker.html https://www.elastic.co/guide/en/elasticsearch/reference/7.1/docker.html https://www.elastic.co/guide/en/elasticsearch/reference/8.1/docker.html
官方镜像:
https://hub.docker.com/_/elasticsearch https://hub.docker.com/_/kibana
单节点:注意目录权限。
apiVersion: apps/v1 kind: StatefulSet metadata: name: es namespace: logging spec: serviceName: elasticsearch replicas: 1 selector: matchLabels: app: elasticsearch template: metadata: labels: app: elasticsearch spec: nodeSelector: eks.amazonaws.com/nodegroup: node-8c-32G initContainers: - name: increase-vm-max-map image: busybox command: ["sysctl", "-w", "vm.max_map_count=262144"] securityContext: privileged: true - name: increase-fd-ulimit image: busybox command: ["sh", "-c", "ulimit -n 65536"] securityContext: privileged: true containers: - name: elasticsearch image: docker.elastic.co/elasticsearch/elasticsearch:6.8.23 ports: - name: rest containerPort: 9200 resources: limits: cpu: 1000m memory: 2G requests: cpu: 1000m memory: 1G volumeMounts: - name: data mountPath: /usr/share/elasticsearch/data env: - name: node.name valueFrom: fieldRef: fieldPath: metadata.name - name: discovery.type value: single-node - name: ES_JAVA_OPTS value: "-Xms1024m -Xmx1024m" - name: network.host value: "0.0.0.0" volumeClaimTemplates: - metadata: name: data labels: app: elasticsearch spec: accessModes: - "ReadWriteOnce" storageClassName: managed-nfs-storage resources: requests: storage: 30Gi --- kind: Service apiVersion: v1 metadata: name: elasticsearch namespace: logging labels: app: elasticsearch spec: selector: app: elasticsearch clusterIP: None ports: - port: 9200 name: http-rest
集群:
apiVersion: apps/v1 kind: StatefulSet metadata: name: es namespace: logging spec: serviceName: elasticsearch replicas: 3 selector: matchLabels: app: elasticsearch template: metadata: labels: app: elasticsearch spec: initContainers: - name: increase-vm-max-map image: busybox command: ["sysctl", "-w", "vm.max_map_count=262144"] securityContext: privileged: true - name: increase-fd-ulimit image: busybox command: ["sh", "-c", "ulimit -n 65536"] securityContext: privileged: true containers: - name: elasticsearch image: docker.elastic.co/elasticsearch/elasticsearch:6.8.23 ports: - name: rest containerPort: 9200 - name: inter containerPort: 9300 resources: limits: cpu: 1000m requests: cpu: 1000m volumeMounts: - name: data mountPath: /usr/share/elasticsearch/data env: - name: cluster.name value: k8s-logs - name: node.name valueFrom: fieldRef: fieldPath: metadata.name - name: cluster.initial_master_nodes value: "es-0,es-1,es-2" - name: discovery.zen.minimum_master_nodes value: "2" - name: discovery.seed_hosts value: "elasticsearch" - name: ES_JAVA_OPTS value: "-Xms1024m -Xmx1024m" - name: network.host value: "0.0.0.0" volumeClaimTemplates: - metadata: name: data labels: app: elasticsearch spec: accessModes: - "ReadWriteOnce" resources: requests: storage: 10Gi --- kind: Service apiVersion: v1 metadata: name: elasticsearch namespace: logging labels: app: elasticsearch spec: selector: app: elasticsearch clusterIP: None ports: - port: 9200 name: http-rest - port: 9300 name: http-inter-node
kibana:
apiVersion: v1 kind: Service metadata: name: kibana namespace: logging labels: app: kibana spec: ports: - port: 5601 type: NodePort selector: app: kibana --- apiVersion: apps/v1 kind: Deployment metadata: name: kibana namespace: logging labels: app: kibana spec: selector: matchLabels: app: kibana template: metadata: labels: app: kibana spec: containers: - name: kibana image: docker.elastic.co/kibana/kibana:6.8.23 resources: limits: cpu: 1000m memory: 1Gi requests: cpu: 1000m memory: 512Mi env: - name: ELASTICSEARCH_HOSTS value: http://elasticsearch:9200 ports: - containerPort: 5601
参考:
https://zhuanlan.zhihu.com/p/428392678