ACK@Edge是业界首个非侵入的边缘计算云原生产品服务,为了给您提供云边一体化的使用体验,通过InClusterConfig访问kube-apiserver的业务Pod,无需任何修改,可以直接被部署到边缘环境。本文介绍如何在边缘场景无缝运行使用InClusterConfig的业务Pod。
背景信息

当需要把原生Kubernetes中,通过InClusterConfig(即Kubernetes Service)访问kube-apiserver的业务Pod部署到边缘环境中,会出现以下问题:
- 问题一:Pod通过InClusterConfig地址访问kube-apiserver,节点上默认网络规则(iptables/ipvs)将会把请求转发到kube-apiserver的Pod IP,同时云端与边缘位于不同网络平面,边缘是无法访问到云端的Pod IP。所以边缘业务Pod无法通过InClusterConfig访问到kube-apiserver。
- 问题二:在解决问题一后,如果云边网络断开时业务Pod容器出现重启等状况,边缘Pod将无法从kube-apiserver获取到业务配置,这会影响到业务Pod的重启运行。
解决方案
通过边缘节点上的edge-hub非侵入的ACK@Edge服务可以解决上述问题,让使用InClusterConfig的业务Pod可以无需修改,直接运行在边缘场景。具体说明如下:
- 在业务Pod无感知状态下,边缘Pod的访问地址(即KUBERNETES_SERVICE_HOST和KUBERNETES_SERVICE_PORT环境变量)会被默认修改为edge-hub的HTTPS Endpoint(即
KUBERNETES_SERVICE_HOST=169.254.2.1
,KUBERNETES_SERVICE_PORT=10268
),因此业务Pod的InClusterConfig会通过edge-hub来访问kube-apiserver,从而解决上述的问题一。 - 您需要手动开启edge-hub的数据缓存能力,这样即使云边断网,业务Pod重启时可以从edge-hub中获取到本地缓存数据,从而解决上述的问题二。
关于如何开启edge-hub的数据缓存能力,请参见开启edge-hub的数据缓存能力。
开启edge-hub的数据缓存能力
说明
- 因为数据缓存在本地磁盘,所以不推荐为有大量list/watch请求的Pod开启数据缓存。
- 开启edge-hub的数据缓存能力后,必须重启对应的业务Pod。