最新公告
  • 欢迎您光临悠哉网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入我们
  • 使用KubeNurse进行集群网络监控

    前言

    在Kubernetes中,网络是通过第三方网络插件来提供,这些三方插件本身的实现就比较复杂,以至于在排查网络问题时常常碰壁。那么有没有什么方式来监控集群中所有的网络连接呢?

    kubenurse就是这样一个项目,它通过监视集群中的所有网络连接,并提供监控指标供Prometheus采集。

    Kubenurse

    kubenurse的部署非常简单,使用Daemonset形式部署到集群节点上,Yaml文件在项目的example目录下。

    部署成功后,每5秒钟会对/alive发一次检查请求,然后其内部会运行各种方法全方位对集群网络进行检测,为了防止过多的网络流量,会对检查结果缓存3秒。其检测机制如下:

    从上图可以看出,kubenurse会对ingress、dns、apiserver、kube-proxy进行网络探测。

    所有的检查都会创建公开的指标,这些指标可用于检测:

    • SDN网络延迟以及错误
    • Kubelet之间的网络延迟以及错误
    • Pod与apiserver通信问题
    • Ingress往返网络延迟以及错误
    • Service往返网络延迟以及错误(kube-proxy)
    • Kube-apiserver问题
    • Kube-dns(CoreDns)错误
    • 外部DNS解析错误(ingress url解析)

    然后这些数据主要通过两个监控指标来体现:

    • kubenurse_errors_total:按错误类型划分的错误计数器
    • kubenurse_request_duration:按类型划分的请求时间分布

    这些指标都是通过Type类型进行标识,对应几种不同的检测目标:

    • api_server_direct:从节点直接检测 API Server
    • api_server_dns:从节点通过 DNS 检测 API Server
    • me_ingress:通过 Ingress 检测本服务 Service
    • me_service:使用 Service 检测本服务 Service
    • path_$KUBELET_HOSTNAME:节点之间的互相检测

    然后这些指标分别按P50,P90,P99分位数进行划分,就可以根据不同的情况来确认集群网络状况了。

    安装部署

    这里直接使用官方的部署文件进行部署。不过需要更改几个地方。(1)首先将代码clone到本地

    1. git clone https://github.com/postfinance/kubenurse.git 

    (2)进入example目录,修改ingress.yaml配置,主要是添加域名,如下。

    1. --- 
    2. apiVersion: extensions/v1beta1 
    3. kind: Ingress 
    4. metadata: 
    5.   annotations: 
    6.     kubernetes.io/ingress.class: nginx 
    7.   name: kubenurse 
    8.   namespace: kube-system 
    9. spec: 
    10.   rules: 
    11.   - host: kubenurse-test.coolops.cn 
    12.     http: 
    13.       paths: 
    14.       - backend: 
    15.           serviceName: kubenurse 
    16.           servicePort: 8080 

    (2)更新daemonset.yaml配置,主要是更改ingress的入口域名,如下。

    1. --- 
    2. apiVersion: apps/v1 
    3. kind: DaemonSet 
    4. metadata: 
    5.   labels: 
    6.     app: kubenurse 
    7.   name: kubenurse 
    8.   namespace: kube-system 
    9. spec: 
    10.   selector: 
    11.     matchLabels: 
    12.       app: kubenurse 
    13.   template: 
    14.     metadata: 
    15.       labels: 
    16.         app: kubenurse 
    17.       annotations: 
    18.         prometheus.io/path: "/metrics" 
    19.         prometheus.io/port: "8080" 
    20.         prometheus.io/scheme: "http" 
    21.         prometheus.io/scrape: "true" 
    22.     spec: 
    23.       serviceAccountName: nurse 
    24.       containers: 
    25.       - name: kubenurse 
    26.         env: 
    27.         - name: KUBENURSE_INGRESS_URL 
    28.           value: kubenurse-test.coolops.cn      # 需要更改的地方 
    29.         - name: KUBENURSE_SERVICE_URL 
    30.           value: http://kubenurse.kube-system.svc.cluster.local:8080 
    31.         - name: KUBENURSE_NAMESPACE 
    32.           value: kube-system 
    33.         - name: KUBENURSE_NEIGHBOUR_FILTER 
    34.           value: "app=kubenurse" 
    35.         image: "postfinance/kubenurse:v1.2.0" 
    36.         ports: 
    37.         - containerPort: 8080 
    38.           protocol: TCP 
    39.       tolerations: 
    40.       - effect: NoSchedule 
    41.         key: node-role.kubernetes.io/master 
    42.         operator: Equal 
    43.       - effect: NoSchedule 
    44.         key: node-role.kubernetes.io/control-plane 
    45.         operator: Equal 

    (4)新创建一个ServiceMonitor,用于获取指标数据,如下:

    1. apiVersion: monitoring.coreos.com/v1 
    2. kind: ServiceMonitor 
    3. metadata: 
    4.   name: kubenurse 
    5.   namespace: monitoring 
    6.   labels: 
    7.     k8s-app: kubenurse 
    8. spec: 
    9.   jobLabel: k8s-app 
    10.   endpoints: 
    11.   - port: "8080-8080"  
    12.     interval: 30s 
    13.     scheme: http 
    14.   selector: 
    15.     matchLabels: 
    16.      app: kubenurse 
    17.   namespaceSelector: 
    18.     matchNames: 
    19.     - kube-system 

    (5)部署应用,在example目录下执行以下命令。

    1. kubectl apply -f . 

    (6)等待所有应用变成running,如下。

    1. # kubectl get all -n kube-system -l app=kubenurse 
    2. NAME                  READY   STATUS    RESTARTS   AGE 
    3. pod/kubenurse-fznsw   1/1     Running   0          17h 
    4. pod/kubenurse-n52rq   1/1     Running   0          17h 
    5. pod/kubenurse-nwtl4   1/1     Running   0          17h 
    6. pod/kubenurse-xp92p   1/1     Running   0          17h 
    7. pod/kubenurse-z2ksz   1/1     Running   0          17h 
    8.  
    9. NAME                TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)    AGE 
    10. service/kubenurse   ClusterIP   10.96.229.244   <none>        8080/TCP   17h 
    11.  
    12. NAME                       DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR   AGE 
    13. daemonset.apps/kubenurse   5         5         5       5            5           <none>          17h 

    (7)到prometheus上查看是否正常获取数据。

    查看指标是否正常。

    (8)这时候就可以在grafana上画图,展示监控数据了,如下。

    参考文档

    【1】https://github.com/postfinance/kubenurse

    【2】https://github.com/postfinance/kubenurse/tree/master/examples

    【编辑推荐】

    1. 650万名以色列公民数据在网络泄露
    2. 大数据黑市交易触目惊心:平均每人至少有4条个人信息泄露 - 网络·安全技术周刊第480期
    3. 中国网络信息安全现状
    4. LMT欲与Omnispace合建5G空地混合网络
    5. 人类为什么会制造出比自己聪明的人工智能?背后是复杂网络支持
    1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
    2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
    3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
    4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
    5. 如有链接无法下载、失效或广告,请联系管理员处理!
    6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
    7. 如遇到加密压缩包,默认解压密码为"www.yoozai.net",如遇到无法解压的请联系管理员!
    悠哉网 » 使用KubeNurse进行集群网络监控

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    悠哉网 WWW.YOOZAI.NET
    悠哉网,用户消费首选的网站,喜欢你就悠哉一下。

    发表评论

    • 1002会员总数(位)
    • 40233资源总数(个)
    • 43本周发布(个)
    • 42 今日发布(个)
    • 377稳定运行(天)

    提供最优质的资源集合

    立即查看 了解详情