Pixie是基于Ebpf技术构建的一套可观测性平台,Pixie默认已经集成了许多可观测性工具,例如:我们可以清晰的通过Pixie观测到K8S内部的流量情况、DNS解析时延、TCP丢包、掉包等,同时我们还可以通过Pixie多K8S内Namespace、Pod等进行监控,当然大名鼎鼎的Cilium(一款K8S的网络插件)也可以做到,但是如果您的K8S集群不是使用到Cilium的话,使用Pixie作为K8S可观测性平台是非常不错的选择。

Pixie官方主要给出了两种搭建模式,第一种是Community Cloud for Pixie,第二种是通过Self-Hosted模式进行搭建,如果您的K8S集群在公有云,那么选择Community Cloud的模式是一种快捷、简单的方式,在这种模式下用户只需要部署Pixie采集端,而无需单独部署Pixie Cloud(用于管理部署在各个K8S集群的Pixie采集端),Pixie Cloud由社区来提供,但是这种方式对于我们国内很多系统来说是不适用的,它要求K8S集群能够直连到Pixie社区提供的Cloud上去,这意味着K8S需要与公网打通,这往往不符合安全要求,于使只能采用第二种模式来进行部署,将Pixie Cloud和Pixie采集端部署到私有的集群上面。以下是笔者在实验环境搭建的过程。

首先我的实验环境主要由三台虚拟机组成,基于Kubernetes 1.23.2版本搭建了一套集群,集群信息如下,这里要注意Pixie要求K8S的版本需要高于1.16,同时集群中主机需要使用Cgroup v1版本,笔者尝试过Cgroup v2,但是Pixie无法正常运行。

接下来我们可以按照官网的步骤开始搭建,这里贴出官网地址,大家可以参考:

Install | Install Guides | Self-Hosted Pixiehttps://docs.px.dev/installing-pixie/install-guides/self-hosted-pixie/ 1.第一步:按照官网要求,我们需要首先使用Git将Pixie源码切到本地,这里没有特殊的说明

git clone https://github.com/pixie-io/pixie.git
cd pixie

2.第二步:安装mkcert,具体如何安装这里不详细写出来,各位可以参考官方文档

GitHub - FiloSottile/mkcert: A simple zero-config tool to make locally trusted development certificates with any names you'd like.https://github.com/FiloSottile/mkcert#installation     这个mkcert是作用是生成本地的CA证书,之后Pixie Cloud和客户端之间需要通过SSL来进行通信,这里没有什么坑,安装即可。

3.第三步:生成CA证书,这里也没什么好说的,往下走

mkcert -install

4.第四步:创建名为plc的命名空间,这个命名空间是用于Pixie Cloud的服务

kubectl create namespace plc

5.第五步:创建Pixie Cloud中所需要的secrets资源,包括一些密钥之类的,这一步一定确保已经在命名空间中创建,如果这里缺失了,后面Pixie Cloud的部分服务就会无法启动,创建以后可以通过Kubectl 进行查看下。

./scripts/create_cloud_secrets.sh

6.第六步:安装kustomize,这个工具是用于生成安装Pixie Cloud的YAML文件的,这步没有坑,安装方法如下:

Kustomize | SIG CLIhttps://kubectl.docs.kubernetes.io/installation/kustomize/7.第七步:安装Pixie Cloud的依赖,这一步会安装Pixie Cloud服务依赖的一些中间件之类的,比如es,postgres,nat,stan等。注意这些服务都需要挂在数据卷,在部署之前需要提前把需要的数据卷给创建好,因为笔者这里使用的是本地环境,于使创建的是宿主机数据卷,服务在启动的时候会自动去Bound数据卷,数据卷的大小需要查看依赖服务的PVC的要求来创建。

kustomize build k8s/cloud_deps/public/ | kubectl apply -f - --namespace=plc

8.第八步:安装Pixie Cloud,这里就是等待Pull镜像和安装成功,可以通过查看plc命名空间下容器状态来观察:

 kustomize build k8s/cloud/public/ | kubectl apply -f - --namespace=plc

9.第九步:为Pixie Cloud的两个Service配置External 我们需要为cloud-proxy-service ,vzconn-service配置External IP,用于集群外部访问,注意这里按照官方步骤执行后,这两个服务的External IP是pending状态,需要手工修改Service的yaml配置来绑定IP,这里因为是实验环境,笔者把K8S Master的宿主机IP与其绑定。

10.第十步 :设置DNS,这一步的目的使集群内部的DNS能够解析到Pixie Cloud的域名,首先需要在本地环境中安装Go,编译dev_dns_updater.go,然后执行,这里的目的就是把dev.withpixie.dev这个域名加入到集群DNS解析中,当然本地环境通过配置HOST也是可以的。

go build src/utils/dev_dns_updater/dev_dns_updater.go
./dev_dns_updater --domain-name="dev.withpixie.dev" --kubeconfig=$HOME/.kube/config --n=plc

11.第十一步:配置Pixie Cloud页面的登陆账号和密码,这里它需要去查询一个create-admin-job的日志,日志中指示需要打开又给URL地址即可,注意这里大家在打开浏览器的时候会遇到证书不安全的问题,同时浏览器开启了HSTS策略导致浏览器打不开的问题,笔者在Chrome上解决了这个问题,需要在浏览器界面上输入thisissafe即可,火狐浏览器暂未找到解决方法

kubectl logs create-admin-job-<pod_string> -n plc

