You need to enable JavaScript to run this app.
导航

管理节点

最近更新时间2023.09.16 23:06:41

首次发布时间2023.06.09 16:13:07

本文描述了如何通过控制台管理节点,包括下线节点、封锁节点和移除节点等操作。
步骤一:进入节点列表页面

  1. 登录边缘托管控制台
  2. 在左侧导航栏,单击边缘集群
  3. 在集群列表中,找到目标集群,然后单击集群名称。
  4. 在左侧导航栏,单击节点,进入节点列表页面。

步骤二:管理节点

下线节点

在部分场景中,需要下线节点后进行后续操作、以保证数据安全。场景包括版本升级、节点扩容、停机维护、变更操作等。
更多安全下线节点相关最佳实践,您可以参考中心节点的最佳实践: 安全下线节点

说明

注意:

  • 下线操作会将该节点内除 DaemonSet 管理之外的 Pod 全部驱逐到集群内其他节点上,并将该节点置为不可调度状态(新产生的 Pod 无法被调度到该节点上),可能会影响业务,请在业务低峰期操作。
  • 下线操作将会减少该节点所属集群的剩余可用资源配额。若集群本身预留的可用资源不足,将会影响后续正常业务的调度和存量业务的运行。
  1. 在节点列表页面,选择节点类型,然后找到需要查看的节点。您可以按照节点名称、节点 ID、节点池 ID 搜索节点。
  2. 操作列,单击更多图标,然后选择下线
  3. 在弹出的对话框中,确认提示信息,然后单击确定

封锁节点

区别于下线节点,封锁节点不会将 Pod 驱逐到集群内其他节点上,而是将节点调整到已封锁且不可调用状态,已经运行在该节点上的 Pod 不受影响。

说明

注意:封锁操作将会减少该节点所属集群的剩余可用资源配额。若集群本身预留的可用资源不足,将会影响后续正常业务的调度和存量业务的运行。

  1. 在节点列表页面,选择节点类型,然后找到需要查看的节点。您可以按照节点名称、节点 ID、节点池 ID 搜索节点。
  2. 操作列,单击更多图标,然后选择封锁
  3. 在弹出的对话框中,确认提示信息,然后单击确定

将节点置为可调度

该功能可用于恢复节点的调度能力,将已封锁或下线的节点重新调整到正常且可调度状态。这样,节点将允许被用来调度 Pod。同时,该节点所属集群的剩余可用资源配额增加。

  1. 在节点列表页面,选择节点类型,然后找到需要查看的节点。您可以按照节点名称、节点 ID、节点池 ID 搜索节点。在操作列,单击更多图标,然后选择置为可调度
  2. 在弹出的对话框中,确认提示信息,然后单击确定

移除节点

确保正常业务运行不受影响的情况下,可移除不需要继续工作的节点。针对按量计费类型的节点,移除节点时,可同步销毁释放节点。包年包月类型的节点目前仅支持移除操作。

说明

注意:

  • 若同步销毁释放节点,系统盘和数据盘的数据将被同时删除,无法恢复,请谨慎操作。
  • 销毁操作将导致节点上的 Pod 自动迁移至其他节点,建议在业务低峰期进行。
  • 若不同步销毁释放节点,将重装该节点对应边缘实例的操作系统,同时边缘实例系统盘的数据也会被清除。
  • 您只可移除当前无正在运行的 Pod 的节点。
  1. 在节点列表页面,选择节点类型,然后找到需要查看的节点。您可以按照节点名称、节点 ID、节点池 ID 搜索节点。
  2. 操作列,单击更多图标,然后选择移除
  3. 在弹出的对话框中,确认提示信息,然后单击移除

移除节点后,您可根据节点清理脚本参考,手动彻底清理节点上多种类型的资源。

清理节点

您可以执行以下脚本彻底清除节点中的组件、资源等,从而充分释放该节点,使该节点可被其他业务使用。

前提条件

节点已被下线并移除。详细操作请参见下线节点移除节点

清理脚本

说明

该操作将删除节点中的数据(包括容器、卷、iptables 等)。
因此,请先进行数据备份,并仔细阅读该脚本、确保理解脚本含义,谨慎执行命令。

#!/usr/bin/env bash

# 停止kubernetes和容器服务:边缘托管的边缘节点纳管依赖于 Linux 的 systemd 。需要清空节点安装的服务,同时删除 kubernetes 的服务。
KUBE_SVC='
kube-node-installation.service
kube-node-configuration.service
kube-container-runtime-monitor.service
kube-logrotate.timer
kube-logrotate.service
kubernetes.target
kubelet.service
'

for kube_svc in ${KUBE_SVC};
do
  # 停止服务
  if [[ $(systemctl is-active "${kube_svc}") == "active" ]]; then
    systemctl stop "${kube_svc}"
  fi
  # 禁用服务
  if [[ $(systemctl is-enabled "${kube_svc}") == 'enabled' ]]; then
    systemctl disable "${kube_svc}"
  fi
done

# 清空 containerd:清空该节点上所有的 Pod 和 容器数据。
[ -n "$(whereis crictl)" ] && crictl rmp -af
[ -n "$(whereis crictl)" ] && crictl rm -af

# 停止 containerd 服务
if [[ $(systemctl is-active containerd.service) == "active" ]]; then
    systemctl stop containerd.service
fi
# 禁用 containerd 服务
if [[ $(systemctl is-enabled containerd.service) == 'enabled' ]]; then
    systemctl disable containerd.service
fi

