“「K8S 生态周报」内容主要包含我所接触到的 K8S 生态相关的每周值得推荐的一些信息。”
Prometheus blackbox_exporter v0.20.0 正式发布
Prometheus 中的 blackbox_exporter 我们一般使用它进行黑盒监控,比如对一些 HTTP/HTTPS,DNS,TCP 等接口或者请求。
在这个版本中又增加了很多有趣的特性,我们一起来看看。
- #835 增加了对 gRPC 接口的健康检查,现在 gRPC 用的也越来越多了。要知道在两年前发起类似功能讨论的时候,当时的维护者还认为 gRPC 支持已经超过了项目的职责范围,不过目前可以看到 blackbox_exporter 已经基本涵盖到了我们所需要的各类协议。
如果你使用了这个功能的话,它会产生一些 metrics 可供我们进行监控告警。
代码语言:javascript复制probe_grpc_healthcheck_response{serving_status="UNKNOWN"}=0
probe_grpc_healthcheck_response{serving_status="SERVING"}=1
probe_grpc_healthcheck_response{serving_status="NOT_SERVING"}=0
probe_grpc_healthcheck_response{serving_status="SERVICE_UNKNOWN"}=0
- #823 为 HTTP 类型的任务增加了
Hostname
参数,这可以在发起请求的时候传递过去Host
请求头,在配置任务的时候可以使用如下的配置作为参考:
scrape_configs:
- job_name: blackbox_all
metrics_path: /probe
params:
module: [ http_2xx ] # Look for a HTTP 200 response.
dns_sd_configs:
- names:
- example.com
- prometheus.io
type: A
port: 443
relabel_configs:
- source_labels: [__address__]
target_label: __param_target
replacement: https://$1/ # Make probe URL be like https://1.2.3.4:443/
- source_labels: [__param_target]
target_label: instance
- target_label: __address__
replacement: 127.0.0.1:9115 # The blackbox exporter's real hostname:port.
- source_labels: [__meta_dns_name]
target_label: __param_hostname # Make domain name become 'Host' header for probe requests
- source_labels: [__meta_dns_name]
target_label: vhost # and store it in 'vhost' label
更多详细信息请参考其 ReleaseNote
runc v1.1.1 发布
runc 是一个底层容器运行时。我之前的文章中有很多篇关于 runc 的内容,如有兴趣可以翻翻看。
事实上 runc 作为一个底层容器运行时,它的发布频率是很低的,毕竟在云原生领域中有大量的项目都依赖于 runc 或者将 runc 作为依赖导入, runc 每次发布新版本,这些项目一般也需要进行依赖的更新。
本次发布的 v1.1.1 只是一个小版本更新,主要是进行一些 bugfix 。我们来看看其中值得关注的内容:
在之前版本中,如果遇到了 statfs("/sys/fs/cgroup/unified")
发生除了 ENOENT
外的错误,都会引起 panic 。本次在 #3433 中对其进行了调整,不再会 panic ,而是会记录下 日志。
此外, 通过在 #3398 中修正了对/sys/kernel/cgroup/delegate
文件中包含的内容的检查。因为并非所有的 cgroup 中都包含了此内容。
更多详细信息请参考其 ReleaseNote
上游进展
- #109074 · kubernetes/kubernetes kubeadm 中为 etcd 的 static Pod 增加了一个
--experimental-initial-corrupt-check
选项,可以用来确认 etcd member 中数据的一致性。这个特性预期在 etcd 的 v3.6 版本中会正式可用。此外,etcd 的 Release 页面也写了,当前不建议将 etcd 3.5.x 用于生产环境,如果尚未进行升级,可以先继续使用 3.4.x。如果已经升级了,那么可以自行增加此参数; - #108032 · kubernetes/kubernetes 这个 PR 为 CronJob 增加了一个
timeZone
的字段,这是根据 KEP 3140 进行实现的。从此大家在 Kubernetes 中使用 CronJob 时,就可以比较方便的去设置时区了。