12.第十二步:解析来就是安装Pixie Cli和Pixie采集端了,这里只需要执行以下步骤,当然这里有个问题,Pixie每次部署会重新去拉最新版本的镜像,这样会导致拉去时间过长和需要联网,这部分问题需要把部署YAML文件导出后通过修改YAML文件并用YAML文件安装来解决。注意这还有个可能遇到的问题就是vizier-pem服务会反复重启报错,笔者的解决办法是调大容器的内存以及修改vizier-cloud-connector和vizier-metadata服务的参数,参数名称为PL_RENEW_PERIOD,值调为10000。

export PL_CLOUD_ADDR=dev.withpixie.dev
bash -c "$(curl -fsSL https://withpixie.ai/install.sh)"
px deploy --dev_cloud_namespace plc

13.第十三步:安装完成后就可以使用了

基于Self-Hosted模式搭建K8S可观测平台Pixie(内附填坑方法)相关推荐

  1. mysql gtid 搭建主从_MySQL5.7 - 基于GTID复制模式搭建主从复制

    MySQL5.7 - 基于GTID复制模式搭建主从复制 发布时间:2020-04-17 10:09:20 来源:51CTO 阅读:226 作者:insist_way 环境: MySQL5.7.24版本 ...

  2. MySQL5.7 - 基于GTID复制模式搭建主从复制

    环境: MySQL5.7.24版本 CentOS release 6.5 注意: MySQL5.7版本Slave可以不开启binlog了,可以节省这部分的磁盘I/O消耗,而MySQL5.6版本必须开启 ...

  3. 七牛云 RTN:基于 WebRTC 零基础搭建实时音视频平台

    近年来,在线教育.狼人杀.在线抓娃娃.线上 KTV 等多人视频互动模式不断涌现,实时音视频通信风头正劲,实时音视频技术 WebRTC 也因此受到了广泛关注.相关数据显示,2017-2021 年期间,全 ...

  4. 基于feng streaming server 搭建Android直播测试平台

    由于Android 不像iPhone有http live streaming的端到到方案(方便提供海量服务),使用开源feng(https://github.com/lscube/feng, 支持mp ...

  5. 【雷达成像】基于CS算法实现合成孔径星载观测雷达数据成像附matlab代码

    1 简介 SAR成像处理最初用光学处理,后来采用数字处理.与光学处理相比,数字处理更精确.更灵活,在距离徙动校正.运动补偿.几何校正和坐标转换等方面有明显的优势. SAR成像处理主要有两个问题,一是距 ...

  6. 前端技术搭建弹珠小游戏(内附源码)

    The sand accumulates to form a pagoda ✨ 写在前面 ✨ 功能介绍 ✨ 页面搭建 ✨ 样式设置 ✨ 逻辑部分 ✨ 写在前面 上周我们实通过前端基础实现了小人逃脱,当 ...

  7. 前端搭建砸地鼠游戏(内附源码)

    The sand accumulates to form a pagoda ✨ 写在前面 ✨ 功能介绍 ✨ 页面搭建 ✨ 样式设置 ✨ 逻辑部分 ✨ 完整代码 ✨ 写在前面 上周我们实通过前端基础实现 ...

  8. 基于BERT模型的文本分类研究 TensorFlow2实现(内附源码)【自然语言处理NLP-100例】

  9. 【智慧酒店解决方案】TSINGSEE青犀视频基于流媒体技术EasyDSS搭建酒店IPTV直播/点播平台

    一.背景分析 随着现代社会的快速发展,越来越多的顾客希望在酒店享受个性化和信息化的服务.因此,对于一二线城市的新型星级酒店而言.迫切需要为客人提供高品质的影音体验,完备的个性功能,智能对接酒店管理系统 ...

最新文章

  1. 三菱触摸屏usb驱动安装_2020年三菱EXPRESS SWB和LWB:竟然是日系中唯一没有屏幕的面包车...
  2. Halcon模板匹配之读取dxf文件生成xld与后续操作
  3. Windows mgmt command commom
  4. 分析数据时,一定要避开这5大误区!
  5. jmx JVM监测工具使用
  6. nginx session共享_Centos下实现nginx负载均衡
  7. Coding: 编写合格的REST API
  8. python中读写excel_python读写Excel
  9. JS正则表达式详解2
  10. Atitit nlp重要节点 v3 目录 1. 语法分析重点 节点余额365个 1 2. nlp词性表 2 2.1. 词语分类13类 2 2.2. 副词 约20个 3 2.3. 代词30个 3 2
  11. Unity BMFont自定义字体
  12. PDF 报告生成器:用 reportlab 和 pdfrw 生成自定义 PDF 报告
  13. mysql sql优化面试题_SQL优化(面试题)
  14. 写一个程序,将接收的华氏温度转换为对应的摄氏温度。
  15. android充电线排序,安卓数据线分类有哪些
  16. Mac To Win
  17. 区块链核心技术演进之路-算法演进
  18. Sulley安装手记
  19. 协同过滤推荐之基于近邻协同过滤(一)
  20. linux clk驱动框架

热门文章

  1. 阿里api文档链接地址
  2. linux定时任务每两天,linux定时任务
  3. 利用Basemap画世界地图
  4. c语言 编译开关用法,C语言中define的使用方法
  5. OUTLOOK 邮箱发件人请求已读回执
  6. lumia535 刷Android,附教程:看看你的Lumia手机能不能刷安卓!
  7. ZBrush的用途是什么
  8. 稻城亚丁6日游之第五天(新都桥-丹巴)
  9. PIO模式和DMA模式的区别
  10. 自媒体娱乐热点素材怎么找?-即时热榜