# 卸载所有挂载:Kubernetes 的组件和密钥挂载在系统上,需要卸载。
for mount in $(mount | grep tmpfs | grep '/var/lib/kubelet\|/var/lib/yurthub' | awk '{ print $3 }') /var/lib/kubelet /var/lib/yurthub;
do
  umount "$mount";
done

# 删除文件和目录:以下目录在纳管一个节点到边缘托管 kubernetes 的时候会被使用到,需要删除。
rm -rf /etc/kubernetes \
    "${KUBE_HOME:-/home/kubernetes}" \
    /etc/ceph \
    /etc/cni \
    /opt/cni \
    /run/secrets/kubernetes.io \
    /run/calico \
    /run/flannel \
    /var/lib/calico \
    /var/lib/cni \
    /var/lib/yurthub \
    /var/lib/kubelet \
    /var/log/containers \
    /var/log/kube-audit \
    /var/log/pods \
    /var/run/calico \
    /usr/libexec/kubernetes \
    /run/veecp/bootstrap-success.complete \
    /etc/systemd/system/kube-node-installation.service \
    /etc/systemd/system/kube-node-configuration.service \
    /etc/systemd/system/kube-container-runtime-monitor.service \
    /etc/systemd/system/kube-logrotate.timer \
    /etc/systemd/system/kube-logrotate.service \
    /etc/systemd/system/kubelet.service \
    /etc/systemd/system/containerd.service \
    /etc/systemd/system/kubernetes.target

# 清除所有网络接口:根据节点所在集群配置的网络供应商删除对应的网络接口。仅保留以下几个网络接口:
no_del_net_inter='
lo
docker0
eth
ens
bond
'

network_interface=$(ls /sys/class/net)

for net_inter in $network_interface;
do
  if ! echo "${no_del_net_inter}" | grep -qE "${net_inter:0:3}"; then
    ip link delete "$net_inter"
  fi
done

# 关闭监听端口的软件:以下端口会在纳管边缘节点的时候被使用,需要禁止其他软件监听或使用这些端口。
port_list='
80
443
6443
2376
2379
2380
8472
9099
10250
10254
'

for port in $port_list;
do
  pid=$(netstat -atlnup | grep "$port" | awk '{print $7}' | awk -F '/' '{print $1}' | grep -v - | sort -rnk2 | uniq)
  if [[ -n $pid ]]; then
    kill -9 "$pid"
  fi
done

kube_pid=$(pgrep -l kube\|containerd | grep -v grep | awk '{print $1}')

if [[ -n $kube_pid ]]; then
  kill -9 "$kube_pid"
fi

登录节点

您可以通过 VNC 方式登录节点,然后使用命令行对节点进行管理。

登录中心节点

对于中心节点,您可以在边缘托管控制台通过 VNC 登录节点,

  1. 在节点列表页面,选择节点类型,然后找到需要查看的节点。您可以按照节点名称、节点 ID、节点池 ID 搜索节点。
  2. 操作列,单击更多图标,然后选择 VNC。

您也可以参考通过控制台登录Linux实例登录中心节点。

登录边缘节点

有关登录边缘节点的详细信息,请参见通过VNC登录实例

管理节点标签

您可以为节点添加不同的标签,以对节点进行分类管理。本文介绍了如何通过控制台管理标签,包括添加、编辑、删除标签。
步骤一:进入节点详情页

  1. 登录边缘托管控制台
  2. 在左侧导航栏,单击边缘集群
  3. 在集群列表中,找到目标集群,然后单击集群名称。
  4. 在左侧导航栏,单击节点
  5. 在节点列表页面,选择节点类型,然后找到需要添加标签的节点。您可以按照节点名称、节点 ID、节点池 ID 搜索节点。
  6. 单击节点名称,进入节点详情页。

步骤二:管理节点标签

说明

节点创建完成后,会自动带有一些系统标签。您无法编辑和删除系统标签,只可编辑和删除自定义的标签。

添加标签

  1. 在节点详情页,单击标签页签。
  2. 单击页面最下方的添加标签
  3. 输入标签的键和值,然后单击操作列的保存

编辑标签

  1. 在节点详情页,单击标签页签。
  2. 找到需要编辑的标签,单击操作列的编辑
  3. 编辑标签的键和值,然后单击操作列的保存

删除标签

  1. 在节点详情页,单击标签页签。
  2. 找到需要删除的标签,单击操作列的删除
  3. 确认提示信息,然后单击确定

管理节点污点

污点能够使节点排斥某些特定的Pod,从而避免Pod调度到该节点上。本文描述了如何通过控制台管理污点,包括添加、编辑、删除污点。
步骤一:进入节点详情页

  1. 登录边缘托管控制台
  2. 在左侧导航栏,单击边缘集群
  3. 在集群列表中,找到目标集群,然后单击集群名称。
  4. 在左侧导航栏,单击节点。
  5. 在节点列表页面,选择节点类型,然后找到需要添加污点的节点。您可以按照节点名称、节点 ID、节点池 ID 搜索节点。
  6. 单击节点名称,进入节点详情页。

步骤二:管理节点污点
添加污点

  1. 在节点详情页,单击污点页签。
  2. 单击页面最下方的添加污点
  3. 输入污点的键和值,选择污点的效果,然后单击操作列的保存

编辑污点

  1. 在节点详情页,单击污点页签。
  2. 找到需要编辑的污点,单击操作列的编辑
  3. 编辑污点的键和值,选择污点的效果,然后单击操作列的保存

删除污点

  1. 在节点详情页,单击污点页签。
  2. 找到需要删除的污点,单击操作列的删除
  3. 确认提示信息,然后单击确定