12-Kubernetes-kibana-nfs集群部署

206 阅读3分钟

Kubernetes-kibana-nfs集群部署

背景

安装EFK

一、环境准备,安装kubernetes集群

​ 当前节点base、master、node1、node2、node3

kubernetes安装不在此赘述,请参考参考资料进行安装

kubernetes安装nfs不在此赘述,请参考参考资料进行安装

​ 参考资料

/kubernetes/1-Kubernetes基于Centos7构建基础环境(一)

/kubernetes/2-Kubernetes基于Centos7构建基础环境(二)

/kubernetes/3-Kubernetes基于Centos7构建基础环境(三)

/kubernetes/4-Kubernetes-基于Centos7安装面板及监控(四)

/kubernetes/nfs/1-kubernetes-nfs动态存储部署

/kubernetes/nfs/10-Kubernetes-elasticsearch-nfs集群部署

/kubernetes/nfs/11-Kubernetes-filebeat-nfs集群部署

集群名称集群域名说明
basebase.xincan.cn部署harbor、nfs等服务
mastermaster.xincan.cnkubernetes主节点,做污点容忍,排除业务资源,nfs客户端等
node1node1.xincan.cnkubernetes从节点,nfs客户端等
node2node2.xincan.cnkubernetes从节点,nfs客户端等
node3node3.xincan.cnkubernetes从节点,nfs客户端等

二、总体流程

  1. 下载kibana的版本为7.4.2

  2. Kubernetes集群的主节点上创建kibana文件夹,用于存放Kuberntes文件编排,文件目录如下;

[root@master efk]# tree
.
├── 0-efk-namespace.yaml
├── 1-filebeat-kibana-rbac.yaml
├── elasticsearch
│   ├── 1-elasticsearch-rbac.yaml
│   ├── master
│   │   ├── 1-elasticsearch-master-service.yaml
│   │   └── 2-elasticsearch-master-statefulset.yaml
│   └── node
│       ├── 1-elasticsearch-node-storageclass.yaml
│       ├── 2-elasticsearch-node-nfs-provisioner.yaml
│       ├── 3-elasticsearch-node-service.yaml
│       └── 4-elasticsearch-node-statefulset.yaml
├── filebeat
│   ├── 1-filebeat-configmap.yaml
│   └── 2-filebeat-daemonset.yaml
└── kibana
    ├── 1-kibana-configmap.yaml
    ├── 2-kibana-deployment.yaml
    └── 3-kibana-service.yaml
  1. 镜像制作;
  2. 资源创建;
  3. 效果展示;

三、镜像处理

  1. 下载镜像
[root@master /]# docker pull kibana:7.4.2
  1. 镜像tag
[root@master /]# docker tag kibana:7.4.2 base.xincan.cn/library/kibana:7.4.2
  1. 镜像提交到Harbor
[root@master /]# docker push base.xincan.cn/library/kibana:7.4.2

四、资源创建

  1. 基于10-Kubernetes-elasticsearch-nfs集群部署基础上继续创建,沿用命名空间
  2. 创建kibana服务配置资源ConfigMap,名称为:kibana-config
    • elasticsearch用户名密码为空
[root@master kibana]# cat 1-kibana-configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: kibana-config
  namespace: efk
  labels:
    xincan.kubernetes.io/company: xincan.cn
    xincan.kubernetes.io/version: 0.0.1
    xincan.kubernetes.io/type: plugins
    xincan.kubernetes.io/product: xincan
    xincan.kubernetes.io/app: kibana

data:

  kibana.i18n.locale: "zh-CN"
  kibana.server.name: "kibana"
  kibana.server.host: "0.0.0.0"
  kibana.elasticsearch.hosts: "http://elasticsearch-node-service.efk:9200"
  
[root@master kibana]#
  1. 创建kibanaDeployment
[root@master kibana]# cat 2-kibana-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: kibana
  namespace: efk
  labels:
    xincan.kubernetes.io/company: xincan.cn
    xincan.kubernetes.io/version: 0.0.1
    xincan.kubernetes.io/type: plugins
    xincan.kubernetes.io/product: xincan
    xincan.kubernetes.io/app: kibana
