本地服务器配置,32C,48G内存
整个过程需要配置k8s,安装helm, 安装grafana, 安装deepflow以及deepflow-ctl,以及部署demo
在采用sealos进行ALL-IN-ONE部署之前,
grafana
先安装它
wget -q -O /usr/share/keyrings/grafana.key https://apt.grafana.com/gpg.key
apt-get install -y apt-transport-https
将下方内容写入 /etc/apt/sources.list.d/grafana.list
deb [signed-by=/usr/share/keyrings/grafana.key] https://mirrors.tuna.tsinghua.edu.cn/grafana/apt/ stable main
然后
apt-get update
apt-get install grafana
然后启动grafana
获取需要的nodeIP和port
NODE_PORT=$(kubectl get --namespace deepflow -o jsonpath="{.spec.ports[0].nodePort}" services deepflow-grafana)
NODE_IP=$(kubectl get nodes -o jsonpath="{.items[0].status.addresses[0].address}")
echo -e "Grafana URL: http://$NODE_IP:$NODE_PORT \nGrafana auth: admin:deepflow"
miniKube部署
尝试在本地 8G 2C虚拟机上部署,结果kubectl get pod -A会发现一些pod总是出错,猜测可能是内存不足,后来放弃在虚拟机上部署
先尝试了在服务器上minikube部署,结果deepflow-ctl报错
显示curl (http://192.168.123.198:30417/v1/vtaps/) failed, (Get “http://192.168.123.198:30417/v1/vtaps/”: dial tcp 192.168.123.198:30417: connect: connection refused),这个ip地址刚好是服务器网卡的ip地址,原因不明
值得注意的是,需要输入minikube start --force才能启动minikube k8s,甚至不会
minikube部署可以参考文章
完整指南:如何编译、打包和部署二次开发的 DeepFlow
https://mp.weixin.qq.com/s/-jWYq2rTRaTueuN0sAb3lA
以及:
https://deepflow.io/docs/zh/ce-install/all-in-one/
最终清空minikube环境可以参考
http://www.zhaowenyu.com/kubernetes-doc/install/kubeadm/kubeadm-k8s1.24-containderd.html
minikube delete --purge --all
sudo dpkg -P minikube
以及这篇:
Linux卸载minikube命令整理
http://t.csdnimg.cn/54QHY
sealos部署
主要参考https://deepflow.io/docs/zh/ce-install/all-in-one/
如果机器上已经有docker环境,需要全部清除干净才能安装sealos,否则会报错。
清除docker环境可以参考
https://blog.csdn.net/qq_45495857/article/details/113743109
接下来sudo sealos reset,防止出现Error: cluster status is not ClusterSuccess这个错误
然后设置本机的一个不常用的网卡ip为192.168.1.123
ifconfig ens4f0 192.168.1.123
然后接下来就可以
# install sealos
curl -o /usr/bin/sealos https://deepflow-ce.oss-cn-beijing.aliyuncs.com/sealos/sealos && \
chmod +x /usr/bin/sealos
# install All-in-One kubernetes cluster
IP_ADDR="192.168.1.123" # FIXME: Your IP address
PASSWORD="1" # FIXME: Your SSH root password
sealos run labring/kubernetes:v1.24.0 labring/calico:v3.22.1 --masters $IP_ADDR -p $PASSWORD
之后的操作可以完全参考官方文档了
这样下来,deepflow-ctl可以正常使用
之前使用minikube的报错curl (http://192.168.123.198:30417/v1/vtaps/) failed, (Get “http://192.168.123.198:30417/v1/vtaps/”: dial tcp 192.168.123.198:30417: connect: connection refused)也消失了,很神奇
部署demo
参考
https://deepflow.io/docs/zh/features/distributed-tracing/spring-boot-demo/
grafana页面
点击表中的span,可以看到火焰图,flame graph