Rancher清理节点

这篇具有很好参考价值的文章主要介绍了Rancher清理节点。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本节介绍如何从一个 Rancher 创建的 Kubernetes 集群中断开一个节点,并从该节点中删除所有 Kubernetes 组件。此过程允许您将释放节点资源,将节点用于其他用途。

当您使用 Rancher 创建集群节点 时,将创建资源(容器/虚拟网络接口)和配置项(证书/配置文件)。

当从您的 Rancher 启动的 Kubernetes 集群中删除节点时(假设它们处于active状态),这些资源将被自动清除,所需的唯一操作是重新启动节点。当一个节点变得不可访问并且不能使用自动清理过程时,我们将再次说明将该节点添加到集群之前需要执行的步骤。

清理脚本#

警告

以下操作将删除节点中的数据(包括容器,卷,iptables 等),在执行命令之前,请先查看该脚本,确保您理解这个脚本在做什么,并且确保已进行了数据备份。

#!/bin/bash

KUBE_SVC='

kubelet

kube-scheduler

kube-proxy

kube-controller-manager

kube-apiserver

'

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

# 停止所有容器

docker stop $(docker ps -aq)

# 删除所有容器

docker rm -f $(docker ps -qa)

# 删除所有容器卷

docker volume rm $(docker volume ls -q)

# 卸载mount目录

for mount in $(mount | grep tmpfs | grep '/var/lib/kubelet' | awk '{ print $3 }') /var/lib/kubelet /var/lib/rancher;

do

  umount $mount;

done

# 备份目录

mv /etc/kubernetes /etc/kubernetes-bak-$(date +"%Y%m%d%H%M")

mv /var/lib/etcd /var/lib/etcd-bak-$(date +"%Y%m%d%H%M")

mv /var/lib/rancher /var/lib/rancher-bak-$(date +"%Y%m%d%H%M")

mv /opt/rke /opt/rke-bak-$(date +"%Y%m%d%H%M")

# 删除残留路径

rm -rf /etc/ceph \

    /etc/cni \

    /opt/cni \

    /run/secrets/kubernetes.io \

    /run/calico \

    /run/flannel \

    /var/lib/calico \

    /var/lib/cni \

    /var/lib/kubelet \

    /var/log/containers \

    /var/log/kube-audit \

    /var/log/pods \

    /var/run/calico \

    /usr/libexec/kubernetes

# 清理网络接口

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=`ps -ef | grep -v grep | grep kube | awk '{print $2}'`

if [[ -n $kube_pid ]]; then

  kill -9 $kube_pid

fi

# 清理Iptables表

## 注意:如果节点Iptables有特殊配置,以下命令请谨慎操作

sudo iptables --flush

sudo iptables --flush --table nat

sudo iptables --flush --table filter

sudo iptables --table nat --delete-chain

sudo iptables --table filter --delete-chain

systemctl restart docker

删除了什么?#

在使用 Rancher 清理创建的节点时,将根据要删除的集群节点的类型删除以下组件。

删除的组件

由基础设施提供商托管的节点

自定义集群的节点

托管集群的节点

导入集群的节点

Rancher deployment 命名空间 (默认cattle-system )
由 Rancher 打了标签的serviceAccountclusterRoles, 和 clusterRoleBindings
标签、注释和清理器
Rancher Deployment
主机、集群、项目和用户自定义资源定义 (CRDs)
management.cattle.io API 分组下创建的所有资源
所有由 Rancher v2.x 创建的 CRD

通过 Rancher UI 从集群中删除节点#

当节点处于“活动”状态时,从集群中删除节点将触发一个进程来清理节点。完成自动清理过程后,请重启节点,以确保正确删除了所有非持久性数据。

重启节点:
## using reboot
$ sudo reboot

## using shutdown
$ sudo shutdown -r now

手动从集群中删除 Rancher 组件#

当某个节点不可访问并从集群中删除时,由于该节点不可访问,因此无法触发自动清理过程。请按照以下步骤手动删除 Rancher 组件。

