client-go:6 informer 架构说明
上图是整个 client-go 的完整架构图,或者说是我们要去实现一个自定义的控制器的一个整体流程,其中黄色图标是开发者需要自行开发的部分,而其它的部分是 client-go 已经提供的,直接使用即可。 由于 client-go 实现非常复杂,我们这里先对上图中最核心的部分 Informer 进行说明。在 Informer 的架构中包含如下几个核心…
Prometheus:监控 K8S 集群内部 ETCD
这里的环境为 Prometheus 是外部部署,而 etcd 是部署在 K8S 集群内部,从而实现对他监控 每个 etcd 服务器都/metrics在其客户端端口路径下导出指标。 11.1 ETCD 自带 metrics 验证 如果我们的 etcd 是部署在集群内部就需要通过证书认证的方式才能够拿到对应的监控指标 1.查看监控接口是否能够正常使用 …
client-go:5 Informer 使用
5 Informer 使用 前面我们在使用 Clientset 的时候了解到我们可以使用 Clientset 来获取所有的原生资源对象,那么如果我们想要去一直获取集群的资源对象数据呢?岂不是需要用一个轮询去不断执行 List() 操作?这显然是不合理的,实际上除了常用的 CRUD 操作之外,我们还可以进行 Watch 操作,可以监听资源对象的增、删…
Prometheus:实现分组告警
9 分组告警 真实的场景中,我们往往期望可以给告警设置级别,而且可以实现不同的报警级别可以由不同的receiver接收告警消息。Alertmanager中路由负责对告警信息进行分组匹配,并向告警接收器发送通知。以下为本次需要实现的目的 1、添加两个不同的告警级别的告警规则 当节点服务器 cpu15 分钟负载低于1时,发生告警,告警级别 normal…
Prometheus:常用 PromQL 监控语句总汇
4 PromQL 语句 Prometheus 提供一个函数式的表达式语言 PromQL (Prometheus Query Language),可以使用户实时地查找和聚合时间序列数据,表达式计算结果可以在图表中展示,也可以在 Prometheus 表达式浏览器中以表格形式展示,或者作为数据源, 以 HTTP API 的方式提供给外部系统使用如 gr…
istio 系列:1 istio 原理介绍和部署
[TOC] 1 istio 原理介绍和部署 1.1 什么是 serviceMesh 提到Service Mesh,就不得不提微服务。 根据维基百科的定义: 微服务(Microservices)是一种软件架构风格,它是以专注于单一责任与功能的小型功能区块(Small Building Blocks)为基础,利用模块化的方式组合出复杂的大型应用程序,各…
client-go:4 ClientSet 使用
3 ClientSet 使用 3.1 介绍 Clientset 是调用 Kubernetes 资源对象最常用的客户端,可以操作所有的资源对象。 前面我们说了在 staging/src/k8s.io/api 下面定义了各种类型资源的规范,然后将这些规范注册到了全局的 Scheme 中,这样就可以在 Clientset 中使用这些资源了。那么我们应该如…
client-go:3 资源类型 Scheme
2 资源类型 Scheme 本节主要讲解 Kubernetes 核心的资源类型 Scheme 的定义和用途。 现在我们知道我们的 yaml 文件是通过 api 的一个转换来发起一个网络请求,那么整个的资源类型他是怎么样在 K8S 当中来定义的呢? 就是平时我们在 yaml 中写的一个 deployment 的资源类型为什么 K8S 能够识别?这些资…
client-go:1 环境准备
1 环境准备 1 源码下载 直接 Clone 官方 Kubernetes 源码即可获得代码: $ git clone https://github.com/kubernetes/kubernetes.git 但是由于 Kubernetes 源码非常大,而且我们访问 GitHub 又比较慢,为解决这个问题我们可以使用加速器进行 Clone,只需要将 …
client-go:2 Kubernetes API
[TOC] KUBERNETES API 接口模型 1 介绍 Kubernetes 中最核心的就是 kube-apiserver 组件,其他组件都是和 kube-apiserver 进行通信的,本节主要就来研究下 Kubernetes API 接口的模型。 2 API 对象 在 Kubernetes 集群中,Kubernetes 对象是我们持久化的…