首页 文章 精选 留言 我的

精选列表

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

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"}

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Spring

Spring

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

Sublime Text

Sublime Text

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

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册