警告: 下面列出的命令将会从节点中删除数据。在执行任何命令之前,确保您已经创建了要保存的文件备份,因为数据将会丢失。

从导入的集群中删除 Rancher 组件#

对于导入的集群,删除 Rancher 的过程略有不同。您可以在 Rancher UI 中简单地删除集群,也可以运行从节点中删除 Rancher 组件的脚本。两个选项执行相同的删除操作。

将导入的集群与 Rancher 分离后,集群的工作负载将不受影响,您可以使用与将集群导入 Rancher 之前相同的方法访问集群。

通过 UI / API 删除#

警告: 此过程将从您的集群中删除数据。在执行命令之前,请确保您已经创建了要保存的文件备份,因为数据将会丢失。

在使用 Rancher UI(或 API)开始删除导入的集群之后, 将发生以下事件。

  1. Rancher 创建了一个 serviceAccount 用于从集群中删除 Rancher 组件。这个帐户分配了删除 Rancher 组件所需要的clusterRole 和 clusterRoleBinding 权限。

  2. 使用serviceAccount, Rancher 调度并运行一个作业,该作业清除集群中的 Rancher 组件。此作业还将 serviceAccount 及其角色作为依赖项引用,因此作业将在完成之前删除它们。

  3. Rancher 从集群中移除。但是,集群仍然在运行本地版本的 Kubernetes。

结果: 所有在 删除了什么?中为导入集群列出的组件会被删除。

通过运行脚本删除#

您可以运行一个脚本,而不是使用 Rancher UI 来清除导入的集群节点。该功能从v2.1.0版本开始提供。

先决条件:

安装 kubectl。

  1. 打开网页浏览器, 打开 GitHub页面, 并下载 user-cluster.sh.

  2. 在与user-cluster.sh相同的路径下运行以下命令,使脚本可执行:
    chmod +x user-cluster.sh

  3. 仅限于离线环境: 打开 user-cluster.sh 将 yaml_url 替换成 user-cluster.yml中的 URL

    如果您没有离线环境,请跳过这一步。

  4. 在同一目录中,运行脚本并提供 rancher/rancher-agent 镜像版本, 该版本应该与用于管理集群的 Rancher 版本一致。(<RANCHER_VERSION>):

    提示:

    添加 -dry-run 标志来预览脚本的结果,而不做任何更改


    ./user-cluster.sh rancher/rancher-agent:<RANCHER_VERSION>

结果: 脚本运行。所有在 删除了什么?中为导入集群列出的组件会被删除。

Windows 节点#

要清理 Windows 节点,可以运行位于 c:\etc\rancher目录下的清理脚本。该脚本删除 Kubernetes 生成的资源和执行的二进制文件。它还取消了防火墙规则和网络设置。

要运行脚本,可以在 PowerShell 中使用此命令:
pushd c:\etc\rancher
.\cleanup.ps1
popd

结果: 节点被重置,可以重新添加到 Kubernetes 集群中。

Docker 容器、镜像和卷#

根据您分配给节点的角色,容器中有 Kubernetes 组件, 属于覆盖网络的容器、DNS、ingress 控制器和 Rancher Agent。(还有您创建的 Pods 也被调度到这个节点)

清理所有 Docker 容器、镜像和卷:
docker rm -f $(docker ps -qa)
docker rmi -f $(docker images -q)
docker volume rm $(docker volume ls -q)

挂载#

Kubernetes 的组件和密钥在系统上留下了需要卸载的挂载。

挂载

/var/lib/kubelet/pods/XXX (各种挂载)
/var/lib/kubelet
/var/lib/rancher

卸载所有挂载:
for mount in $(mount | grep tmpfs | grep '/var/lib/kubelet' | awk '{ print $3 }') /var/lib/kubelet /var/lib/rancher; do umount $mount; done

文件与目录#

以下目录在添加一个节点到一个集群时被使用到,应该将它们删除。您可以使用命令 rm -rf /directory_name删除目录

注意: 根据您分配给节点的角色,一些目录将会或不会出现在节点上。

Directories

