ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Goldpinger Helm Chart 部署指南:基于 Kubernetes DaemonSet 的集群网络可视性与告警监控

Goldpinger Helm Chart 部署指南:基于 Kubernetes DaemonSet 的集群网络可视性与告警监控 【免费下载链接】charts⚠️(OBSOLETE) Curated applications for Kubernetes项目地址https://gitcode.com/gh_mirrors/chart/charts点击查看免费下载本文以 Helm Charts 仓库中的 Goldpinger 官方 Chart 为核心系统讲解如何借助 Helm 在 Kubernetes 集群中以 DaemonSet 方式部署 Goldpinger——一个在集群各节点实例之间主动发起 HTTP 探测、用于网络可见性与告警的开源组件。读完本文你将掌握 Goldpinger Chart 的安装/卸载流程、全部可配置参数的含义与默认值、RBAC 与 ServiceAccount 权限模型、Ingress 暴露方式、Prometheus ServiceMonitor 监控接入以及 DaemonSet 模板中各环境变量与探针的底层实现细节。Goldpinger 是什么为什么适合用 DaemonSet 部署Goldpinger 的核心思想非常直观它会在集群的每一个节点上运行一个实例实例之间相互发起 HTTP 调用并统计结果从而为运维人员提供集群网络的实时可见性visibility与告警alerting能力。当某个节点之间的网络链路出现延迟、丢包或完全不通时Goldpinger 能够快速暴露问题帮助定位集群网络故障。之所以选择 DaemonSet 而不是 Deployment正是因为 DaemonSet 能保证每个节点恰好运行一个 Pod天然匹配实例间互相探测的工作模式。查看仓库中的 daemonset.yaml可以看到该模板的容器被命名为goldpinger-daemon并通过一组关键环境变量把 DaemonSet 机制与 Goldpinger 的探测逻辑连接起来HOSTNAME通过fieldRef: spec.nodeName注入当前节点名称用于标识探测源HOST固定为0.0.0.0监听所有网络接口PORT由goldpinger.port参数控制默认80LABEL_SELECTOR值为app.kubernetes.io/namechart 名Goldpinger 据此在集群中自动发现同样打了该标签的所有实例从而知道该探测哪些节点。同时模板为容器配置了 HTTP 探活与就绪探针livenessProbe/readinessProbe均请求/路径以及由image.repository:image.tag拼接而成的镜像地址与imagePullPolicy这就是整个探测闭环的落地形态。注本文所述 Chart 为 2020 年后归档的旧仓库版本Chart.yaml 中deprecated: trueversion2.0.4appVersion2.0.0后续维护已移交至社区新仓库但核心参数与部署思路依然具有参考价值。环境要求与快速安装前置条件一个可用的 Kubernetes 集群原 README 标注为 Kubernetes 1.4 且启用 Beta API属于该 Chart 编写年代的要求新集群一般可直接使用已安装并配置好 Helm 包管理器集群已接入 Chart 仓库stable仓库。TL;DR 一条命令安装按 README 中最简方式直接以默认配置安装$ helm install stable/goldpinger该命令会用默认 values 部署完整的 Goldpinger 资源集合。若想以指定 release 名安装$ helm install --name my-release stable/goldpinger命令执行后Chart 会按模板依次渲染并创建以下 Kubernetes 资源对应 templates 目录下的各文件资源模板文件作用DaemonSetdaemonset.yaml每节点运行一个 Goldpinger 实例Serviceservice.yaml暴露集群内访问入口默认 LoadBalancer:80ClusterRole / ClusterRoleBindingclusterrole.yaml、clusterrolebinding.yaml授予 Pod 列表权限用于实例发现ServiceAccountserviceaccount.yaml为 Pod 提供身份Ingressingress.yaml可选通过域名暴露 Web 界面ServiceMonitorservicemonitor.yaml可选供 Prometheus Operator 采集指标PodSecurityPolicy 相关 Role/RoleBindingpodsecuritypolicy.yaml可选适配启用 PSP 的集群卸载 Chart$ helm delete my-release该命令会移除与 release 关联的所有 Kubernetes 组件并删除该 release。可随时用helm list查看当前所有 release 的状态。完整配置参数说明含默认值与源码对应关系以下是 Chart 全部可配置参数、说明与默认值的一览表来源为 README.md 与 values.yaml参数说明默认值image.repositoryGoldpinger 镜像仓库bloomberg/goldpingerimage.tagGoldpinger 镜像标签2.0.0image.pullPolicy镜像拉取策略IfNotPresentimage.pullSecrets私有仓库拉取密钥列表注释中给出需手工创建 Secret空注释示例rbac.create是否创建所需 RBAC ClusterRoletrueserviceAccount.create是否创建 ServiceAccounttrueserviceAccount.nameGoldpinger Pod 使用的 ServiceAccount空自动使用 fullnamegoldpinger.portGoldpinger 应用监听端口80extraEnv额外注入的环境变量列表[]service.typeService 类型LoadBalancerservice.portService HTTP 端口80service.annotationsService 注解{}ingress.enabled是否启用 Ingress 资源falseingress.annotationsIngress 注解如kubernetes.io/ingress.class: nginx、kubernetes.io/tls-acme: true{}ingress.pathIngress 路径/ingress.hosts访问 Goldpinger 的域名列表goldpinger.localingress.tlsIngress TLS 配置secretName hosts[]priorityClassNamePod 的 priorityClassName空字符串podAnnotationsPod 注解{}nodeSelectorPod 分配的节点标签选择器{}tolerationsPod 容忍的节点污点列表[]affinity节点/Pod 亲和性配置{}resourcesCPU/内存 requests 与 limits{}不设置默认值podSecurityPolicy.enabled是否启用 PodSecurityPolicyfalsepodSecurityPolicy.policyName使用的 PSP 名称unrestricted-pspserviceMonitor.enabled是否创建 ServiceMonitor 供 Prometheus Operator 采集falseserviceMonitor.selector附加标签用于被 Prometheus 发现prometheus: kube-prometheusserviceMonitor.namespaceServiceMonitor 资源所在命名空间monitoringREADME 描述为与 Goldpinger 同命名空间values 默认monitoringserviceMonitor.intervalPrometheus 抓取间隔30sserviceMonitor.honorLabels指标标签与目标标签冲突时是否优先保留指标标签false参数如何落地到模板这些参数并非孤立的 YAML 键值而是被 daemonset.yaml 等模板逐项消费镜像与拉取策略image: {{ .Values.image.repository }}:{{ .Values.image.tag }}imagePullPolicy: {{ .Values.image.pullPolicy }}若配置了image.pullSecrets会通过{{- range .Values.image.pullSecrets }}循环生成imagePullSecrets监听端口goldpinger.port同时驱动容器PORT环境变量、containerPort与探针端口修改它即可整体迁移应用端口Pod 调度priorityClassName、nodeSelector、affinity、tolerations均按 Kubernetes 原生语义渲染进 Pod spec资源限制resources通过toYaml原样注入容器 specvalues 中注释给出了推荐写法如limits: {cpu: 100m, memory: 128Mi}额外环境变量extraEnv以toYaml追加在模板内置的四个环境变量之后可用于注入日志级别、指标前缀等 Goldpinger 支持的运行时配置。通过 --set 覆盖参数安装时可用--set keyvalue覆盖任意参数多个参数用逗号分隔$ helm install --name my-release \ --set goldpinger.port8080,serviceAccount.namegoldpinger \ stable/goldpinger通过 values 文件覆盖参数更推荐的做法是编写独立的 values 文件然后使用-f引用$ helm install --name my-release -f values.yaml stable/goldpinger仓库自带的默认配置可直接参考 values.yaml其注释中还包含pullSecrets、Ingress 注解kubernetes.io/ingress.class: nginx、kubernetes.io/tls-acme、TLS 条目、资源限额等现成示例复制后按需修改即可。深入理解 RBAC 与 ServiceAccount 权限模型Goldpinger 需要列出集群中的 Pod 以完成实例发现因此 Chart 默认rbac.create: true创建了最小化的 ClusterRole。查看 clusterrole.yaml其权限规则仅为rules: - apiGroups: [] resources: [pods] verbs: [list]即仅授予对核心组pods资源的list权限符合最小权限原则。随后 clusterrolebinding.yaml 将该 ClusterRole 绑定到 Chart 生成的 ServiceAccount 上。ServiceAccount 的行为由serviceAccount.create与serviceAccount.name共同决定逻辑封装在 _helpers.tpl 的goldpinger.serviceAccountName模板函数中当serviceAccount.create: true时默认使用goldpinger.fullname通常是release名-goldpinger作为名称此时 serviceaccount.yaml 会实际创建该对象当serviceAccount.create: false时回退到名为default的 ServiceAccount或显式指定的serviceAccount.name。若你的集群已经启用了 RBAC 且预置了命名空间默认的 ServiceAccount可通过--set rbac.createfalse,serviceAccount.createfalse关闭自动创建将权限管理完全交给集群管理员。通过 Ingress 对外暴露 Goldpinger Web 界面Goldpinger 自带可视化 Web 界面若集群中已有 Nginx、Traefik 等 Ingress Controller可按 README 的指引开启 Ingress设置ingress.enabledtrue指定访问域名README 中提到ingress.hostname对应 values 中的ingress.hosts默认goldpinger.local按需添加注解例如ingress: enabled: true annotations: kubernetes.io/ingress.class: nginx kubernetes.io/tls-acme: true hosts: - goldpinger.example.com tls: - secretName: goldpinger-tls hosts: - goldpinger.example.com从 ingress.yaml 的实现看模板使用extensions/v1beta1API符合该 Chart 编写年代的标准会为ingress.hosts列表中的每个域名生成一条host - path(/后端为 Service 的 http 端口)规则当配置了ingress.tls时会将每个 secretName 与对应 hosts 写入spec.tls。配置完成后即可通过该域名访问 Goldpinger 的节点间网络状态页面。接入 PrometheusServiceMonitor 监控配置Goldpinger 实例的 HTTP 端点同时暴露 Prometheus 指标Chart 提供了与 Prometheus Operator 集成的开关。将serviceMonitor.enabled设为true即可生成 servicemonitor.yaml 定义的monitoring.coreos.com/v1资源关键配置点如下serviceMonitor.namespaceServiceMonitor 资源被创建到的命名空间values 默认monitoringREADME 描述为与 Goldpinger 相同的命名空间请以实际部署环境为准serviceMonitor.selector作为附加标签写入 ServiceMonitor 的 metadata.labels默认prometheus: kube-prometheusPrometheus 通过该标签选择要发现的 ServiceMonitorserviceMonitor.interval抓取间隔默认30s写入spec.endpoints[].intervalserviceMonitor.honorLabels设为true时当指标自带标签与目标target标签冲突优先保留指标标签采集端口固定为http即 Service 中名为http的端口spec.jobLabel: name与namespaceSelector.matchNames指向 Goldpinger 所在命名空间selector.matchLabels匹配 Goldpinger 的app.kubernetes.io/name与 instance 标签确保只抓取本 Chart 的实例。配置完成后Prometheus Operator 即可按30s或自定义间隔自动发现并抓取每个节点上 Goldpinger 的指标从而把网络探测数据纳入统一的监控告警体系。启用 PodSecurityPolicy可选若集群启用了 Pod Security Policy 机制可开启podSecurityPolicy.enabled: true并指定可用的策略名称默认unrestricted-psp。从 podsecuritypolicy.yaml 可以看到该模板会创建一个Role授予对指定podsecuritypolicies资源的use权限及对应的RoleBinding将 Chart 的 ServiceAccount 绑定到该策略上从而允许 Goldpinger Pod 在受限集群中正常运行。对于未启用 PSP 的集群保持默认false即可。进阶结合源码理解部署后的验证方式部署完成后可通过以下方式验证集群网络状态查看 DaemonSet 运行情况确认每个节点都有一个Running的goldpinger-daemonPodkubectl get pods -o wide -l app.kubernetes.io/namegoldpinger访问 Web 界面通过 Ingress 域名或 ServiceLoadBalancer类型会分配外部 IP访问界面会展示节点间的延迟与连通性抓取指标若开启了 ServiceMonitor可在 Prometheus 中按 job 名goldpinger查询实例间探测指标探针自检DaemonSet 模板内置的 liveness/readiness 探针均请求/路径Pod 处于 Ready 即代表 Goldpinger 自身 HTTP 服务正常。小结Goldpinger 通过 DaemonSet 在每个节点部署探测实例、以最小 RBAC 权限实现实例发现、并借助 Service/Ingress/ServiceMonitor 完成访问暴露与指标接入是一套轻量而实用的集群网络可观测性方案。本文覆盖了其 Helm Chart 的安装、参数、权限、暴露与监控接入全链路相关模板与默认值均可直接在仓库的 stable/goldpinger 目录中查阅和复用。赞分享【免费下载链接】charts⚠️(OBSOLETE) Curated applications for Kubernetes项目地址https://gitcode.com/gh_mirrors/chart/charts点击查看免费下载相关推荐独家时间旅行调试Cangjie DevEco Plugins TimeTravel 时间线回放原理揭秘独家时间旅行调试Cangjie DevEco Plugins TimeTravel 时间线回放原理揭秘 你是否还在为“程序一跑就错过现场”而抓狂Cangji存储分布式文件系统缓存大数据DISK vs MEMORYsimplekv双存储模式与配置参数完全指南DISK vs MEMORYsimplekv双存储模式与配置参数完全指南 simplekv 是一个用 Cangjie 语言实现的高性能、轻量级键值存储库支持Bitnami Kubernetes Event Exporter Helm Chart 部署指南Kubernetes 事件导出、监控与告警Bitnami Kubernetes Event Exporter Helm Chart 部署指南Kubernetes 事件导出、监控与告警 Kubernet云原生容器编排上一篇NNI 特征工程工具包内置特征选择器与自定义 Selector 开发实战下一篇如何在5分钟内免费获得专业级AI音频处理能力OpenVINO插件终极指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表