Awesome Kubernetes 系列:第一期
本人是一个资源狂魔,不管是云原生领域还是个人生活,每天都能接触到各种各样的神奇宝贝。当然这种东西取决于一个人的信息搜集能力,以后我会专门写文章给大家讲。由于我的收藏夹里有太多的东西了,我就想着把它们分享出来,一来可以造福大众,二来可以方便自己后续查找。我把这个系列定义为『Awesome Kubernetes 系列』,以云原生相关的项目和工具为主,当然可能还会夹杂少部分为个人工作和生活带来便利的资源分享。该系列的更新频率不确定,凑够了一波资源就发,这是第一期分享。
Kuberhealthy[1]
Kuberhealthy 是对 Prometheus 的一种补充监控方案,通过 Operator 来控制状态,你可以对 Kubernetes 的资源进行聚合监控,比如:
- 哪个节点上的 Pod 因为 CNI 问题处于
Terminating
状态。 - 哪个节点上的 Pod 因为存储问题处于
ContainerCreating
状态。 - 哪个节点上的 Pod 因为容器运行时的原因处于
Pending
状态。 - 哪个节点上的 Kubelet 或 Docker 组件虽然通过了健康检查,但还是有问题。
-
kube-system
namespace 中的某个 Pod 重启次数太频繁。 - 等等
Kuberhealthy 的重点不是一大堆永无止境的监控指标,而是具象化成某一个具体的现象,然后暴露出 prometheus 格式的指标,也提供了简单的 JSON 状态页面。
Gemini[2]
Gemini 通过 Operator 来管理 PV(PersistentVolumes)的快照,比如创建快照来备份 PV,也可以通过快照来创建新的 PV。
kubectl-prune[3]
kubectl-prune
是一个 kubectl 插件,用来清除未使用的 Kubernetes 资源,类似于 Docker 的 prune 参数,只不过这里清理的是 Kubernetes 中的对象资源,比如 ConfigMap
、Secret
、HorizontalPodAutoscaler
等。
crun[4]
crun
是 Red Hat 用 C 语言编写的内存占用极低的底层容器运行时,符合 OCI 容器运行时[5]的规范,对标 runc[6]。
goldilocks[7]
goldilocks
会为指定 namespace 的每一个 Deployment
创建一个 VPA
,然后根据 VPA 给出推荐的 Requests
和 Limits
。需要提前部署好 vertical-pod-autoscaler[8]。
Ktunnel[9]
Ktunnel
是一个 CLI 工具,它可以在 Kubernetes 集群和本地机器之间建立一个反向隧道,将你的本地服务作为 Kubernetes 中的 Service
暴露出去,这样就可以在 Pod 中直接访问本地的服务了。
kube-netc[10]
kube-netc
使用 eBPF
技术来监测集群中的网络流量。
kmoncon[11]
kmoncon
会通过 DaemonSet
部署一系列 agent 来频繁执行测试,并上报给 Controller
,然后由 Controller
暴露出节点之间连通性相关的指标。
额外福利
Portmaster[12]
Portmaster 是一个 APP,可以强制让你的系统使用 DNS-over-TLS
,不止是浏览器哦,当然还有一些其他功能,我就不一一介绍了。目前只支持 Windows
和 Linux
,MacOS 版本还在开发中。
参考资料
[1]Kuberhealthy: https://github.com/Comcast/kuberhealthy
[2]Gemini: https://github.com/FairwindsOps/gemini
[3]kubectl-prune: https://github.com/micnncim/kubectl-prune
[4]crun: https://github.com/containers/crun
[5]OCI 容器运行时: https://github.com/opencontainers/runtime-spec
[6]runc: https://github.com/opencontainers/runc
[7]goldilocks: https://github.com/FairwindsOps/goldilocks
[8]vertical-pod-autoscaler: https://github.com/kubernetes/autoscaler/tree/master/vertical-pod-autoscaler
[9]Ktunnel: https://github.com/omrikiei/ktunnel
[10]kube-netc: https://github.com/nirmata/kube-netc
[11]kmoncon: https://github.com/Stono/kconmon
[12]Portmaster: https://github.com/safing/portmaster/
- Docker系列教程09-使用Docker Hub管理镜像
- C++11基础学习系列一
- 触屏touchstart 与 click
- Linux DNS之dig利器
- Docker系列教程08-Dockerfile实战
- VirtualBox和Vmware安装增强功能
- 事件委托与阻止冒泡
- Linux网络工具之Ping命令
- Linux DNS之nslookup命令
- 【LEETCODE】模拟面试-108-Convert Sorted Array to Binary Search Tree
- javascript单线程环境实现真正的setTimeout
- 利用pipework与OVS构建跨主机容器网络
- Docker系列教程07-Dockerfile指令详解
- Docker系列教程06-实战:修改Nginx首页
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Android开发使用Drawable绘制圆角与圆形图案功能示例
- Android开发中自定义ProgressBar控件的方法示例
- Android 使用自定义RecyclerView控件实现Gallery效果
- Android开发中GridView用法示例
- React Native中Android物理back键按两次返回键即退出应用
- Android仿简书搜索框效果的示例代码
- Android 自定义 HorizontalScrollView 打造多图片OOM 的横向滑动效果(实例代码)
- Android开发自定义TextView省略号样式的方法
- Android开发中获取View视图宽与高的常用方法小结
- Android判断字符串中是否含字母、中文或数字
- 利用Kotlin开发你的第一个Android应用
- Android Picasso使用高斯模糊处理的示例代码
- Android RecyclerView打造悬浮效果的实现代码
- Android选择图片或视频进行循环播放
- Android第三方登录之QQ登录