Kibana 双栈网络(Dual-Stack)支持能力评估
#作者:Unstopabler
文章目录
- 一.测试目标
- 二.测试环境
- 三.Kibana
- 1、查询 Kibana pod信息
- 2、查询Kibana service信息
- 3、Kibana service 设置
- 四.验证测试
- 1、Kibana 监听参数设置
- 2、Kibana节点IPv4状态检查
- 3、Kibana节点IPv6状态检查
- 4、测试结论
一.测试目标
Kibana 是一个免费且开放的用户界面,能够让您对 Elasticsearch 数据进行可视化。
本次测试基于kubernetes集群,Kibana IPv4 和 IPv6 的双栈验证和配置。
二.测试环境
组件 | 版本 | 系统OS |
---|---|---|
Kubernetes | 1.23.9 | Linux release 8.2 |
Kibana | 7.8.1 |
三.Kibana
1、查询 Kibana pod信息
kubectl get po kibana-kibana-956f76f58-7wptd -o go-template --template='{{range .status.podIPs}}{{printf "%s\n" .}}{{end}}'map[ip:10.X.X.X]
map[ip:2001:db8:42:d8:8162:XX:XX:XX]
2、查询Kibana service信息
kubectl get svc kibana-kibana -o go-template --template='{{range .spec.clusterIPs}}{{printf "%s\n" .}}{{end}}'
10.XX.XX.XX
2001:XX:X:X::9ab8
3、Kibana service 设置
创建以下显式定义 .spec.ipFamilyPolicy 为 PreferDualStack 的 Service。 Kubernetes 将分配 IPv4 和 IPv6 地址(因为该集群启用了双栈), 并根据 .spec.ipFamilies 数组中第一个元素的地址族, 从 .spec.ClusterIPs 列表中选择 .spec.ClusterIP
apiVersion: v1
kind: Service
metadata:annotations:meta.helm.sh/release-name: kibanameta.helm.sh/release-namespace: defaultlabels:app: kibanaapp.kubernetes.io/managed-by: Helmheritage: Helmrelease: kibananame: kibana-kibana
spec:clusterIP: 10.96.X.XclusterIPs:- 10.96.X.XX- 2001:XX:XX:XX::9ab8externalTrafficPolicy: ClusterinternalTrafficPolicy: ClusteripFamilies:- IPv4- IPv6ipFamilyPolicy: PreferDualStackports:- name: httpnodePort: 62218port: 5601protocol: TCPtargetPort: 5601selector:app: kibanarelease: kibanasessionAffinity: Nonetype: NodePort
四.验证测试
1、Kibana 监听参数设置
需要把之前设置的0.0.0.0改为”::”
- name: SERVER_HOSTvalue: '::'
2、Kibana节点IPv4状态检查
echo `curl --output /dev/null --write-out "200" http://10.96.X.X:5601/app/kibana`
3、Kibana节点IPv6状态检查
echo `curl -g -6 --output /dev/null --write-out "200" http://[2001:XXX:XX:X::9ab8]:5601/app/kibana`
4、测试结论
根据上述测试结果,我们可以得出结论: Kibana在容器环境中原生已经支持 IPv4 和 IPv6 地址连接测试,连接ES的地址只能单协议,监听参数也需要额外的设置。