5. elasticsearch6.2.4 和kibana部署

5.1 因为作者是用来学习使用,打算部署到kubernetes中,部署到同一个pod中,方便管理。

首先拉取镜像es和kibana:
9d77v/elasticsearch:6.2.4
wangxiaopeng65/kibana:6.2.4

5.2 docker启动参考
* 节点node101
   命令:~~docker run -p 9200:9200 -p 9300:9300  -e ES_JAVA_OPTS="-Xms256m -Xmx256m"  -e "discovery.type=single-node" \ 
    -v /home/shenshuxin/appsdata/elasticsearch:/usr/share/elasticsearch \ 
    elasticsearch:7.16.3~~
* 节点node101
   命令:~~docker run -p 5601:5601  -e ELASTICSEARCH_URL=http://192.168.0.101:30300 \
    -v /home/shenshuxin/appsdata/kibana:/usr/share/kibana \ 
    kibana:7.16.3~~
* 启动命令:   运行于k8s 
5.3 k8s启动yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: elasticsearch6
  name: ssx-elasticsearch6-dm
  namespace: ssx
spec:
  replicas: 1 
  selector: #标签选择器,与上面的标签共同作用
    matchLabels: #选择包含标签app:mysql的资源
       app: elasticsearch6
  template: #这是选择或创建的Pod的模板
    metadata: #Pod的元数据
      labels: #Pod的标签,上面的selector即选择包含标签app:mysql的Pod
        app: elasticsearch6
    spec: #期望Pod实现的功能(即在pod中部署)
      hostAliases: #给pod添加hosts网络
      - ip: "192.168.0.101"
        hostnames:
        - "node101"
      - ip: "192.168.0.102"
        hostnames:
        - "node102"
      - ip: "192.168.0.103"
        hostnames:
        - "node103"
      containers: #生成container,与docker中的container是同一种
      - name: ssx-elasticsearch6-c
        image: 9d77v/elasticsearch:6.2.4 #配置阿里的镜像,直接pull即可
        ports:
        - containerPort: 9200  # 开启本容器的80端口可访问
        - containerPort: 9300  # 开启本容器的80端口可访问
        env:   #容器运行前需设置的环境变量列表
        - name: ES_JAVA_OPTS  #环境变量名称
          value: "-Xms256m -Xmx256m" #环境变量的值 这是mysqlroot的密码 因为是纯数字,需要添加双引号 不然编译报错
        - name: discovery.type  #环境变量名称
          value: "single-node" #环境变量的值 这是mysqlroot的密码 因为是纯数字,需要添加双引号 不然编译报错
        volumeMounts:
        - mountPath: /usr/share/elasticsearch/data   #这是mysql容器内保存数据的默认路径
          name: c-v-path-elasticsearch-data
        - mountPath: /usr/share/elasticsearch/logs   #这是mysql容器内保存数据的默认路径
          name: c-v-path-elasticsearch-logs
        - mountPath: /usr/share/elasticsearch/.cache   #这是mysql容器内保存数据的默认路径
          name: c-v-path-elasticsearch-cache
        - mountPath: /etc/localtime   #时间同步
          name: c-v-path-lt

      - name: ssx-kibana-c
        image: wangxiaopeng65/kibana:6.2.4 #配置阿里的镜像,直接pull即可
        ports:
        - containerPort: 5601  # 开启本容器的80端口可访问
        env:   #容器运行前需设置的环境变量列表
        - name: ELASTICSEARCH_URL  #环境变量名称
          value: "http://localhost:9200" #环境变量的值 这是mysqlroot的密码 因为是纯数字,需要添加双引号 不然编译报错
        volumeMounts:
        - mountPath: /usr/share/kibana/data2   #无用,我先看看那些挂载需要
          name: c-v-path-kibana
        - mountPath: /etc/localtime   #时间同步
          name: c-v-path-lt
      volumes:
      - name: c-v-path-elasticsearch-data #和上面保持一致 这是本地的文件路径,上面是容器内部的路径
        hostPath:
          path: /home/app/apps/k8s/for_docker_volume/elk/elasticsearch6/data  #此路径需要实现创建 注意要给此路径授权777权限 不然pod访问不到
      - name: c-v-path-elasticsearch-logs #和上面保持一致 这是本地的文件路径,上面是容器内部的路径
        hostPath:
          path: /home/app/apps/k8s/for_docker_volume/elk/elasticsearch6/logs  #此路径需要实现创建 注意要给此路径授权777权限 不然pod访问不到
      - name: c-v-path-elasticsearch-cache #和上面保持一致 这是本地的文件路径,上面是容器内部的路径
        hostPath:
          path: /home/app/apps/k8s/for_docker_volume/elk/elasticsearch6/.cache  #此路径需要实现创建 注意要给此路径授权777权限 不然pod访问不到
      - name: c-v-path-kibana #和上面保持一致 这是本地的文件路径,上面是容器内部的路径
        hostPath:
          path: /home/app/apps/k8s/for_docker_volume/elk/kibana  #此路径需要实现创建 注意要给此路径授权777权限 不然pod访问不到
      - name: c-v-path-lt
        hostPath:
          path: /etc/localtime   #时间同步
      nodeSelector: #把此pod部署到指定的node标签上
        kubernetes.io/hostname: node101
---
apiVersion: v1
kind: Service
metadata:
  labels:
   app: elasticsearch6
  name: ssx-elasticsearch6-sv
  namespace: ssx
spec:
  ports:
  - port: 9000 #我暂时不理解,这个设置 明明没用到?
    name: ssx-elasticsearch6-last9200
    protocol: TCP
    targetPort: 9200 # 容器nginx对外开放的端口 上面的dm已经指定了
    nodePort: 30600 #外网访问的端口

  - port: 9010 #我暂时不理解,这个设置 明明没用到?
    name: ssx-elasticsearch6-last9300
    protocol: TCP
    targetPort: 9300 # 容器nginx对外开放的端口 上面的dm已经指定了
    nodePort: 30601 #外网访问的端口

  - port: 9011 #我暂时不理解,这个设置 明明没用到?
    name: ssx-kibana
    protocol: TCP
    targetPort: 5601 # 容器nginx对外开放的端口 上面的dm已经指定了
    nodePort: 30602 #外网访问的端口

  selector:
    app: elasticsearch6
  type: NodePort 


kubectl apply -f xx.yaml

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