当前位置: 首页 > news >正文

会小二也是做会议网站的全国职业生涯规划大赛官网

会小二也是做会议网站的,全国职业生涯规划大赛官网,印章在线生成器,推广赚钱返佣平台一、什么是 Kubernetes CoreDNS#xff1f; CoreDNS 是 Kubernetes 环境的DNS add-on 组件#xff0c;它是在控制平面节点中运行的组件之一#xff0c;使其正常运行和响应是 Kubernetes 集群正常运行的关键。DNS 是每个体系结构中最敏感和最重要的服务之一。应用程序、微服…一、什么是 Kubernetes CoreDNS CoreDNS 是 Kubernetes 环境的DNS add-on 组件它是在控制平面节点中运行的组件之一使其正常运行和响应是 Kubernetes 集群正常运行的关键。DNS 是每个体系结构中最敏感和最重要的服务之一。应用程序、微服务、服务、主机……如今万物互联并不一定意味着只用于内部服务它也可以应用于外部服务。DNS 负责解析域名并关联内部或外部服务和 PodIP维护 Pod 的 DNS 记录是一项关键任务尤其是涉及到临时 Pod 时IP 地址可以在没有警告的情况下随时更改。从 Kubernetes 1.11 开始在基于 DNS 的服务发现达到一般可用性 (GA) 之后引入了CoreDNS 作为 kube-dns 的替代方案CoreDNS 到目前为止一直是 Kubernetes 集群事实上的 DNS 引擎。顾名思义CoreDNS 是一种用 Go 编写的 DNS 服务因其灵活性而被广泛采用。 谈到 kube-DNS 附加组件它是以单个 pod 中三个不同容器的形式提供整个 DNS 功能: kubedns、 dnsmasq 和 sidecar kubedns这是 Kubernetes 的 SkyDNS 实现它负责 Kubernetes 集群内的 DNS 解析它监视 Kubernetes API 并提供适当的 DNS 记录 dnsmasq: 为 SkyDNS 解析请求提供 DNS 缓存机制 sidecar此容器导出指标并对 DNS 服务执行健康检查。 CoreDNS 解决了 Kube-dns 当时带来的一些问题Dnsmasq 引入了一些安全漏洞问题导致在过去需要 Kubernetes 安全补丁。此外CoreDNS 在一个容器中而不是 kube-dns 中需要的三个容器中提供所有功能解决了 kube-dns 中外部服务的存根域的一些其他问题。CoreDNS 在 9153 端口上公开其指标端点并且可以从 SDN 网络中的 Pod 或主机节点网络访问它。 # kubectl get ep kube-dns -n kube-system -o json |jq -r .subsets [{addresses: [{ip: 192.169.107.100,nodeName: k8s-control-2.lab.example.com,targetRef: {kind: Pod,name: coredns-565d847f94-rz4b6,namespace: kube-system,uid: c1b62754-4740-49ca-b506-3f40fb681778}},{ip: 192.169.203.46,nodeName: k8s-control-3.lab.example.com,targetRef: {kind: Pod,name: coredns-565d847f94-8xqxg,namespace: kube-system,uid: bec3ca63-f09a-4007-82e9-0e147e8587de}}],ports: [{name: dns-tcp,port: 53,protocol: TCP},{name: dns,port: 53,protocol: UDP},{name: metrics,port: 9153,protocol: TCP}]} ]二、如何在 Kubernetes 中监控 CoreDNS 正如刚刚那样CoreDNS 已经被检测并在每个 CoreDNS Pod 的端口 9153 上公开了 /metrics 端点。访问这个 /metrics 端点很简单只需运行 curl 并立即开始提取 CoreDNS 指标。 ① 手动访问端点 知道运行 CoreDNS 的端点或 IP 后请尝试访问 9153 端口 # curl http://192.169.203.46:9153/metrics # HELP coredns_build_info A metric with a constant 1 value labeled by version, revision, and goversion from which CoreDNS was built. # TYPE coredns_build_info gauge coredns_build_info{goversiongo1.18.2,revision45b0a11,version1.9.3} 1 # HELP coredns_cache_entries The number of elements in the cache. # TYPE coredns_cache_entries gauge coredns_cache_entries{serverdns://:53,typedenial,zones.} 46 coredns_cache_entries{serverdns://:53,typesuccess,zones.} 9 # HELP coredns_cache_hits_total The count of cache hits. # TYPE coredns_cache_hits_total counter coredns_cache_hits_total{serverdns://:53,typedenial,zones.} 6471 coredns_cache_hits_total{serverdns://:53,typesuccess,zones.} 6596 # HELP coredns_cache_misses_total The count of cache misses. Deprecated, derive misses from cache hits/requests counters. # TYPE coredns_cache_misses_total counter coredns_cache_misses_total{serverdns://:53,zones.} 1951 # HELP coredns_cache_requests_total The count of cache requests. # TYPE coredns_cache_requests_total counter coredns_cache_requests_total{serverdns://:53,zones.} 15018 # HELP coredns_dns_request_duration_seconds Histogram of the time (in seconds) each request took per zone. # TYPE coredns_dns_request_duration_seconds histogram coredns_dns_request_duration_seconds_bucket{serverdns://:53,zone.,le0.00025} 14098 coredns_dns_request_duration_seconds_bucket{serverdns://:53,zone.,le0.0005} 14836 coredns_dns_request_duration_seconds_bucket{serverdns://:53,zone.,le0.001} 14850 coredns_dns_request_duration_seconds_bucket{serverdns://:53,zone.,le0.002} 14856 coredns_dns_request_duration_seconds_bucket{serverdns://:53,zone.,le0.004} 14857 coredns_dns_request_duration_seconds_bucket{serverdns://:53,zone.,le0.008} 14870 coredns_dns_request_duration_seconds_bucket{serverdns://:53,zone.,le0.016} 14879 coredns_dns_request_duration_seconds_bucket{serverdns://:53,zone.,le0.032} 14883 coredns_dns_request_duration_seconds_bucket{serverdns://:53,zone.,le0.064} 14884 coredns_dns_request_duration_seconds_bucket{serverdns://:53,zone.,le0.128} 14884 coredns_dns_request_duration_seconds_bucket{serverdns://:53,zone.,le0.256} 14885 coredns_dns_request_duration_seconds_bucket{serverdns://:53,zone.,le0.512} 14886 coredns_dns_request_duration_seconds_bucket{serverdns://:53,zone.,le1.024} 14887 coredns_dns_request_duration_seconds_bucket{serverdns://:53,zone.,le2.048} 14903 coredns_dns_request_duration_seconds_bucket{serverdns://:53,zone.,le4.096} 14911 coredns_dns_request_duration_seconds_bucket{serverdns://:53,zone.,le8.192} 15018 coredns_dns_request_duration_seconds_bucket{serverdns://:53,zone.,leInf} 15018 coredns_dns_request_duration_seconds_sum{serverdns://:53,zone.} 698.531992215999 coredns_dns_request_duration_seconds_count{serverdns://:53,zone.} 15018 … (output truncated)还可以/metrics通过 Kubernetes 集群中默认公开的 CoreDNS Kubernetes 服务访问端点 # kubectl get svc -n kube-system NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kube-dns ClusterIP 10.96.0.10 none 53/UDP,53/TCP,9153/TCP 129d# kubectl exec -it my-pod -n default -- /bin/bash# curl http://kube-dns.kube-system.svc:9153/metrics② 如何配置 Prometheus 以抓取 CoreDNS 指标 Prometheus 提供了一组角色来开始发现目标并从多个来源如 Pods、 Kubernetes 节点和 Kubernetes 服务等获取指标。当需要从嵌入在 Kubernetes 集群中的 CoreDNS 服务中获取指标时只需要使用适当的配置来配置 prometheus.yml 文件这里应该使用 endpoints role 来发现这个目标。编辑包含 prometheus.yml 配置文件的 ConfigMap # kubectl edit cm prometheus-server -n monitoring -o yaml然后在 scrape_configs 部分下添加下面的配置片段 - honor_labels: truejob_name: kubernetes-service-endpointskubernetes_sd_configs:- role: endpointsrelabel_configs:- action: keepregex: truesource_labels:- __meta_kubernetes_service_annotation_prometheus_io_scrape- action: dropregex: truesource_labels:- __meta_kubernetes_service_annotation_prometheus_io_scrape_slow- action: replaceregex: (https?)source_labels:- __meta_kubernetes_service_annotation_prometheus_io_schemetarget_label: __scheme__- action: replaceregex: (.)source_labels:- __meta_kubernetes_service_annotation_prometheus_io_pathtarget_label: __metrics_path__- action: replaceregex: (.?)(?::\d)?;(\d)replacement: $1:$2source_labels:- __address__- __meta_kubernetes_service_annotation_prometheus_io_porttarget_label: __address__- action: labelmapregex: __meta_kubernetes_service_annotation_prometheus_io_param_(.)replacement: __param_$1- action: labelmapregex: __meta_kubernetes_service_label_(.)- action: replacesource_labels:- __meta_kubernetes_namespacetarget_label: namespace- action: replacesource_labels:- __meta_kubernetes_service_nametarget_label: service- action: replacesource_labels:- __meta_kubernetes_pod_node_nametarget_label: node此时在重新部署 Prometheus Pod 后应该能够在 Prometheus 控制台中看到可用的 CoreDNS 指标端点转到 Status - Targets CoreDNS 指标从现在开始可用并可从 Prometheus 控制台访问 三、检查指标 CoreDNS 指标可能因 Kubernetes 版本和平台而异。在这里使用了 Kubernetes 1.25 和 CoreDNS 1.9.3可以在 CoreDNS 存储库中检查适用于版本的指标。首先集群中运行的 CoreDNS 副本数量可能会有所不同因此最好进行监控以防出现任何可能影响可用性和性能的变化。CoreDNS 副本数如果想监控在 Kubernetes 环境中运行的 CoreDNS 副本数可以通过计算coredns_build_info metric此指标提供有关在此类 Pod 上运行的 CoreDNS 构建的信息。 count(coredns_build_info)从现在开始遵循四个黄金信号方法。 ① 错误 Errors 能够测量 CoreDNS 服务中的错误数量是更好地了解 Kubernetes 集群、应用程序和服务健康状况的关键。如果任何应用程序或内部 Kubernetes 组件从 DNS 服务收到意外错误响应您可能会遇到严重的麻烦。当心 SERVFAIL 和 REFUSED 错误在解析 Kubernetes 内部组件和应用程序的名称时这些可能意味着问题。coredns_dns_responses_total此计数器提供有关 CoreDNS 响应代码、命名空间和 CoreDNS 实例的数量的信息可能希望获取每个响应代码的速率它始终是测量 CoreDNS 实例中的错误率的有用方法 sum(rate(coredns_dns_responses_total{instance~.*}[2m])) by (rcode, instance)② 延迟 Latency 测量延迟是确保 DNS 服务性能最佳以在 Kubernetes 中正常运行的关键如果延迟很高或随着时间的推移而增加则可能表示存在负载问题如果 CoreDNS 实例过载可能会遇到 DNS 名称解析问题并预计应用程序和 Kubernetes 内部服务会出现延迟甚至中断。coredns_dns_request_duration_seconds_bucketCoreDNS 请求持续时间以秒为单位可能想要计算第 99 个百分位数以查看延迟在 CoreDNS 实例之间的分布情况 histogram_quantile(0.99, sum(rate(coredns_dns_request_duration_seconds_bucket{instance~.*}[2m])) by (server,zone,le,instance))③ 流量 Traffic CoreDNS 服务正在处理的流量或请求量监控 CoreDNS 中的流量非常重要值得定期检查。观察流量是否有峰值或任何趋势变化是保证良好性能和避免问题的关键。coredns_dns_requests_total每个区域、协议和系列的 DNS 请求计数器如果希望按类型A、AAAA测量和监控 CoreDNS 请求的速率A 代表 ipv4 查询而 AAAA 是 ipv6 查询 (sum(rate(coredns_dns_requests_total{instance~.*}[2m])) by (type,instance))④ 饱和度 Saturation 可以使用系统资源消耗指标例如 CoreDNS Pod 的 CPU、内存和网络使用情况轻松监控 CoreDNS 饱和度。 ⑤ 其他的 CoreDNS 实现了一种缓存机制允许 DNS 服务缓存记录长达 3600 秒此缓存可以显着降低 CoreDNS 负载并提高性能。coredns_cache_hits_total缓存命中计数器可能希望通过运行以下查询来监视缓存命中率多亏了这个 PromQL 查询可以轻松监控 CoreDNS 缓存命中的拒绝率和成功率 sum(rate(coredns_cache_hits_total{instance~.*}[2m])) by (type,instance)四、 结论 与 kube-dns 一起CoreDNS 是可用于在 Kubernetes 环境中实施 DNS 服务的选择之一。DNS 是 Kubernetes 集群正常运行所必需的而 CoreDNS 一直是大多数人的首选因为它的灵活性以及与 kube-dns 相比它解决的问题数量。如果想确保 Kubernetes 基础设施健康且正常工作必须持续检查 DNS 服务确保在每个应用程序、操作系统、IT 架构或云环境中正常运行是关键。
http://www.tj-hxxt.cn/news/140257.html

