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集群部署
集群名称 | 集群域名 | 说明 |
---|---|---|
base | base.xincan.cn | 部署harbor、nfs等服务 |
master | master.xincan.cn | kubernetes主节点,做污点容忍,排除业务资源,nfs客户端等 |
node1 | node1.xincan.cn | kubernetes从节点,nfs客户端等 |
node2 | node2.xincan.cn | kubernetes从节点,nfs客户端等 |
node3 | node3.xincan.cn | kubernetes从节点,nfs客户端等 |
二、总体流程
-
下载kibana的版本为7.4.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
- 镜像制作;
- 资源创建;
- 效果展示;
三、镜像处理
- 下载镜像
[root@master /]# docker pull kibana:7.4.2
- 镜像tag
[root@master /]# docker tag kibana:7.4.2 base.xincan.cn/library/kibana:7.4.2
- 镜像提交到Harbor
[root@master /]# docker push base.xincan.cn/library/kibana:7.4.2
四、资源创建
- 基于10-Kubernetes-elasticsearch-nfs集群部署基础上继续创建,沿用命名空间
- 创建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]#
- 创建kibana的Deployment
[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]#
- 创建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
- 查看部署的资源
[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]#
六、访问连接
- kibana端口为31190
- 访问http://192.168.1.10:31190
七、结束语
至此集群版Kubernetes部署kibana完成