/etc/ceph
/etc/cni
/etc/kubernetes
/opt/cni
/opt/rke
/run/secrets/kubernetes.io
/run/calico
/run/flannel
/var/lib/calico
/var/lib/etcd
/var/lib/cni
/var/lib/kubelet
/var/lib/rancher/rke/log
/var/log/containers
/var/log/kube-audit
/var/log/pods
/var/run/calico

清除目录:
rm -rf /etc/ceph \
/etc/cni \
/etc/kubernetes \
/opt/cni \
/opt/rke \
/run/secrets/kubernetes.io \
/run/calico \
/run/flannel \
/var/lib/calico \
/var/lib/etcd \
/var/lib/cni \
/var/lib/kubelet \
/var/lib/rancher/rke/log \
/var/log/containers \
/var/log/kube-audit \
/var/log/pods \
/var/run/calico

网络接口和 Iptables#

其余被更改/配置过的两个组件是(虚拟)网络接口和 iptables 规则。它们相对于节点来说都是非持久性的,这意味着它们将在重新启动节点后被清除。要删除这些组件,建议重启节点。

重启节点:
## using reboot
$ sudo reboot

## using shutdown
$ sudo shutdown -r now

如果您想了解更多关于(虚拟)网络接口或 iptables 规则的信息,请参阅下面的特定主题。

网络接口#

注意: 根据为节点所在的集群配置的网络供应商,一些接口将出现在节点上,也可能不出现在节点上。

Interfaces

flannel.1
cni0
tunl0
caliXXXXXXXXXXX (random interface names)
vethXXXXXXXX (random interface names)

列出所有接口:
## Using ip
ip address show

## Using ifconfig
ifconfig -a

删除接口:
ip link delete interface_name

iptables#

注意: 根据为节点所在的集群配置的网络供应商,节点上可能存在或不存在某些 chains。

iptables 规则用于将数据从容器路由到容器。创建的规则不是持久性的,因此重新启动节点将把 iptables 恢复到原来的状态。

Chains

Chains

cali-failsafe-in
cali-failsafe-out
cali-fip-dnat
cali-fip-snat
cali-from-hep-forward
cali-from-host-endpoint
cali-from-wl-dispatch
cali-fw-caliXXXXXXXXXXX (random chain names)
cali-nat-outgoing
cali-pri-kns.NAMESPACE (chain per namespace)
cali-pro-kns.NAMESPACE (chain per namespace)
cali-to-hep-forward
cali-to-host-endpoint
cali-to-wl-dispatch
cali-tw-caliXXXXXXXXXXX (random chain names)
cali-wl-to-host
KUBE-EXTERNAL-SERVICES
KUBE-FIREWALL
KUBE-MARK-DROP
KUBE-MARK-MASQ
KUBE-NODEPORTS
KUBE-SEP-XXXXXXXXXXXXXXXX (random chain names)
KUBE-SERVICES
KUBE-SVC-XXXXXXXXXXXXXXXX (random chain names)

列出所有 iptables 规则:
iptables -L -t nat
iptables -L -t mangle
iptables -L文章来源地址https://www.toymoban.com/news/detail-727138.html

