首页 文章 精选 留言 我的

精选列表

搜索[openshift],共441篇文章
优秀的个人博客,低调大师

OpenShift Master节点丢失, 集群恢复方法

故障模拟: 模拟 2 个 master 节点 down,需要重装,直接关闭故障节点,事先已经备份过 etcd。 需要事先备份了 etcd数据,离线环境需要image:registry.redhat.io/rhel8/support-tools,否则不能启动 oc debug。 具体方法如下: [root@bastion~]#ocdebugnode/master-1.offline.nielasaran.comsh-4.4#chroot/hostsh-4.4#/usr/local/bin/cluster-backup.sh/home/core/assets/backupsh-4.4#scp-r/home/core/assets/backup/root@bastion: 1.模拟故障关机后,可以看到 oc 超时 [root@bastion~]# oc get nodes Error from server (Timeout): the server was unable to return aresponse in the time allotted, but may still be processing the request (getnodes) 2.把备份的 etcd 数据和 kubeconfig 证书 scp 过去,后面 master-2 要用 oc 命令并且需要管理员权限 [root@bastion~]#scp-rbackup/core@master-2:/home/core/[root@bastion~]#scp.kube/configcore@master-2: 3.注意:如果只是丢了1个master 节点,意味着此时有 2 个 master 节点可用,这些内容需要在非恢复主机上做,也就是说,如果我计划把 master-2 主机作为 恢复主机,以下操作请不要再 master-2 上做,文档原文,如果只剩1个恢复节点,做不做都行,反正后面恢复脚本会帮你把这个做了。 3.1 进入额外剩余的 controll plane node [root@bastion ~]# ssh core@master-1 3.2 移除 etcd static pod,然后等 1 - 2 分钟 [core@master-1~]$ sudo mv /etc/kubernetes/manifests/etcd-pod.yaml /tmp 3.3 确定 etcd Pod 是否还在,如果还在继续等,等到没了为止 [core@master-1~]$ sudo crictl ps | grep etcd | grep -v operator 3.4 移除 kube-apiserver static pod,然后等 1 - 2 分钟 [core@master-1~]$ sudo mv /etc/kubernetes/manifests/kube-apiserver-pod.yaml /tmp 3.5 确保 api-server 停了 [core@master-1~]$ sudo crictl ps | grep kube-apiserver | grep -v operator 3.6 清理 etcd 目录 [core@master-1~]$ sudo mv /var/lib/etcd/ /tmp 4. 进入恢复用 master 节点,执行恢复脚本 [core@master-2~]$ sudo -E /usr/local/bin/cluster-restore.sh /home/core/backup...stoppingkube-apiserver-pod.yaml...stopping kube-controller-manager-pod.yaml...stoppingkube-scheduler-pod.yaml...stopping etcd-pod.yamlWaiting for container etcd tostopcompleteWaiting for container etcdctl to stopcompleteWaiting for containeretcd-metrics to stopcompleteWaiting for container kube-controller-manager tostop.completeWaiting for container kube-apiserver to stopcompleteWaiting forcontainer kube-scheduler to stopcompletestarting restore-etcd staticpodstartingkube-apiserver-pod.yamlstatic-pod-resources/kube-apiserver-pod-4/kube-apiserver-pod.yamlstartingkube-controller-manager-pod.yamlstatic-pod-resources/kube-controller-manager-pod-6/kube-controller-manager-pod.yamlstartingkube-scheduler-pod.yamlstatic-pod-resources/kube-scheduler-pod-5/kube-scheduler-pod.yaml 5. 重启 kubelet 服务,如果只坏1 个master 节点,需要 剩余2个 master 都重启 [core@master-1~]$ sudo systemctl restart kubelet.service Warning: The unit file, source configurationfile or drop-ins of kubelet.service changed on disk. Run 'systemctldaemon-reload' to reload units. 6. 验证单 etcd 是否恢复 [core@master-2~]$ sudo crictl ps | grep etcd | grep -v operator 00f72c57e27b9 621d5c808fe6847daf29bf02a1c47aef440f5ce4a08749cb8c7014a712565b6d 3 minutes ago Running etcd 0 0db089710e5a4 7. 此时发现 oc 已经可以恢复使用 [core@master-2~]$ oc get nodes NAME 8. 查看 etcd 集群状况,目前只有一个 member,无需手动移除 $ocgetpods‐nopenshift‐etcd|grepetcd查看[core@master‐2~]$ocrshetcd‐master‐2.offline.nielasaran.comsh‐4.4#etcdctlendpointstatus‐wtable 9.移除废弃的 master 节点 10. 重装 master node,装好之后,等 csr #oc get csr ‐o name | xargs oc adm certificate approve 11. 检查集群状况,如果遇到不正常大概多等一会,测试环境10分钟恢复正常,根据集群规模可能时间会更长 检查节点状态,看是否都是一致的 上图所用cli: [root@bastion ~]# oc get etcd ‐o=jsonpath='{range .items[0].status.conditions[?(@.type=="NodeInstallerProgressing")]}{.reason}{"\n"}{.message}{"\n"}'[root@bastion ~]# oc get kubeapiserver ‐o=jsonpath='{range .items[0].status.conditions[?(@.type=="NodeInstallerProgressing")]}{.reason}{"\n"}{.message}{"\n"}'[root@bastion ~]# oc get kubecontrollermanager ‐o=jsonpath='{range .items[0].status.conditions[?(@.type=="NodeInstallerProgressing")]}{.reason}{"\n"}{.message}{"\n"}'[root@bastion ~]# oc get kubescheduler ‐o=jsonpath='{range .items[0].status.conditions[?(@.type=="NodeInstallerProgressing")]}{.reason}{"\n"}{.message}{"\n"}

资源下载

更多资源
Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册