Closed ppabc closed 6 years ago
没影响,Pod漂移属于Kubernetes的行为,请移步Kubernetes Documentation,我将关闭此问题
关于影响请移步https://github.com/Lentil1016/kubeadm-ha/issues/21#issuecomment-442949456
3个master挂掉一个是没有影响的,挂掉两个节点的话,就有影响
我没能成功复现你说的问题
这和单网卡双网卡有任何关系么?你的两个master都已经挂了,它们在网络上就不存在了,只剩下一个孤立的master,它就相当于单点,它的包从哪个网卡出去不都是一样的么?你一台没有连外网的机器要找公网IP,它就是有一万张网卡,结果不还是找不到么?
而且这问题究竟和这个项目有什么关系呢?RTFM好么?
[root@test111 kubeadm-ha]# cat cluster-info
CP0_IP=192.168.56.104 CP0_HOSTNAME=test111 CP1_IP=192.168.56.105 CP1_HOSTNAME=test222 CP2_IP=192.168.56.107 CP2_HOSTNAME=test333 VIP=192.168.56.199 NET_IF=enp0s3 CIDR=192.168.0.0/16
kubectl读取的是~/.kube/config
文件获知IP,~/.kube/config
来自/etc/kubernetes/admin.conf
,该文件由kubeadm在建立集群时生成,出现这个报错说明你的集群本身就有问题,和你有没有关节点都是没关系的。
在默认路由配置正确的情况下,双网卡的集群使用该脚本部署不会出现问题。
本项目只提供最简单的HA方案,首先请确认你的默认路由配置在enp0s3上,如果不能配置默认路由到enp0s3,请自行修改和验证kubeadm-config.yaml
,为apiserver
, controller
, scheduler
指定绑定的IP和adviced IP
。
谢谢
我测试1.12.1的,三台都是单网卡,也会出现挂了两个节点,是无法访问dashboard页面 查看 `
e31947bd9e2c dcb029b5e3ad "kube-apiserver --au…" 3 minutes ago Exited (255) 3 minutes ago k8s_kube-apiserver_kube-apiserver-test111_kube-system_cee492f53c81e1f41d1e1b9b3a3df4eb_29 7eecac62669a k8s.gcr.io/pause:3.1 "/pause" 25 minutes ago Up 25 minutes
eaa8c7da97c5 3cab8e1b9802 "etcd --advertise-cl…" 6 minutes ago Exited (2) 4 minutes ago k8s_etcd_etcd-test111_kube-system_8f9893457b90d19100028c9ba921788a_27 99468919a853 367cdc8433a4 "/coredns -conf /etc…" 35 minutes ago Up 35 minutes k8s_coredns_coredns-576cbf47c7-z9647_kube-system_b97cf849-f051-11e8-952b-0800273fa07f_5 745e35f66259 367cdc8433a4 "/coredns -conf /etc…" 35 minutes ago Up 35 minutes k8s_coredns_coredns-576cbf47c7-rfzsx_kube-system_b97b7b24-f051-11e8-952b-0800273fa07f_6 c92e3d555233 k8s.gcr.io/pause:3.1 "/pause" 36 minutes ago Up 36 minutes ` 只有一个ETC容器,也是挂了的,启动不了 所以导致kube-apiserver挂了
The connection to the server 192.168.16.166:6443 was refused - did you specify the right host or port? 三个节点,如果挂一个节点,就正常,挂两个就不行了
@opcache 查了一下,ETCD挂掉是一个正常现象,3节点的ETCD集群失去两个节点即为majority loss,将导致ETCD停止服务,直到另两个节点中的某一个恢复连接。如果不想经历该问题,请保证始终只有单点故障,或增加HA集群中的主机数量。
@Lentil1016 感谢回复,为什么ETC挂了的两个容器不能自动迁移到正常的主机?如果可以就能保证ETC高可用了
一方面是做不到,一方面是没必要
因为严格的意义上由kubeadm
部署的ETCD
不属于K8s标准部署,它应该属于所谓的Self-Hosted
,也就是在自己的基础上部署自己。如果你观察kubeadm的安装过程,会发现,早在kubectl get pods -n kube-system
中出现etcd
之前数分钟,etcd
的容器就已经在docker
中启动了。另外如果你有一些k8s的基本知识你大概会知道,标准部署的manifest是和K8s中所有有状态数据一起由apiserver存放进分布式etcd
集群中的。但etcd
/apiserver
/controller
/scheduler
这四个组件是例外,在一个节点上,它们启动成功前甚至还没有K8s的基本功能可以用,所以它们并不由K8s负责调度和启动,它们的manifest存放在/etc/kubernetes/manifests
文件夹下,由所在机器的kubelet负责启动。那么如果某一台机器挂掉,这些manifest也就变的不可以访问了。所以不可以漂移。
因为对于较为稳定的基础组件来说,高可用的意义主要是规避硬件问题造成的服务中断,就这一点而言,将etcd的多个实例运行在同一台机器上没有太大的意义。
按ha kubernetes 1.11.0/1.12.1 cluster架构图,3台master,如果挂了两台,不会有影响,我测试发现dashboard页面会报Bad Gateway,不会全部切换到正常的节点吗? VIP是有切换到正常的节点