K8s开发指南-客户端
K8s开发指南-客户端 基于K8s v1.29 API客户端 Ref:https://github.com/kubernetes/client-go K8s认证方式主要一下俩类: 集群外的认证:客户端程序运行在集群外,以独立进程访问API Server 集群内的认证:客户端在K8s内以Pod形式运行,通过内部服务名访问API Server 客户端访问API Server常见的认证方式有以下的几种 数字证书方式 ServiceAccount方式 BearerToken方式 对于运行在K8s集群之外的客户端,建议使用数字证书方式连接API Server,客户端需要配置的信息包括CA根证书、客户端证书、客户段私钥以及API Server地址 对于运行在集群内的Pod,建议使用ServiceAccount认证方式,需要为Pod增加ServiceAccount资源,并为ServiceAccount配置好正确的RBAC权限 基于kubeconfig文件的配置方式有以下几种: 用户HOME目录中的约定目录,例如$HOME/.kube/config 在环境变量K...
K8s开发-API详解
K8s开发-API详解 基于K8s v1.29 资源对象一个K8s资源对象描述一般是kind、apiVersion、metadata、spec和status五个部分 资源对象的类型资源对象的类型用Kind属性表示,总体分为3个类型: 对象(Object)、代表系统中永久资源实体,比如Pod、RC 列表(List):资源对象的合集 简单类别(Simple):作用于资源对象或非持久辅助实体的特定操作,比如Status、Scale、ListOptions等 资源对象的元数据metadata是资源对象的元数据定义,由一组属性来定义,在K8s中,每个资源对象都必须包含以下元数据属性: namespec:对象所属的命名空间,如果不指定,则昔日会将对象置于名为default中 name:对象的名称、在一个ns下,唯一性 uid:系统为每个对象生成唯一的ID,符合RFC4122 labels:自定义标签 annotations:用户自定义注解,被K8s内部进程或者外部工具使用 resourceVersion:用于识别资源内部斑斑的字符串,在Watch操作,可以避免Get和下一次Watch...
K8s认证机制-拓展认证
K8s认证机制-拓展认证 基于K8s v1.29 OIDC Token认证K8s支持使用OpenID Connect协议进行身份认证。 OIDC协议给予OAuth2.0,构建了身份层,主要提供了ID Token,这是一个JWT格式的Token 流程图: 配置OIDC认证,需要API-Server开启一些参数 WebHook Token认证WebHook认证是K8s回调第三方认证实现用户认证 认证原理: API Server收到客户端的请求之后,从HTTP Header获取到Bearer Token,然后生成一个包含该Token的TokenReview资源对象 API Server把整个TokenReview对象JSON序列化之后发送给Webhook认证服务器 开启WebHook 认证需要设置API Server启动参数 Authenticating Proxy认证在这种模式下,K8s自身不再对用户认证,而是使用外部认证服务进行用户认证 开启Authenticating Proxy 认证需要设置API Server启动参数
Prometheus-Rules告警评估
Prometheus-Rules告警评估 基于v3.5 工作原理graph TD A[Rule Files] --> B[Manager.LoadGroups] B --> C[Parse Rule Groups] C --> D[Create Rule Objects] D --> E[Analyse Rule Dependencies] E --> F[Build Dependency Map] F --> G[Set Rule Dependencies] H[Manager.Run] --> I[Group Evaluation Loop] I --> J[Split Rules into Batches] J --> K{Concurrent Evaluation Enabled?} K -->|Yes| L[Concurrent Rule Execution] K -->|No| M[S...
Prometheus-Scrape指标抓取
Prometheus-Scrape指标抓取 基于v3.5 工作原理graph TD A[ScrapePool] --> B[Target Discovery] A --> C[Scrape Loop Management] A --> D[HTTP Client] B --> B1[Sync Targets] B1 --> B2[Target Group Processing] B2 --> B3[Target Creation/Deduplication] B3 --> B4[Active Targets Update] C --> C1[Loop Creation] C1 --> C2[Scrape Interval Setup] C2 --> C3[Scraper Initialization] D --> D1[Target Scraper] D1 --> D2[HTTP Request] D2 --> D3[Metrics Endpoint] C3 -->...
Prometheus-notifier告警推送
Prometheus-notifier告警推送 基于v3.5 工作原理sequenceDiagram participant Q as Queue participant M as Manager participant AM as Alertmanager participant AL as Alertmanager API Q->>M: nextBatch() M->>M: 分批处理告警 M->>AM: sendAll() AM->>AM: 应用特定于 AM 的 relabel AM->>AL: HTTP POST /api/v2/alerts AL-->>AM: Response AM->>M: 返回发送结果 关键特性 告警队列管理 有界队列,防止内存无限增长 支持队列满时的丢弃策略 可配置的批处理大小 Relabeling(重新标记) 发送前对告警应用 relabel 配置 支持每个 Alertmanager 集合的特定 relabel 规则 高可用性...
Prometheus-Discoverer服务发现
Prometheus-Discoverer服务发现 基于v3.5 启动流程sequenceDiagram participant main.go participant Manager participant Provider participant Discoverer participant TargetGroup main.go->>Manager: NewManager() main.go->>Manager: ApplyConfig() Manager->>Provider: 创建Provider实例 Manager->>Provider: startProvider() Provider->>Discoverer: 初始化具体发现器(如K8s/Consul等) Provider->>Discoverer: Run(ctx, updatesCh) loop 发现循环 Discoverer->>TargetGroup: 获取目标组 ...
Prometheus-载入配置
Prometheus-载入配置 基于v3.5 启动顺序sequenceDiagram participant main.go participant Config participant GlobalConfig participant ScrapeConfig participant RemoteWriteConfig participant RuntimeConfig participant Storage main.go->>Config: 加载配置文件(Load/LoadFile) Config->>GlobalConfig: 初始化全局配置 Config->>ScrapeConfig: 初始化抓取配置 Config->>RemoteWriteConfig: 初始化远程写入配置 Config->>RuntimeConfig: 初始化运行时配置 main.go->>Storage...
Prometheus-项目启动main.go
Prometheus-项目启动main.go 基于v3.5 启动顺序flowchart TD A[启动 main 函数] --> B[解析命令行参数/配置文件] B --> C[初始化日志系统] C --> D[初始化通知系统] D --> E[校验参数和配置] E --> F[初始化核心组件] F --> F1[本地存储 localStorage] F --> F2[抓取管理器 scrapeManager] F --> F3[远程存储 remoteStorage] F --> F4[规则管理器 ruleManager] F --> F5[Web 服务 webHandler] F --> F6[服务发现 discoveryManager] F --> F7[告警通知 notifierManager] F --> F8[Tracing 管理 tracingManager] F1 & F...
Alertmanager-告警发送
Alertmanager-告警发送 基于v0.28 启动顺序sequenceDiagram participant Alert as 新告警 participant Dispatcher as Dispatcher participant Route as Route participant AggrGroup as aggrGroup participant NotifyStage as notify.Stage participant Notifier as Notifier(邮件/微信等) Alert->>Dispatcher: 新告警流入 Dispatcher->>Route: 路由树匹配 Route-->>Dispatcher: 匹配到的 Route Dispatcher->>AggrGroup: 插入/创建分组 Note over AggrGroup: run 协程定时触发通知 AggrGroup->>Noti...