排查 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 ...
随机推荐
- python:利用smtplib发送邮件详解
本文转自:https://www.cnblogs.com/insane-Mr-Li/p/9121619.html 自动化测试中,测试报告一般都需要发送给相关的人员,比较有效的一个方法是每次执行完测试用 ...
- Educational Codeforces Round 65 (Rated for Div. 2)B. Lost Numbers(交互)
This is an interactive problem. Remember to flush your output while communicating with the testing p ...
- Laravel中使用QRcode自制二维码
一.配置 1.在项目根目录输入命令 composer require simplesoftwareio/simple-qrcode 1.3.* 2.在config/app.php 的 provider ...
- [Python]python对csv去除重复行 python 2020.2.11
用pandas库的.drop_duplicates函数 代码如下: import shutil import pandas as pd frame=pd.read_csv('E:/bdbk.csv', ...
- shell脚本执行sql命令
参考:https://www.cnblogs.com/xingchong/p/11698237.html
- python 中 if __name__ == '__main__' 判断的作用
假设这样一个a.py文件 def fun1(): ........ def fun2(): ......... if __name__=='__main__': ......#执行的一些语句 当你执行 ...
- hackme.inndy.tw的一些Writeup(5月30更新)
hackme.inndy.tw的一些Writeup(6月3日更新) 原文链接:http://www.cnblogs.com/WangAoBo/p/7706719.html 推荐一下https://ha ...
- JavaDay1(上)
Java learning_Day1(上) 一切准备工作已经做好,虽然自己之前也零零碎碎学了一些Java的基础知识,貌似现在忘得差不多了,趁寒假契机从头开始学习吧 本人学习视频用的是马士兵的,也在这里 ...
- day28 rsync服务端配置和客户端
2. rsync守护进程部署方式 客户端---服务端 上厕所 4 rsync守护进程服务端配置: 第一个历程: 下载安装软件 rpm -qa|grep rsync yum install -y rsy ...
- svn checkout使用
(1)需要知道三个东西:svn路径和号码和密码. (2)svn导出的地方建立需要的目录,然后在不同目录下svn check out,输入正确的路径和号码和密码,这样就可以正常svn下来目录了.