qidao123.com技术社区-IT企服评测·应用市场

标题: Kubernetes控制平面组件:Kubelet详解(一):API接口层介绍 [打印本页]

作者: 老婆出轨    时间: 7 天前
标题: Kubernetes控制平面组件:Kubelet详解(一):API接口层介绍
云原生学习门路导航页(连续更新中)

   本文是 kubernetes 的控制面组件 kubelet 系列文章第一篇,主要讲解了 kubelet是什么、核心功能、工作流程、架构设计。并且对kubelet架构的API接口层的主通信接口10250、cadvisor监控收罗端口4194、只读API端口10255、健康检查端口10248分别举行了详细介绍
  
  1.kubelet 简介

1.1.kubelet 是什么



1.2.kubelet 的核心功能

功能模块核心本领相关组件Pod 生命周期管理根据 PodSpec 创建/销毁容器,处理处罚重启计谋(Always/OnFailure/Never)PodManager、ContainerRuntime容器健康监控执行 Liveness/Readiness/Startup 探针,主动触发容器重启(失败时)ProbeManager、StatusManager资源管理监控 CPU/内存/磁盘利用,执行驱逐计谋(当节点资源不敷时)EvictionManager、CAdvisor存储卷管理挂载 PersistentVolume,处理处罚 Secret/ConfigMap 注入VolumeManager网络配置通过 CNI 插件为 Pod 分配 IP,维护网络定名空间NetworkPlugin节点状态陈诉每 10 秒向 API Server 上报节点资源利用率及健康状态API Server镜像管理主动拉取镜像,执行垃圾回收(凌驾磁盘阈值时按 LRU 计谋清理)ImageGC 1.3.kubelet核心工作流程

     1.4.kubelet 的 pod事件泉源

   参考:https://kubernetes.feisky.xyz/concepts/components/kubelet#pod-guan-li
  
2.Kubelet 架构设计



3.kubelet API 接口层

3.1.kubelet API 主通信端口:10250

3.1.1.端口 10250 的核心作用


3.1.2.协议与认证机制


3.1.3.关键 API 端点


3.1.3.1.监控与指标


3.1.3.2.Pod 与容器操作**


3.1.3.3.调试与健康检查**


3.1.4.安全配置

3.1.4.1.证书与 TLS


3.1.4.2.RBAC 授权


  1. apiVersion: rbac.authorization.k8s.io/v1
  2. kind: ClusterRole
  3. metadata:
  4.   name: kubelet-reader
  5. rules:
  6. - apiGroups: [""]
  7.   resources: ["nodes/metrics", "nodes/proxy", "nodes/log", "nodes/spec"]
  8.   verbs: ["get", "list", "watch"]
  9. ---
  10. apiVersion: rbac.authorization.k8s.io/v1
  11. kind: ClusterRoleBinding
  12. metadata:
  13.   name: kubelet-reader-binding
  14. subjects:
  15. - kind: ServiceAccount
  16.   name: prometheus
  17.   namespace: monitoring
  18. roleRef:
  19.   kind: ClusterRole
  20.   name: kubelet-reader
  21.   apiGroup: rbac.authorization.k8s.io
复制代码
3.1.5.访问方式示例

3.1.5.1.利用 kubectl proxy(绕过 TLS 验证)

  1. kubectl proxy --port=8080 &
  2. curl http://localhost:8080/api/v1/nodes/<node-name>/proxy/metrics/cadvisor
复制代码
3.1.5.2.直接访问(需证书或 Token)

  1. # 使用 ServiceAccount Token
  2. TOKEN=$(cat /var/run/secrets/kubernetes.io/serviceaccount/token)
  3. curl -k -H "Authorization: Bearer $TOKEN" https://<Node-IP>:10250/metrics/cadvisor
  4. # 使用客户端证书(如 kubeconfig 中的证书)
  5. curl --cert /path/to/client.crt --key /path/to/client.key --cacert /path/to/ca.crt https://<Node-IP>:10250/metrics
复制代码
3.1.6.生产情况最佳实践


3.2.cAdvisor资源监控数据收罗 端口:4194

3.2.1.cAdvisor 的作用


3.2.2.端口 4194 现已不支持


3.2.3.通过 Kubelet 主端口(10250)访问 cAdvisor 数据

  1. # 利用 kubectl 署理绕过 TLS 认证(仅测试情况)kubectl proxy --port=8080 &
  2. curl http://localhost:8080/api/v1/nodes/<node-name>/proxy/metrics/cadvisor
  3. # 直接访问(需配置证书或 Token)curl -k -H "Authorization: Bearer $(cat /var/run/secrets/kubernetes.io/serviceaccount/token)" https://<Node-IP>:10250/metrics/cadvisor
复制代码

  1. container_cpu_usage_seconds_total{container="nginx", namespace="default", pod="nginx-abc123"} 12345.67
  2. container_memory_usage_bytes{container="nginx", namespace="default", pod="nginx-abc123"} 56789012
复制代码

3.3.只读API 端口10255(状态查询)

3.3.1.端口 10255 的基本作用


3.3.2.端口 10255 的暴露端点


3.3.3.只读端口10255已默认弃用


  1. # kubelet -h | grep read-only-port
  2. --read-only-port int32  The read-only port for the Kubelet to serve on with no authentication/authorization (set to 0 to disable) (default 10255) (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
复制代码
3.3.4.如何启用 10255 端口(不推荐)


3.3.5.访问示例


  1. curl http://<Node-IP>:10255/pods
复制代码

  1. curl http://<Node-IP>:10255/metrics
复制代码

  1. curl -v http://<Node-IP>:10255/healthz
复制代码
3.3.6.利用 kubelet API 主通信端口 10250 更换 10255


  1. # 使用 ServiceAccount Token 访问(需 RBAC 授权)
  2. TOKEN=$(cat /var/run/secrets/kubernetes.io/serviceaccount/token)
  3. curl -k -H "Authorization: Bearer $TOKEN" https://<Node-IP>:10250/metrics
复制代码

特性端口 10255 (只读)端口 10250 (读写)协议HTTP(明文)HTTPS(加密)认证无需证书或 Token功能只读数据(如监控、Pod 列表)读写操作(如执行下令、日志访问)安全性低高默认状态新版本默认关闭始终启用 3.4.健康检查 /healthz 端口10248

3.4.1./healthz 端点简介


3.4.2./healthz 访问示例


3.4.3.10248 与主端口 10250 的区别

特性端口 10248 (--healthz-port)端口 10250(主 API 端口)协议HTTP(明文)HTTPS(加密)访问范围仅本机(localhost)外部网络(默认监听所有接口)功能仅健康检查(/healthz)全功能 API(Pod 管理、监控等)认证无逼迫证书/Token 认证 3.4.4.--healthz-port 参数状态与版本变化


4.kubelet 核心功能层



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




欢迎光临 qidao123.com技术社区-IT企服评测·应用市场 (https://dis.qidao123.com/) Powered by Discuz! X3.4