ACK Edge集群版本小于1.26时,系统会在集群创建完成后,默认部署edge-tunnel-server/edge-tunnel-agent组件,用于创建云端和边缘之间的运维通道,为您提供云端访问边缘的能力。本文介绍ACK Edge集群中的边缘运维通道关联组件和功能,以及如何扩展边缘监控能力。
背景信息
edge-tunnel-server以Deployment形式部署在云端节点上。edge-tunnel-agent以DaemonSet形式部署在边缘节点上。
说明当ACK Edge集群版本大于等于1.26时,集群新增Raven组件功能,通过Raven组件实现云端访问边缘端的能力。更多信息,请参见通过使用跨域运维通信组件Raven。
原生Kubernetes集群中,云端控制面组件需要直接访问边缘节点的kubelet来执行运维命令,或者云端运维监控组件metrics-server需要从云端拉取边缘的监控指标数据。在ACK Edge集群的场景下,当您的边缘节点部署在内网时,云端无法直接访问边缘节点。
无论是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端口时,ACK Edge集群默认会将访问请求自动导流到edge-tunnel-server组件,无需修改云端组件。
具体实现原理如下图所示。
当边缘节点和云端网络出现断连或者连接不稳定时,边缘运维通道可能无法正常工作。
当您无意中删除或者停止了运维通道使用的SLB实例,边缘运维通道将无法正常工作。
在低版本集群(例如1.16.9-aliyunedge.1)中,为确保组件正常运行,云端组件(例如metrics-server)和edge-tunnel-server需要部署在同一个ECS节点上。而从1.18.8-aliyunedge.1集群版本开始,支持云端组件(例如metrics-server)和edge-tunnel-server部署在不同的ECS节点上。
配置监控边缘节点的非默认端口
在业务上云过程中,需要访问边缘节点的非默认端口(即非10250和10255端口)来收集监控数据。以云端访问边缘节点的9051和9052端口为例,说明如何配置非默认端口。
9051端口监听协议为HTTP,9052端口监听协议为HTTPS。
集群版本1.20.11-aliyunedge.1
云端组件访问边缘节点非默认端口的监控数据支持通过HTTP协议和HTTPS协议访问,同时还支持监控边缘节点的Localhost Endpoint。
通过更新
kube-system/edge-tunnel-server-cfg configmap
的http-proxy-ports
字段配置HTTP协议访问,字段格式为:非默认端口1,非默认端口2。通过更新
kube-system/edge-tunnel-server-cfg configmap
的https-proxy-ports
字段配置HTTPS协议访问,字段格式为:非默认端口1,非默认端口2。通过更新
kube-system/edge-tunnel-server-cfg configmap
的localhost-proxy-ports
字段配置如何监控边缘节点的Localhost Endpoint。字段默认配置“10250,10255,10266,10267”四个端口,新增端口可在后面增加。
通过云端组件访问边缘节点9051和9052端口的监控数据,并监控边缘节点的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 configmap
的dnat-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