22.1 k8s不同role级别的服务发现

打印 上一主题 下一主题

主题 1827|帖子 1827|积分 5481

本节重点介绍 :



  • 服务发现的应用
  • 3种采集的k8s服务发现role

    • 容器基础资源指标 role :node
    • k8s服务组件指标 role :endpoint
    • 部署在pod中业务埋点指标 role :pod

服务发现的应用



  • 全部组件将自身指标暴露在各自的服务端口上,prometheus通过pull过来拉取指标
  • 但是prometheus须要知道各个目标的地址是多少,而且须要实时感知他们的变化
  • 所以接纳服务发现是最好的解决方式
容器基础资源指标



  • 我们可以看到prometheus接纳k8s服务发现,其中role :node 代表发现全部的node。
  1. - job_name: kubernetes-nodes-cadvisor
  2.   kubernetes_sd_configs:
  3.   - role: node
复制代码


  • 其中的原理是通过监听k8s node,一旦node参加(扩容),node脱离(缩容),prometheus可以实时收到node的信息
  • 通过访问节点的cadvisor指标path如node_ip:10250/metrics/cadvisor获取到相关指标
  • 通过prometheus的target展示页面(/targets)可以看到cadvisor node发现的效果,
  • target效果

  • discovery 效果

k8s服务组件指标

kube-scheduler



  • 采集配置如下
  1. - job_name: kube-scheduler
  2.   kubernetes_sd_configs:
  3.   - role: endpoints
  4.     kubeconfig_file: ""
  5.     follow_redirects: true
复制代码


  • 接纳k8s服务发现,其中role :endpoints 代表发现全部的endpoints
  • endpoint 可以理解为service向其发送流量的对象的IP地址
  • 在之前我们创建的控制平面暴露的service中,kube-scheduler的配置如下
  1. ---
  2. apiVersion: v1
  3. kind: Service
  4. metadata:
  5.   namespace: kube-system
  6.   name: kube-scheduler
  7.   labels:
  8.     k8s-app: kube-scheduler
  9. spec:
  10.   selector:
  11.     component: kube-scheduler
  12.   ports:
  13.   - name: http-metrics
  14.     port: 10259
  15.     targetPort: 10259
  16.     protocol: TCP
复制代码


  • 那么对应的endpoint可以describe到,就是下面所示的172.20.70.205:10259
  1. [root@k8s-master01 ~]# kubectl describe svc kube-scheduler -n kube-system  
  2. Name:              kube-scheduler
  3. Namespace:         kube-system
  4. Labels:            k8s-app=kube-scheduler
  5. Annotations:       <none>
  6. Selector:          component=kube-scheduler
  7. Type:              ClusterIP
  8. IP Families:       <none>
  9. IP:                10.96.208.114
  10. IPs:               10.96.208.114
  11. Port:              http-metrics  10259/TCP
  12. TargetPort:        10259/TCP
  13. Endpoints:         172.20.70.205:10259
  14. Session Affinity:  None
  15. Events:            <none>
复制代码


  • 这个和prometheus kube-scheduler target页面是同等的

kube-controller-manager



  • 采集配置如下
  1. - job_name: kube-controller-manager
  2.   kubernetes_sd_configs:
  3.   - role: endpoints
  4.     kubeconfig_file: ""
  5.     follow_redirects: true
复制代码


  • 接纳k8s服务发现,其中role :endpoints 代表发现全部的endpoints
  • 在之前我们创建的控制平面暴露的service中,kube-controller-manager的配置如下
  1. ---
  2. apiVersion: v1
  3. kind: Service
  4. metadata:
  5.   namespace: kube-system
  6.   name: kube-controller-manager
  7.   labels:
  8.     k8s-app: kube-controller-manager
  9. spec:
  10.   selector:
  11.     component: kube-controller-manager
  12.   ports:
  13.   - name: http-metrics
  14.     port: 10257
  15.     targetPort: 10257
  16.     protocol: TCP
复制代码


  • 那么对应的endpoint可以describe到,就是下面所示的172.20.70.205:10257
  1. [root@k8s-master01 ~]# kubectl describe svc kube-controller-manager -n kube-system                              
  2. Name:              kube-controller-manager
  3. Namespace:         kube-system
  4. Labels:            k8s-app=kube-controller-manager
  5. Annotations:       <none>
  6. Selector:          component=kube-controller-manager
  7. Type:              ClusterIP
  8. IP Families:       <none>
  9. IP:                10.96.35.204
  10. IPs:               10.96.35.204
  11. Port:              http-metrics  10257/TCP
  12. TargetPort:        10257/TCP
  13. Endpoints:         172.20.70.205:10257
  14. Session Affinity:  None
  15. Events:            <none>
复制代码


  • 这个和prometheus kube-controller-manager target页面是同等的
