为了给您提供完整的Kubernetes集群使用体验,集群创建完成后,系统会默认部署edge-tunnel-server/edge-tunnel-agent组件来创建云端和边缘之间的运维通道,为您提供云端访问边缘端的能力。本文主要为您介绍边缘托管集群中的边缘运维通道关联组件和功能,以及如何扩展边缘监控能力。

背景信息

  • 原生Kubernetes集群中,云端管控组件需要直接访问边缘节点的Kubelet来执行运维命令,或者云端运维监控组件metrics-server需要从云端拉取边缘的监控指标数据。在边缘托管集群的场景下,当您的边缘节点部署在内网时,云端无法直接访问边缘节点。
  • edge-tunnel-server采用Deployment模型部署在云端节点上。edge-tunnel-agent采用Daemonset模型部署在边缘节点上。
  • 无论是Kubernetes原生运维命令(例如:kubectl logs或kubectl exec),还是metrics-server组件,都是通过访问边缘节点的kubelet组件的10250和10255端口来下发运维命令的。

功能说明

  • 创建集群时,您需要选择购买至少1台云端ECS节点,用于部署边缘运维通道组件edge-tunnel-server
  • 为创建安全加密的公网运维通道,系统会为edge-tunnel-server组件创建的服务对象购买一个SLB,边缘节点上的edge-tunnel-agent将通过该SLB与edge-tunnel-server建立安全加密的运维通道。
  • 当云端组件(例如:kube-apiserver、metrics-server)访问边缘节点10250和10255端口时,边缘集群默认会将访问请求自动导流到edge-tunnel-server组件,云端组件无需做任何修改。
  • 本文具体实现原理如下图所示。G-11
说明
  • 当边缘节点和云端网络断连或者弱连接状态下,边缘运维通道可能无法正常工作。
  • 当您无意中删除或者停止了运维通道使用的SLB实例,边缘运维通道将无法正常工作。
  • 低版本集群(例如:v1.16.9-aliyunedge.1)的云端组件(例如:metrics-server)和edge-tunnel-server需要部署在同一个ECS节点,组件才能正常工作。从v1.18.8-aliyunedge.1集群版本开始,支持云端组件(例如:metrics-server)和edge-tunnel-server部署在不同ECS节点。

配置监控边缘节点的非默认端口

  • 业务上云过程中需要迁移原系统中的运维监控方案到云上,实现云下系统到云上的无缝迁移,需要访问边缘节点的非默认端口(即非10250和10255端口)来收集监控数据,例如:访问边缘节点9051端口的监控数据。
  • 边缘容器服务提供以下方式来配置云端组件访问边缘节点的非默认端口(即非10250和10255端口):
    • 更新kube-system/edge-tunnel-server-cfg configmap中的dnat-ports-pair字段。
    • dnat-ports-pair字段格式为:访问端口1=10264,访问端口2=10264
通过云端访问边缘节点9051和9052端口的监控数据, 您需要做以下配置:
cat <<EOF | kubectl apply -f
apiVersion: v1
data:
  dnat-ports-pair: '9051=10264,9052=10264'
kind: ConfigMap
metadata:
  name: edge-tunnel-server-cfg
  namespace: kube-system
EOF
说明 边缘节点的非默认端口(即非10250和10255端口)的监控数据只支持通过HTTP协议访问。