边缘节点离线运维

在云边场景下,边缘节点可能会因为网络不稳定而处于离线状态。离线的边缘节点如果设置了节点自治,节点上的业务可以不受影响持续运行,但您无法再通过云端控制面对节点上的业务做运维变更。ACK Edge集群提供了边缘节点离线运维工具,用于支持用户在紧急情况下,对离线节点上的业务进行运维操作,例如业务回滚,资源变配,业务配置修改等。本文为您介绍如何使用边缘节点离线运维工具。

image

前提条件

注意事项

  • 该运维工具只能在边缘节点离线的情况下作为紧急运维方式来使用。

  • 该工具只支持修改Pod、ConfigMap、Secret三类资源。

  • 该工具只能修改本节点上的资源,例如当您修改了ConfigMap的内容,只在本节点生效,其他节点使用了该ConfigMap也不受影响。

  • 该运维工具所做的操作不会同步到云端,当节点状态恢复正常之后,该工具所做的改动会被云端的内容重新覆盖。若您需要修改永久生效,需要在集群云端中重新修改。

获取edgeadm运维工具

执行以下命令获取离线运维工具:

 export REGION="" INTERCONNECT_MODE="" CLUSTER_VERSION=""; export ARCH=$(uname -m | awk '{print ($1 == "x86_64") ? "amd64" : (($1 == "aarch64") ? "arm64" : "amd64")}') INTERNAL=$( [ "$INTERCONNECT_MODE" = "private" ] && echo "-internal" || echo "" ); wget http://aliacs-k8s-${REGION}.oss-${REGION}${INTERNAL}.aliyuncs.com/public/pkg/run/attach/${CLUSTER_VERSION}/${ARCH}/edgeadm -O edgeadm; chmod u+x edgeadm;

参数说明如下:

参数

说明

示例值

CLUSTER_VERSION

ACK Edge集群发布的版本和具体版本号,请参见版本发布说明

1.26.3-aliyun.1

REGION

ACK Edge集群支持的地域及其Region ID,请参见开服地域

cn-hangzhou

INTERCONNECT_MODE

指定节点接入的网络类型。

  • basic:公网接入。

  • private:专线接入。

basic

常见运维操作

在下述场景中,需要替换执行命令中的变量信息。变量信息和获取方式如下表。

变量

说明

获取方式

{pod-name}

替换为要修改的Pod的名称。

可以通过在节点上执行crictl pods查看。

{namespace}

替换为Pod所在的Namespace名称。

{pod-id}

替换为该Pod对应的ID。

{configmap-name}

替换为要修改的ConfigMap名称。

在节点上执行ls /etc/kubernetes/cache/kubelet/configmaps.v1.core/{namespace}查看。

{secret-name}

替换要修改的Secret的名称。

在节点上执行ls /etc/kubernetes/cache/kubelet/secrets.v1.core/{namespace}查看。

场景一:修改Pod模板

  1. 在Pod所在的边缘节点上执行如下命令,打开修改Pod模板的编辑界面。

    edgeadm -n {namespace}  edit pod {pod-name} 
  2. 进入编辑模式,修改Pod模板内容,保存并退出。

  3. 修改成功后,Pod会自动重启,可以通过如下命令查询Pod配置,验证修改是否生效。

    crictl inspectp {pod-id}

场景二:修改指定Pod的ConfigMap

  1. 在Pod所在的边缘节点上执行如下命令,打开修改ConfigMap模板的编辑界面。

    edgeadm -n {namespace} -p {pod-name} edit configmap {configmap-name}
  2. 进入编辑模式,修改ConfigMap模板内容,保存并退出。

  3. 修改成功后,指定的Pod会自动重启并使用修改后的ConfigMap。如果节点上还有其他Pod使用该ConfigMap,您可以通过如下命令手动重启Pod使修改生效。

  4. crictl stopp {pod-id}
    说明

    该命令只会停止Pod,Pod停止后会被kubelet自动重启。

场景三:修改指定Pod的Secret

  1. 在Pod所在的边缘节点上执行如下命令,打开修改Secret模板的编辑界面。

    edgeadm -n {namespace} -p {pod-name} edit secret {secret-name}
  2. 进入编辑模式,修改Secret模板内容,保存并退出。

  3. 修改成功后,指定的Pod会自动重启并使用修改后的Secret。如果节点上还有其他Pod使用该Secret,您可以通过如下命令手动重启Pod使修改生效。

    crictl stopp {pod-id}