kube-etcd



  • 采集配置如下
  1. - job_name: kube-etcd
  2.   kubernetes_sd_configs:
  3.   - role: endpoints
  4.     kubeconfig_file: ""
  5.     follow_redirects: true
复制代码


  • 接纳k8s服务发现,其中role :endpoints 代表发现全部的endpoints
  • 在之前我们创建的控制平面暴露的service中,kube-etcd的配置如下
  1. ---
  2. apiVersion: v1
  3. kind: Service
  4. metadata:
  5.   namespace: kube-system
  6.   name: kube-etcd
  7.   labels:
  8.     k8s-app: kube-etcd
  9. spec:
  10.   selector:
  11.     component: etcd
  12.     tier: control-plane
  13.   ports:
  14.   - name: http-metrics
  15.     port: 2379
  16.     targetPort: 2379
  17.     protocol: TCP
复制代码


  • 那么对应的endpoint可以describe到,就是下面所示的172.20.70.205:2379
  1. [root@prome-master01 ~]# kubectl describe  svc kube-etcd -n kube-system
  2. Name:              kube-etcd
  3. Namespace:         kube-system
  4. Labels:            k8s-app=kube-etcd
  5. Annotations:       <none>
  6. Selector:          component=etcd,tier=control-plane
  7. Type:              ClusterIP
  8. IP Family Policy:  SingleStack
  9. IP Families:       IPv4
  10. IP:                10.96.136.217
  11. IPs:               10.96.136.217
  12. Port:              http-metrics  2379/TCP
  13. TargetPort:        2379/TCP
  14. Endpoints:         192.168.3.200:2379
  15. Session Affinity:  None
  16. Events:            <none>
复制代码


  • 这个和prometheus kube-etcd target页面是同等的

部署在pod中业务埋点指标



  • 采集配置如下
  1. - job_name: kubernetes-pods
  2.   kubernetes_sd_configs:
  3.   - role: pod
  4.     kubeconfig_file: ""
  5.     follow_redirects: true
复制代码


  • 接纳k8s服务发现,其中role :pods 代表发现全部的pods,相当于实行kubectl get pod -A
  1. [root@k8s-master01 ~]# kubectl get pod -A
  2. NAMESPACE         NAME                                           READY   STATUS    RESTARTS   AGE
  3. calico-system     calico-kube-controllers-854b9dcf89-gct84       1/1     Running   5          139d
  4. calico-system     calico-node-58m74                              1/1     Running   7          139d
  5. calico-system     calico-node-8pwz5                              1/1     Running   1          42d
  6. calico-system     calico-typha-56958ddd97-9zpd2                  1/1     Running   2          42d
  7. calico-system     calico-typha-56958ddd97-gnt8k                  1/1     Running   8          139d
  8. default           grafana-d5d85bcd6-f74ch                        1/1     Running   0          4d5h
  9. default           grafana-d5d85bcd6-l44mx                        1/1     Running   0          4d5h
  10. default           ink8s-pod-metrics-deployment-85d9795d6-95lsp   1/1     Running   0          20h
  11. ingress-nginx     ingress-nginx-controller-6cb6fdd64b-p4s65      1/1     Running   0          4d5h
  12. kube-admin        k8s-mon-daemonset-z6sfw                        1/1     Running   1          42d
  13. kube-admin        k8s-mon-deployment-6d7d58bdc8-rxj42            1/1     Running   0          4d5h
  14. kube-system       coredns-68b9d7b887-ckwgh                       1/1     Running   2          139d
  15. kube-system       coredns-68b9d7b887-vfmft                       1/1     Running   2          139d
  16. kube-system       etcd-k8s-master01                              1/1     Running   7          125d
  17. kube-system       kube-apiserver-k8s-master01                    1/1     Running   2          74d
  18. kube-system       kube-controller-manager-k8s-master01           1/1     Running   66         136d
  19. kube-system       kube-proxy-kc258                               1/1     Running   1          42d
  20. kube-system       kube-proxy-zx87g                               1/1     Running   2          139d
  21. kube-system       kube-scheduler-k8s-master01                    1/1     Running   64         83d
  22. kube-system       kube-state-metrics-564668c858-dnmnh            1/1     Running   0          4d3h
  23. kube-system       metrics-server-7dbf6c4558-zwp5m                1/1     Running   0          4d5h
  24. kube-system       prometheus-0                                   2/2     Running   0          4d3h
  25. tigera-operator   tigera-operator-cf6b69777-mlgk9                1/1     Running   85         139d
复制代码


  • 然后访问的时候pod的ip,因为在k8s中是pod之间网络是扁平的,所以prometheus的pod可以访问到其他的pod
  • target效果

  • discovery效果

本节重点总结 :



  • 服务发现的应用
  • 3种采集的k8s服务发现role

    • 容器基础资源指标 role :node
    • k8s服务组件指标 role :endpoint
    • 部署在pod中业务埋点指标 role :pod


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
继续阅读请点击广告

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

南飓风

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表