相关文章:

  • 盐城快速建设网站公司国内卖到国外的电商平台
  • 响应式企业网站开发所用的平台中国互联网协会是什么单位
  • 微信朋友圈做网站推广赚钱吗有网页设计这个专业吗
  • django网站开发实例pdf深圳华强北封闭了吗
  • 建站教程流程图公司网站建设问题
  • 微网站建设哪家好免费广告设计
  • 公司报备网站郑州竞价代运营公司
  • 静态营销网站代码手机制作网页链接的软件
  • 西安做网站公司xamokj网站根目录 本地共享
  • 小白如何建网站池州建设机械网站
  • 网站做app用什么语言做网站 转行
  • 网站建设备案微信小程序做一个多少钱
  • 长春火车站在哪个街道易企秀网站开发技术
  • 安顺网站开发免费seo教程分享
  • 通用网站后台管理系统(php版)硬件开发面试题
  • 上鼎工程建设有限公司网站谷歌play商店官网
  • php网站开发案例教程专业网站推广优化
  • 网站建设怎么引流做 爱 网站视频短片
  • 创意专业网站建设在线制作网站公章
  • 太原适合网站设计地址网站建设好的
  • 建湖网站建设wordpress腾讯地图插件
  • 网站图片加alt西宁百度seo
  • 秦皇岛网站制作与网站建设公司外贸网站建设注意事项
  • 手机网站打开很慢注册公司费用大概多少
  • 下载网站站开发菏泽建设公司网站
  • 网站建设技术服务公司行业门户网站开发
  • 四川省建设工程质量监督总站网站广告设计哪个网站好
  • 高端网站建设哪些好丹阳杨文军
  • 培训教材网站建设宝塔ssl文件位置wordpress
  • 小米商城的网站建站网站开发栏目需求1