0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Kubernetes集群的关闭与重启

马哥Linux运维 来源:data2clouds.com 作者:data2clouds.com 2022-11-07 09:50 次阅读

前言

在日常对 Kubernetes 集群运行维护的过程中,您可能需要临时的关闭或者是重启 Kubernetes 集群对集群进行维护,本文将介绍如何去安全的关闭 K8s 集群以及如何重新启动集群。

日常节点运维方式

关闭 K8s 集群是个危险的操作!在关闭集群之前,您必须完全了解这个操作所带来的后果。首先,我们要对集群内的应用、客户定义资源 CRD 和 Etcd 进行备份,然后再进行重启或关闭集群的操作。在通常运维的情况下,建议您驱逐维护节点,而非重启整个集群。在这里,我们也把驱逐维护节点命令放在下面供您参考。

首先,确定想要移出的节点的名称。可以用以下命令列出集群中的所有节点:

$kubectlgetnodes

接下来,告诉 Kubernetes 需要移出的节点:

$kubectldrain

一旦它返回(没有报错), 你就可以下线此节点(或者等价地在云平台上,删除支持该节点的虚拟机)。如果要在维护操作期间将节点留在集群中,则需要运行:

kubectluncordon

然后告诉 Kubernetes,它可以继续在此节点上调度新的 Pods。

在进行集群关闭前的准备工作

备份是最最重要的准备工作,保障应用可以重新正常服务为目的各种操作都是必须的。做一个你自己的计划清单,在重要的步骤之前确认好。

主机之间已经设置 SSH 免密登录

集群内应用的备份

集群内客户自定义资源的备份

集群内 Etcd 的备份

关闭 Kubernetes 集群

再次提示在关闭集群前,请您务按照我们推荐的方法备份集群的数据与应用,以便在重新启动集群时如果遇到任何问题,可以通过备份还原集群与应用。使用本教程中的方法可以平稳关闭集群,但数据损坏的可能性仍然存在。

首先,我们要获取节点列表

k8snodes=$(kubectlgetnodes-oname)

然后,我们就要关闭节点了,您可以可一台一台的关闭。或运行以下脚本关闭节点:

fornodein${k8snodes[@]}
do
echo"====Shutdown$node===="
ssh$nodesudoshutdown-h1
done

注意: 前提条件是主机之间已经设置 SSH 免密登录。

此时,您就可以关闭其他的集群依赖项,对集群进行维护操作啦。

Kubernetes 集群重启

在重启后,我们需要仔细检查所有节点和核心组件的状态,并确保一切就绪。

$kubectlgetnodes-owide
NAMESTATUSROLESAGEVERSIONINTERNAL-IPEXTERNAL-IPOS-IMAGEKERNEL-VERSIONCONTAINER-RUNTIME
mars-k8s1Readycontrol-plane,master17dv1.21.0172.16.60.60Ubuntu20.04.1LTS5.11.0-40-genericdocker://20.10.10
mars-k8s2Ready17dv1.21.0172.16.60.61Ubuntu20.04.1LTS5.11.0-40-genericdocker://20.10.10
mars-k8s3Ready17dv1.21.0172.16.60.62Ubuntu20.04.1LTS5.11.0-40-genericdocker://20.10.10

$kubectlgetsvc-nkube-system
NAMETYPECLUSTER-IPEXTERNAL-IPPORT(S)AGE
kube-dnsClusterIP10.96.0.1053/UDP,53/TCP,9153/TCP17d
metrics-serverClusterIP10.111.227.248443/TCP17d

$kubectlgetpod-nkube-system
NAMEREADYSTATUSRESTARTSAGE
coredns-558bd4d5db-h7jqc1/1Running217d
coredns-558bd4d5db-wj4bn1/1Running217d
etcd-mars-k8s11/1Running217d
kube-apiserver-mars-k8s11/1Running317d
kube-controller-manager-mars-k8s11/1Running217d
kube-flannel-ds-677dg1/1Running217d
kube-flannel-ds-bxhx61/1Running317d
kube-flannel-ds-r5pqf1/1Running217d
kube-proxy-6w52h1/1Running217d
kube-proxy-p8zfp1/1Running217d
kube-proxy-v8t7j1/1Running217d
kube-scheduler-mars-k8s11/1Running217d
metrics-server-5f9459b95c-dtzbf1/1Running217d

Kubernetes 集群重启维护避坑指南

说点儿心里话,运维有时要看运气,这不是开玩笑,在我的职业生涯中看到了也学到了很多,在过去我有幸支持了多个国家的数据灾备业务。包括:韩国,日本,中港台,及东南亚各个 Region 的客户公司,在运维做 IT 架构变更的时候,买烧猪祭奠关二爷有时真的需要,我们不了解的事情还有很多,要保持敬畏。所以备份吧,多备份几次!!!

在我们这个时代人定胜天的神迹比比皆是。但是所谓割接,割下来,接不上的情况也屡见不鲜。通常情况下,重新启动 Kubernetes 集群后就可以继续正常使用,但是由于意外情况,该集群可能不可用。例如:

