二进制安装kubernetes v1.11.2 (第十九章 部署 EFK 插件)

继续前一章部署。

部署 EFK 插件

19.1 介绍

EFK,即 elasticsearch,kibana,fluentd

19.2 下载二进制文件,参考 第三章

EFK 插件位于压缩包的 kubernetes/cluster/addons/fluentd-elasticsearch/ 目录下

[root@k8s-m1 influxdb]# cd /opt/root/k8s/v1.11.2/kubernetes/cluster/addons/fluentd-elasticsearch/
[root@k8s-m1 fluentd-elasticsearch]# ls *.yaml
es-service.yaml  es-statefulset.yaml  fluentd-es-configmap.yaml  fluentd-es-ds.yaml  kibana-deployment.yaml  kibana-service.yaml

19.3 下载 elasticserach 和 kibana 镜像

docker pull registry.cn-hangzhou.aliyuncs.com/acs-sample/kibana:6.1.3
docker pull registry.cn-hangzhou.aliyuncs.com/acs-sample/elasticsearch:6.1.3

19.4 修改es-statefulset.yaml配置文件,重建镜像

1.修改es-statefulset.yaml文件,让elasticsearch启动并暂停。注:es的镜像是用centos做的,容器异常退出的时候,也可以在 yaml 里面 加入/sbin/init命令运行容器
      containers:
      - image: pull registry.cn-hangzhou.aliyuncs.com/acs-sample/elasticsearch:6.1.3
        command: ["/sbin/init"]
2.把config/jvm.options内容复制一份到/opt/root/k8s/v1.11.2/kubernetes/cluster/addons/fluentd-elasticsearch/es-image/config,并修改-Xms、-Xmx的值为200m
3.在/opt/root/k8s/v1.11.2/kubernetes/cluster/addons/fluentd-elasticsearch/es-image/目录下创建一个Dockerfile文件,内容如下,在同级目录也创建一个BUILD空文件
  FROM registry.cn-hangzhou.aliyuncs.com/acs-sample/elasticsearch:6.1.3
  COPY config/jvm.options config/
4.重新生成镜像
/opt/k8s/bin/docker build -t myself/images/elasticsearch:v2.0.1 .
5.修改es-statefulset.yaml,注释掉刚才的command: ["/sbin/init"],修改image为myself/images/elasticsearch:v2.0.1
6.把xpack插件功能打开

env:
- name: ELASTICSEARCH_URL
value: http://elasticsearch-logging:9200
- name: SERVER_BASEPATH
value: /api/v1/namespaces/kube-system/services/kibana-logging/proxy
- name: XPACK_MONITORING_ENABLED
value: "true"
- name: XPACK_SECURITY_ENABLED
value: "true"

19.5 修改 fluentd-es-ds.yaml 的 images 地址

image: registry.cn-hangzhou.aliyuncs.com/google_containers/fluentd-elasticsearch:v2.0.4

19.6 修改 kibana-deployment.yaml 配置文件

1.参考步骤 19.4,把kibana:6.1.3镜像内的 config/kibana.yml 文件复制到node的/opt/config/6.1.3_kibana/config/kibana.yml目录
2.修改内容
---
# Default Kibana configuration from kibana-docker.
server.name: kibana
server.host: "0"
elasticsearch.url: http://elasticsearch-logging:9200
elasticsearch.username: elastic
elasticsearch.password: changeme
xpack.monitoring.ui.container.elasticsearch.enabled: true
3.在/opt/config/6.1.3_kibana/config/下创建Dockerfile文件,内容如下,在同级目录也创建一个BUILD空文件
[root@k8s-n1 6.1.3_kibana]# cat Dockerfile 
FROM registry.cn-hangzhou.aliyuncs.com/acs-sample/kibana:6.1.3
COPY config/kibana.yml run.sh config/4.重新生成镜像
/opt/k8s/bin/docker build -t myself/images/kibana:2.0.0 .

19.7 修改 kibana-service.yaml,添加 nodePort

[root@k8s-m1 fluentd-elasticsearch]# more kibana-service.yaml 
apiVersion: v1
kind: Service
metadata:
  name: kibana-logging
  namespace: kube-system
  labels:
    k8s-app: kibana-logging
    kubernetes.io/cluster-service: "true"
    addonmanager.kubernetes.io/mode: Reconcile
    kubernetes.io/name: "Kibana"
spec:
  ports:
  - port: 5601
    protocol: TCP
    targetPort: ui
    nodePort: 8889
  type: NodePort
  selector:
    k8s-app: kibana-logging

 

19.8 使定义的 yaml 文件生效

[root@k8s-m1 fluentd-elasticsearch]# cd /opt/root/k8s/v1.11.2/kubernetes/cluster/addons/fluentd-elasticsearch
[root@k8s-m1 fluentd-elasticsearch]# kubectl apply -f .

19.9 打开 kiabna 页面

使用 nodePort:http://<nodePort>:8889

 

 

 

排障

如果发现 elasticsearch-logging 容器异常退出,可以通过下面两种方式查看日志

  • 1. kubectl logs pod podname 查看pod输出的日志
  • 2. /var/log/messages 查看系统日志。如果pod因为系统内存等问题异常退出时,会有把日志记录在这里

因为内存不足引起的退出,可以修改 jvm.options 文件中 -Xms 和 -Xmx 的值,减少内存占用,具体方法如下

1.修改es-statefulset.yaml文件,让elasticsearch启动并暂停。注:es的镜像是用centos做的,容器异常退出的时候,也可以在 yaml 里面 加入/sbin/init命令运行容器
      containers:
      - image: registry.cn-hangzhou.aliyuncs.com/google_containers/elasticsearch:v5.6.4
        command: ["/sbin/init"]
2.把config/jvm.options内容复制一份到/opt/root/k8s/v1.11.2/kubernetes/cluster/addons/fluentd-elasticsearch/es-image/config,并修改-Xms、-Xmx的值为200m
3.修改/opt/root/k8s/v1.11.2/kubernetes/cluster/addons/fluentd-elasticsearch/es-image/Dockerfile
  引用当前node上已有的elasticsearch镜像
  把修改后的jvm.options复制到镜像里面
  修改后的内容如下:
       #FROM docker.elastic.co/elasticsearch/elasticsearch:5.6.4
       FROM registry.cn-hangzhou.aliyuncs.com/google_containers/elasticsearch:v5.6.4
       
       VOLUME ["/data"]
       EXPOSE 9200 9300
       
       #COPY elasticsearch_logging_discovery run.sh bin/
       COPY config/jvm.options config/
       
       USER root
       RUN chown -R elasticsearch:elasticsearch ./
       CMD ["bin/run.sh"]
4.重新生成镜像
/opt/k8s/bin/docker build -t myself/images/elasticsearch:v1.0.1 .
5.修改es-statefulset.yaml,注释掉刚才的command: ["/sbin/init"],修改image为myself/images/elasticsearch:v1.0.1
6.kubectl apply -f es-statefulset.yaml 使定义的文件生效

 

posted on 2018-11-19 13:51  冰冰爱学习  阅读(282)  评论(0编辑  收藏  举报

导航