elasticsearch和kibana部署代码

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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Elasticsearch是一个流行的开源分布式搜索和分析引擎,用于实时处理、存储和检索大量数据。它的核心功能是提供快速、可扩展的全文搜索能力。以下是Elasticsearch部署和应用的一些基本步骤和应用场景: 1. **部署**: - **安装**: Elasticsearch支持多种操作系统(如Linux、macOS、Windows),可以从官方网站下载并按照说明进行安装。 - **配置**: 配置文件`elasticsearch.yml`是关键,需要设置集群名称、节点数量、网络地址等信息。 - **集群设置**: 可以选择单节点模式或多节点模式,使用`elasticsearch-plugin install`安装插件如kopf(用于Kubernetes集成)。 - **安全设置**: 考虑SSL/TLS以保护通信,设置访问控制(如Kerberos或HTTP认证)。 2. **应用**: - **数据索引**: 将结构化或半结构化的数据导入到Elasticsearch中,创建索引并定义映射(mappings)。 - **查询与分析**: 使用RESTful API或者像Elasticsearch Query DSL这样的语言进行复杂搜索、聚合和分析。 - **日志管理**: Elasticsearch常用于收集和分析日志数据,提供实时监控和警报功能。 - **实时应用搜索**: 适用于电商、社交网络、内容管理系统等场景,提供实时搜索建议和搜索结果排序。 - **文档归档**: 存储大量历史数据,方便检索和数据分析。 3. **工具与集成**: - Kibana: 作为Elasticsearch的可视化平台,用于探索和分析数据。 - Logstash: 数据管道组件,常用于数据接入和预处理。 - Beats: 如Filebeat、Winlogbeat,用于收集系统日志和其他数据源。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值