到了这里,关于Rancher清理节点的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • docker安装部署rancher、rancher kubectl更新pod。

    虚拟机 VMWare【建议4G、4核】 操作系统 CentOS7 文章后面记录了部署过程出现的一系列问题,建议先对照问题配置下环境。 前期准备 1、关闭防火墙 2、 关闭selinux 3、关闭swap分区 4、 设置主机名 5、​​​​​​​ 在每个节点添加时间同步 6、 所有节点安装Docker 安装步骤 ranc

    2024年02月04日
    浏览(47)
  • 从 Rancher 学习 K8s - Rancher 的基础使用

    Rancher v2.6.9 K8s v1.24.16 如果你不具备该环境,可以移步 使用 Rancher 安装 K8s 集群 查看。本文适合已经了解了 k8s 基础概念,想使用 rancher 管理学习 k8s 的人群。 Pod 用于运行一个容器或者多个容器,大多数的场景使用单容器就可以了,这里我们部署一个拥有 3 个 Pod 的 nginx。在右

    2024年02月10日
    浏览(40)
  • Helm & Kubernetes Offline Deploy Rancher v2.7.5 Demo (helm 离线部署 rancher 实践)

    Rancher 是一个开源容器管理平台,专为在生产环境中部署容器的组织构建。Rancher可以轻松地在任何地方运行Kubernetes,满足IT需求,并为DevOps团队提供支持。 最新版本 Latest Release v2.7 Latest - v2.7.6 - rancher/rancher:v2.7.6 / rancher/rancher:latest - Read the full release notes. Stable - v2.7.6 - rancher

    2024年02月09日
    浏览(44)
  • 安装Rancher的步骤

    #!/bin/bash -e help () {      echo   \\\' ================================================================ \\\'      echo   \\\' --ssl-domain: 生成ssl证书需要的主域名,如不指定则默认为www.rancher.local,如果是ip访问服务,则可忽略;\\\'      echo   \\\' --ssl-trusted-ip: 一般ssl证书只信任域名的访问请求,有时候

    2024年02月08日
    浏览(37)
  • rancher安装

    官网 由于镜像比较大 所以先拉去下来 创建文件 启动容器 访问:ip即可会自动跳转 设置密码 添加集群 导入集群 命名标签 点击创建在master执行,因为我们ssl证书是不受信任/自签名的 master 1. 安装git仓库 创建文件 docker-compose.yml文件如下 执行 查看初始密码 账号root 密码从上面

    2024年02月07日
    浏览(35)
  • 17.HPA和rancher

    HPA(Horizontal Pod Autoscaling)Pod 水平自动伸缩,Kubernetes 有一个 HPA 的资源,HPA 可以根据 CPU 利用率自动伸缩一个 Replication Controller、 Deployment 或者Replica Set 中的 Pod 数量。 HPA 基于 Master 上的 kube-controller-manager 服务启动参数 horizontal-pod-autoscaler-sync-period 定义的时长(默认为30秒)

    2024年02月12日
    浏览(60)
  • Rancher 管理 Kubernetes 集群

    //Rancher 简介 Rancher 是一个开源的企业级多集群 Kubernetes 管理平台,实现了 Kubernetes 集群在混合云+本地数据中心的集中部署与管理, 以确保集群的安全性,加速企业数字化转型。超过 40000 家企业每天使用 Rancher 快速创新。 官网:https://docs.rancher.cn/ //Rancher 和 k8s 的区别 Ranch

    2024年02月16日
    浏览(92)
  • Kubernetes 使用 Rancher 管理

    只能管理单个K8S集群 kubectl命令行管理工具     dashboard(K8S官方的UI界面图形化管理工具)   (管理多集群很麻烦,切换不同集群每次需要更改kube-config文件 [kubectl配置文件] ,如果kubeadm部署每次都需要更改admin.conf [kubectl配置文件] ) 同时管理多个K8S集群 rancher kubesphere   k

    2024年02月12日
    浏览(44)
  • rke2 Online Deploy Rancher v2.8.0 latest (helm 在线部署 rancher v2.8.0)

    Rancher 是一个 Kubernetes 管理工具,让你能在任何地方和任何提供商上部署和运行集群。 Rancher 可以创建来自 Kubernetes 托管服务提供商的集群,创建节点并安装 Kubernetes,或者导入在任何地方运行的现有 Kubernetes 集群。 Rancher 基于 Kubernetes 添加了新的功能,包括统一所有集群的身

    2024年02月02日
    浏览(41)
  • K3S+Rancher

    查看系统版本 查看系统命令集 这是我系统配置情况 服务器清单 名称 IP 配置 系统 主-服务 192.168.23.171 4Cpu8G Ubuntu 20.04.6 副主-服务 192.168.23.103 4Cpu8G Ubuntu 20.04.6 代理-服务 192.168.23.248 4Cpu8G Ubuntu 20.04.6 外置均衡代理 192.168.23.205 4Cpu8G Ubuntu 20.04.6 修改/etc/apt/sources.list文件 修改主机服

    2024年01月18日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包