1. 程式人生 > 實用技巧 >記錄k8s安裝es

記錄k8s安裝es

apiVersion: policy/v1beta1
kind: PodDisruptionBudget
metadata:
  name: elasticsearch-pdb
  namespace: test
spec:
  selector:
    matchLabels:
      app: elasticsearch
  maxUnavailable: 1
---
apiVersion: apps/v1 
kind: StatefulSet
metadata:
  name: elasticsearch
  namespace: test 
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: 172.168.27.239/devops/elasticsearch:7.7.0        #支援7.7.0,7.3.0,6.4.2
        resources:
            limits:
              cpu: 1
              memory: 2Gi
            requests:
              cpu: 0.01
              memory: 1Gi
        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: 172.168.27.239/devops/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: 172.168.27.239/devops/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: 172.168.27.239/devops/busybox:1.28.3
        command: ["sysctl", "-w", "vm.max_map_count=262144"]
        securityContext:
          privileged: true
      - name: increase-fd-ulimit
        image: 172.168.27.239/devops/busybox:1.28.3
        command: ["sh", "-c", "ulimit -n 65536"]
        securityContext:
          privileged: true
  volumeClaimTemplates:
  - metadata:
      name: data
      labels:
        app: elasticsearch
    spec:
      accessModes: [ "ReadWriteOnce" ]
      storageClassName: ceph-rbd-gd-1
      resources:
        requests:
          storage: 5Gi
  - metadata:
      name: plugins
      labels:
        app: elasticsearch
    spec:
      accessModes: [ "ReadWriteOnce" ]
      storageClassName: ceph-rbd-gd-1
      resources:
        requests:
          storage: 200Mi
---
kind: Service
apiVersion: v1
metadata:
  name: elasticsearch-hs
  namespace: test
  labels:
    app: elasticsearch
spec:
  selector:
    app: elasticsearch
  clusterIP: None
  ports:
    - port: 9300
      targetPort: 9300
---
kind: Service
apiVersion: v1
metadata:
  name: elasticsearch-cs
  namespace: test
  labels:
    app: elasticsearch
spec:
  selector:
    app: elasticsearch
  ports:
    - port: 9200
      targetPort: 9200
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: elasticsearch-ingress
  namespace: test
spec:
  rules:
  - host: elasticsearch.gdcattsoft2.com
    http:
      paths:
      - path: /
        backend:
          serviceName: elasticsearch-cs
          servicePort: 9200

---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: kibana
  namespace: test
spec:
  rules:
  - host: kibana.gdcattsoft2.com
    http:
      paths:
      - path: /
        backend:
          serviceName: kibana
          servicePort: 5601
---
apiVersion: v1
kind: Service
metadata:
  name: kibana
  namespace: test
  labels:
    app: kibana
spec:
  ports:
  - port: 5601
    targetPort: 5601
  selector:
    app: kibana
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: kibana 
  namespace: test
  labels:
    app: kibana
spec:
  selector:
    matchLabels:
      app: kibana
  template:
    metadata:
      labels:
        app: kibana
    spec:
      containers:
      - name: kibana 
        image: 172.168.27.239/devops/kibana:7.7.0    #支援7.7.0,7.3.0,6.4.2
        resources:
          limits:
            cpu: 1
            memory: 1Gi
          requests:
            cpu: 0.1
            memory: 256Mi
        env:
          #- name: ELASTICSEARCH_URL                     #7以下版本配置URL 
          #  value: http://elasticsearch-cs:9200
          - name: ELASTICSEARCH_HOSTS			 #7以上版本配置HOSTS
            value: http://elasticsearch-cs:9200
          - name: TZ
            value: "Asia/Shanghai"
        ports:
        - containerPort: 5601