云边运维通信组件Tunnel

ACK Edge集群版本小于1.26时,系统会在集群创建完成后,默认部署edge-tunnel-server/edge-tunnel-agent组件,用于创建云端和边缘之间的运维通道,为您提供云端访问边缘的能力。本文介绍ACK Edge集群中的边缘运维通道关联组件和功能,以及如何扩展边缘监控能力。

背景信息

  • edge-tunnel-serverDeployment形式部署在云端节点上。edge-tunnel-agentDaemonSet形式部署在边缘节点上。

    说明

    ACK Edge集群版本大于等于1.26时,集群新增Raven组件功能,通过Raven组件实现云端访问边缘端的能力。更多信息,请参见通过使用跨域运维通信组件Raven

  • 原生Kubernetes集群中,云端控制面组件需要直接访问边缘节点的kubelet来执行运维命令,或者云端运维监控组件metrics-server需要从云端拉取边缘的监控指标数据。在ACK Edge集群的场景下,当您的边缘节点部署在内网时,云端无法直接访问边缘节点。

  • 无论是Kubernetes原生运维命令(例如kubectl logskubectl exec),还是metrics-server组件,都是通过访问边缘节点的kubelet组件的1025010255端口来下发运维命令的。

功能说明

  • 创建集群时,您需要选择购买至少1台云端ECS节点,用于部署edge-tunnel-server组件。

  • 为创建安全加密的公网运维通道,系统会为edge-tunnel-server组件创建一个SLB,边缘节点上的edge-tunnel-agent组件将通过该SLBedge-tunnel-server建立安全加密的运维通道。

  • 当云端组件(例如kube-apiserver、metrics-server)访问边缘节点1025010255端口时,ACK Edge集群默认会将访问请求自动导流到edge-tunnel-server组件,无需修改云端组件。

  • 具体实现原理如下图所示。G-11

说明
  • 当边缘节点和云端网络出现断连或者连接不稳定时,边缘运维通道可能无法正常工作。

  • 当您无意中删除或者停止了运维通道使用的SLB实例,边缘运维通道将无法正常工作。

  • 在低版本集群(例如1.16.9-aliyunedge.1)中,为确保组件正常运行,云端组件(例如metrics-server)和edge-tunnel-server需要部署在同一个ECS节点上。而从1.18.8-aliyunedge.1集群版本开始,支持云端组件(例如metrics-server)和edge-tunnel-server部署在不同的ECS节点上。

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

在业务上云过程中,需要访问边缘节点的非默认端口(即非1025010255端口)来收集监控数据。以云端访问边缘节点的90519052端口为例,说明如何配置非默认端口。

说明

9051端口监听协议为HTTP,9052端口监听协议为HTTPS。

集群版本1.20.11-aliyunedge.1

云端组件访问边缘节点非默认端口的监控数据支持通过HTTP协议和HTTPS协议访问,同时还支持监控边缘节点的Localhost Endpoint。

  • 通过更新kube-system/edge-tunnel-server-cfg configmaphttp-proxy-ports字段配置HTTP协议访问,字段格式为:非默认端口1,非默认端口2。

  • 通过更新kube-system/edge-tunnel-server-cfg configmaphttps-proxy-ports字段配置HTTPS协议访问,字段格式为:非默认端口1,非默认端口2。

  • 通过更新kube-system/edge-tunnel-server-cfg configmaplocalhost-proxy-ports字段配置如何监控边缘节点的Localhost Endpoint。字段默认配置“10250,10255,10266,10267”四个端口,新增端口可在后面增加。

通过云端组件访问边缘节点90519052端口的监控数据,并监控边缘节点的Localhost Endpoint,以边缘节点业务监听地址https://127.0.0.1:8080为例,您需要进行以下配置:

cat <<EOF | kubectl apply -f
apiVersion: v1
data:
  http-proxy-ports: "9051"
  https-proxy-ports: "9052, 8080"
  localhost-proxy-ports: "10250, 10255, 10266, 10267, 8080"
kind: ConfigMap
metadata:
  name: edge-tunnel-server-cfg
  namespace: kube-system
EOF

集群版本1.18.8-aliyunedge.1

云端组件访问边缘节点非默认端口的监控数据仅支持HTTP协议。您可以通过更新kube-system/edge-tunnel-server-cfg configmapdnat-ports-pair字段来配置,字段格式为:非默认端口=10264。

通过云端组件访问边缘节点9051端口的监控数据, 您需要进行以下配置:

cat <<EOF | kubectl apply -f
apiVersion: v1
data:
  dnat-ports-pair: '9051=10264'
kind: ConfigMap
metadata:
  name: edge-tunnel-server-cfg
  namespace: kube-system
EOF