排查 k8s 集群 master 节点无法正常工作的问题
搭建的是 k8s 高可用集群,用了 3 台 master 节点,2 台 master 节点宕机后,仅剩的 1 台无法正常工作。
运行 kubectl get nodes 命令出现下面的错误
The connection to the server k8s-api:6443 was refused - did you specify the right host or port?
注:k8s-api 对应的就是这台 master 服务器的本机 IP 地址。
运行 netstat -lntp 命令发现 kube-apiserver 根本没有运行,同时发现 etcd 与 kube-proxy 也没运行。
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:33807 0.0.0.0:* LISTEN 602/kubelet
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 572/rpcbind
tcp 0 0 127.0.0.1:10257 0.0.0.0:* LISTEN 3229/kube-controlle
tcp 0 0 127.0.0.1:10259 0.0.0.0:* LISTEN 3753/kube-scheduler
tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN 571/systemd-resolve
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1644/sshd
tcp 0 0 127.0.0.1:10248 0.0.0.0:* LISTEN 602/kubelet
tcp6 0 0 :::111 :::* LISTEN 572/rpcbind
tcp6 0 0 :::10250 :::* LISTEN 602/kubelet
tcp6 0 0 :::10251 :::* LISTEN 3753/kube-scheduler
tcp6 0 0 :::10252 :::* LISTEN 3229/kube-controlle
通过 docker ps 命令发现 etcd , kube-apiserver, kube-proxy 这 3 个容器都没有运行,etcd 容器在不停地启动->失败->重启->又失败......,查看容器日志发现下面的错误:
etcdserver: publish error: etcdserver: request timed out
rafthttp: health check for peer 611e58a32a3e3ebe could not connect: dial tcp 10.0.1.252:2380: i/o timeout (prober "ROUND_TRIPPER_SNAPSHOT")
rafthttp: health check for peer 611e58a32a3e3ebe could not connect: dial tcp 10.0.1.252:2380: i/o timeout (prober "ROUND_TRIPPER_RAFT_MESSAGE")
rafthttp: health check for peer cc00b4912b6442df could not connect: dial tcp 10.0.1.82:2380: i/o timeout (prober "ROUND_TRIPPER_SNAPSHOT")
rafthttp: health check for peer cc00b4912b6442df could not connect: dial tcp 10.0.1.82:2380: i/o timeout (prober "ROUND_TRIPPER_RAFT_MESSAGE")
raft: 12637f5ec2bd02b8 is starting a new election at term 254669
etcd 启动失败是由于 etcd 在 3 节点集群模式在启动却无法连接另外 2 台 master 节点的 etcd ,要解决这个问题需要改为单节点集群模式。开始不知道如何将 etcd 改为单节点模式,后来在网上找到 2 个参数 --initial-cluster-state=new 与 --force-new-cluster ,在 /etc/kubernetes/manifests/etcd.yaml 中给 etcd 命令加上这 2 个参数,并重启服务器后,master 节点就能正常运行了。
containers:
- command:
- etcd
- --advertise-client-urls=https://10.0.1.81:2379
- --cert-file=/etc/kubernetes/pki/etcd/server.crt
- --client-cert-auth=true
- --data-dir=/var/lib/etcd
- --initial-advertise-peer-urls=https://10.0.1.81:2380
- --initial-cluster=k8s-master0=https://10.0.1.81:2380
- --initial-cluster-state=new
......
master 正常运行后,需要去掉刚刚添加的这 2 个 etcd 参数。
排查 k8s 集群 master 节点无法正常工作的问题的更多相关文章
- k8s集群master节点上的flannel总是不定期重启的原因分析
这个问题,困绕了团队一段时间, 因为暂时没有用到master的外网网络, 没有引起重视,但总归要解决. 上周五,刚好有点小空,就深入调查了一下. 最后,定位到了问题点:k8s master节点的fla ...
- 使用Kubeadm创建k8s集群之节点部署(三十一)
前言 本篇部署教程将讲述k8s集群的节点(master和工作节点)部署,请先按照上一篇教程完成节点的准备.本篇教程中的操作全部使用脚本完成,并且对于某些情况(比如镜像拉取问题)还提供了多种解决方案.不 ...
- K8S集群Master高可用实践
K8S集群Master高可用实践 https://blog.51cto.com/ylw6006/2164981 本文将在前文基础上介绍k8s集群的高可用实践,一般来讲,k8s集群高可用主要包含以 ...
- k8s集群新增节点
节点为centos7.4 一.node节点基本环境配置 1.配置主机名 2.配置hosts文件(master和node相互解析) 3.时间同步 ntpdate pool.ntp.org date ec ...
- ES集群Master节点配置问题
ES集群的主节点发现机制采用单播形式,主要配置有三行,如下: discovery.zen.minimum_master_nodes: discovery.zen.ping.multicast.enab ...
- k8s集群node节点一直NotReady, 且node节点(并非master)的kubelet报错:Unable to update cni config: No networks found in /etc/cni/net.d
若要转载本文,请务必声明出处:https://www.cnblogs.com/zhongyuanzhao000/p/11401031.html 问题: 集群搭建的过程中,master节点初始化成功,但 ...
- 一键安装基于dns的高可用k8s集群(3节点,etcd https)
在公司,使用dns切换,可能会比keepalived+haproxy,更精简的易维护. 毕竟,高可用只是偶尔切换,不是时时切换. 且dns解析在自己可控时,更不会影响k8s线上使用了. (部分代码,由 ...
- k8s集群———etcd-三节点部署
etcd集群部署 ,创建etcd可执行文件,配置文件,证书文件存放目录 mkdir /opt/etcd/{bin,cfg,ssl} -p ,创建包文件存放目录 mkdir /soft -p ,解压et ...
- k8s集群-node节点设置不可调度或者删除node节点
在master 执行1, 不可调度 kubectl cordon k8s-node- kubectl uncordon k8s-node- #取消 2,驱逐已经运行的业务容器 kubectl drai ...
随机推荐
- 常用网络命令 在windows下
1.增加一条临时静态路由 格式:route add <目的网络地址> mask <目的网络子网掩码> <网关> 实例:route add 0.0.0.0 mask ...
- VSCode常用插件之Simple New File使用
更多VSCode插件使用请访问:VSCode常用插件汇总 Simple New File这是一个从命令面板简单创建新文件.文件夹.通过侧边栏创建新文件可能会很繁琐.该扩展旨在通过命令面板使创建文件或目 ...
- H3C端口隔离
一.端口隔离简介 为了实现端口间的二层隔离,可以将不同的端口加入不同的VLAN,但VLAN资源有限.采用端口隔离特性,用户只需要将端口加入到隔离组中,就可以实现隔离组内端口之间二层隔离,而不关心这些端 ...
- Vim入门——Windows下安装
下载页面:https://www.vim.org/download.php Windows选用的是MS-Windows: 下图为展示: 因为最近被墙,镜像貌似没中国内陆地区,因此,选择使用GitHub ...
- Excel VBA 如何在工作表上使用Option Button按钮
应用场景 在Excel的页面上放一个“确认”按钮,再放几个Option Button按钮,编写代码,点击“确认”按钮,判断出选择了哪个Option按钮, 然后根据选择不同的Option Button去 ...
- Base64编码和其在图片的传输的应用
Base64 [原文链接] 目前Base64已经成为网络上常见的传输8Bit字节代码的编码方式之一.做支付系统时,系统之间的报文交互都需要使用Base64对明文进行转码,然后再进行签名或加密,之后再进 ...
- hibernate跟Mybatis/ ibatis 的区别,为什么选择?(转)
第一章 Hibernate与MyBatisHibernate 是当前最流行的O/R mapping框架,它出身于sf.NET,现在已经成为Jboss的一部分. Mybatis 是另外一种优秀的O/R ...
- HTTP协议常用状态码
HTTP协议常用状态码 <?php send_http_status(404); /** * HTTP Protocol defined status codes * HTTP协 ...
- SharePoint资料
链接:https://pan.baidu.com/s/1QOSShE02LYKXFtoJ58WCQQ 提取码:dnhs 复制这段内容后打开百度网盘手机App,操作更方便哦 SharePoint 200 ...
- Day1 工厂模式
我的理解就是:工厂模式可以不用在乎参数的类型,工厂函数根据不同的类型,创建不同的对象.如下(简单工厂): package method.simpleFactory; import java.util. ...