spec:
  replicas: 1
  selector:
    matchLabels:
      xincan.kubernetes.io/company: xincan.cn
      xincan.kubernetes.io/version: 0.0.1
      xincan.kubernetes.io/type: plugins
      xincan.kubernetes.io/product: xincan
      xincan.kubernetes.io/app: kibana
  template:
    metadata:
      name: kibana
      labels:
        xincan.kubernetes.io/company: xincan.cn
        xincan.kubernetes.io/version: 0.0.1
        xincan.kubernetes.io/type: plugins
        xincan.kubernetes.io/product: xincan
        xincan.kubernetes.io/app: kibana
    spec:
      serviceAccountName: fk-rbac
      restartPolicy: Always
      containers:
      - name: kibana
        image: base.hatech.com.cn/library/kibana:7.4.2
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 5601
          protocol: TCP
        env:
        - name: I18N_LOCALE
          valueFrom:
            configMapKeyRef:
              name: kibana-config
              key: kibana.i18n.locale
        - name: SERVER_NAME
          valueFrom:
            configMapKeyRef:
              name: kibana-config
              key: kibana.server.name
        - name: SERVER_HOST
          valueFrom:
            configMapKeyRef:
              name: kibana-config
              key: kibana.server.host
        - name: ELASTICSEARCH_HOSTS
          valueFrom:
            configMapKeyRef:
              name: kibana-config
              key: kibana.elasticsearch.hosts
[root@master kibana]#
  1. 创建kibana服务访问资源Service,名称为:kibana-service
[root@master kibana]# cat 3-kibana-service.yaml
kind: Service
apiVersion: v1
metadata:
  name: kibana-service
  namespace: efk
  labels:
    xincan.kubernetes.io/company: xincan.cn
    xincan.kubernetes.io/version: 0.0.1
    xincan.kubernetes.io/type: plugins
    xincan.kubernetes.io/product: xincan
    xincan.kubernetes.io/app: kibana
spec:
  selector:
    xincan.kubernetes.io/company: xincan.cn
    xincan.kubernetes.io/version: 0.0.1
    xincan.kubernetes.io/type: plugins
    xincan.kubernetes.io/product: xincan
    xincan.kubernetes.io/app: kibana
  type: NodePort
  ports:
    - port: 5601
      targetPort: 5601
      nodePort: 31190
[root@master kibana]#

五、创建filebeat资源

[root@master efk]# kubectl apply -f kibana/
configmap/kibana-config created
deployment.apps/kibana created
service/kibana-service created

  1. 查看部署的资源
[root@master kibana]# kubectl -n efk get all
NAME                                                             READY   STATUS    RESTARTS   AGE
pod/elasticsearch-master-0                                       1/1     Running   0          34m
pod/elasticsearch-master-1                                       1/1     Running   0          34m
pod/elasticsearch-master-2                                       1/1     Running   0          34m
pod/elasticsearch-node-0                                         1/1     Running   0          33m
pod/elasticsearch-node-1                                         1/1     Running   0          33m
pod/elasticsearch-node-2                                         1/1     Running   0          33m
pod/elasticsearch-node-nfs-client-provisioner-65db76b7f9-tmhcd   1/1     Running   0          33m
pod/filebeat-4thcs                                               1/1     Running   0          31m
pod/filebeat-n7c2x                                               1/1     Running   0          31m
pod/filebeat-nlj8r                                               1/1     Running   0          31m
pod/filebeat-wcrsr                                               1/1     Running   0          31m
pod/kibana-f5cc5d99-mcpz8                                        1/1     Running   0          31m

NAME                                   TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)          AGE
service/elasticsearch-master-service   ClusterIP   10.103.254.104   <none>        9300/TCP         34m
service/elasticsearch-node-service     NodePort    10.99.238.73     <none>        9200:31180/TCP   33m
service/kibana-service                 NodePort    10.99.114.144    <none>        5601:31190/TCP   31m

NAME                      DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR   AGE
daemonset.apps/filebeat   4         4         4       4            4           <none>          31m

NAME                                                        READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/elasticsearch-node-nfs-client-provisioner   1/1     1            1           33m
deployment.apps/kibana                                      1/1     1            1           31m

NAME                                                                   DESIRED   CURRENT   READY   AGE
replicaset.apps/elasticsearch-node-nfs-client-provisioner-65db76b7f9   1         1         1       33m
replicaset.apps/kibana-f5cc5d99                                        1         1         1       31m

NAME                                    READY   AGE
statefulset.apps/elasticsearch-master   3/3     34m
statefulset.apps/elasticsearch-node     3/3     33m
[root@master kibana]#

六、访问连接

  1. kibana端口为31190
  2. 访问http://192.168.1.10:31190

image-20210804164518064

七、结束语

至此集群版Kubernetes部署kibana完成