关闭集群过程中 Etcd 数据损坏或是节点故障,这在 Bare Metal K8s Node 上很常见。

网络错误,这就需要检查所有集群依赖项的状态,一定用好监控工具,一步一步的查,别怕麻烦,要确保所有集群依赖项均已就绪。

应用的问题,节点是启动了,K8s 也好好的,应用不能对外提供服务,这时一系列的排错是最考验人的,所以备份恢复吧。这样可以确保 RTO。

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 集群
    +关注

    关注

    0

    文章

    85

    浏览量

    17166
  • kubernetes
    +关注

    关注

    0

    文章

    223

    浏览量

    8695

原文标题:Kubernetes 集群的关闭与重启

文章出处:【微信号:magedu-Linux,微信公众号:马哥Linux运维】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    阿里云上Kubernetes集群联邦

    摘要: kubernetes集群让您能够方便的部署管理运维容器化的应用。但是实际情况中经常遇到的一些问题,就是单个集群通常无法跨单个云厂商的多个Region,更不用说支持跨跨域不同的云厂商。这样会给
    发表于 03-12 17:10

    Kubernetes Ingress 高可靠部署最佳实践

    摘要: 在Kubernetes集群中,Ingress作为集群流量接入层,Ingress的高可靠性显得尤为重要,今天我们主要探讨如何部署一套高性能高可靠的Ingress接入层。简介
    发表于 04-17 14:35

    kubernetes集群配置

    基于v1104版本手动搭建高可用kubernetes 集群
    发表于 08-19 08:07

    Kubernetes 从懵圈到熟练:集群服务的三个要点和一种实现

    以我的经验来讲,理解 Kubernetes 集群服务的概念,是比较不容易的一件事情。尤其是当我们基于似是而非的理解,去排查服务相关问题的时候,会非常不顺利。这体现在,对于新手来说,ping 不通服务
    发表于 09-24 15:35

    kubernetes v112二进制方式集群部署

    kubernetes v112 二进制方式集群部署
    发表于 05-05 16:30

    请问鸿蒙系统上可以部署kubernetes集群吗?

    鸿蒙系统上可以部署kubernetes集群
    发表于 06-08 11:16

    如何部署基于Mesos的Kubernetes集群

    的内核。把Kubernetes运行在Mesos集群之上,可以和其他的框架共享集群资源,提高集群资源的利用率。 本文是Kubernetes和M
    发表于 10-09 18:04 0次下载
    如何部署基于Mesos的<b class='flag-5'>Kubernetes</b><b class='flag-5'>集群</b>

    浅谈Kubernetes集群的高可用方案

    Kubernetes作为容器应用的管理中心,通过对Pod的数量进行监控,并且根据主机或容器失效的状态将新的Pod调度到其他Node上,实现了应用层的高可用性。针对Kubernetes集群,高可用性
    发表于 10-11 10:04 1次下载
    浅谈<b class='flag-5'>Kubernetes</b><b class='flag-5'>集群</b>的高可用方案

    Kubernetes集群发生网络异常时如何排查

    本文将引入一个思路:“在 Kubernetes 集群发生网络异常时如何排查”。文章将引入 Kubernetes 集群中网络排查的思路,包含网络异常模型,常用工具,并且提出一些案例以供学
    的头像 发表于 09-02 09:45 4738次阅读

    Kubernetes 集群的功能

    Telepresence 是一个开源工具,可让您在本地运行单个服务,同时将该服务连接到远程 Kubernetes 集群
    的头像 发表于 09-05 10:58 1054次阅读

    Kubernetes集群内服务通信机制介绍

    现在在 Kubernetes 集群中,我们拥有构成集群管理组件和一组工作机器(称为节点)的控制平面。这些节点托管 Pod,这些 Pod 将后端微服务作为容器化服务运行。
    发表于 10-04 10:13 538次阅读

    在树莓派上搭建Kubernetes智能边缘集群

    电子发烧友网站提供《在树莓派上搭建Kubernetes智能边缘集群.zip》资料免费下载
    发表于 12-09 09:20 2次下载
    在树莓派上搭建<b class='flag-5'>Kubernetes</b>智能边缘<b class='flag-5'>集群</b>

    Kubernetes集群部署

    Kubeadm是一种Kubernetes集群部署工具,通过kubeadm init命令创建master节点,通过 kubeadm join命令把node节点加入到集群
    的头像 发表于 02-15 10:35 1662次阅读

    Kubernetes集群中如何选择工作节点

    简要概述: 本文讨论了在Kubernetes集群中选择较少数量的较大节点和选择较多数量的较小节点之间的利弊。
    的头像 发表于 08-28 15:46 589次阅读
    <b class='flag-5'>Kubernetes</b><b class='flag-5'>集群</b>中如何选择工作节点

    使用Velero备份Kubernetes集群

    Velero 是 heptio 团队(被 VMWare 收购)开源的 Kubernetes 集群备份、迁移工具。
    的头像 发表于 08-05 15:43 321次阅读
    使用Velero备份<b class='flag-5'>Kubernetes</b><b class='flag-5'>集群</b>