kubernetes一次生产故障日记

  1. 故障描述:

51放假期间公司停电,关掉所有k8s测试机器,包括3台k8s master,5台k8s node,3台ceph机器。放假来电之后启动k8s机器和所有的ceph机器;
开机之后,发现很多k8s服务无法启动,经过判断发现是ceph的存储问题。后续解决ceph存储osd节点down状态问题。但是发现依赖cephfs文件系统的pvc还是不能挂载。因为我们这个环境有两个storageClass,一个是RBD,一个是cephfs。 RBD是刚开始搭建的,因为是kubernetes集群默认提供的RBD控制器,所以配置简单,但是不支持多个主机同时读写的策略。cephfs文件系统的StorageClass可以支持多个主机同时读写,但是不足之处在于Kubernetes默认不支持cephfs存储控制器,所以需要用到第三方的cephfs控制器,才可以创建cephfs的StorageClass。最终也解决了cephfs文件系统的故障问题,K8S所有服务顺利启动,没有造成数据丢失;

  1. 故障排查过程记录:

2.1 确认ceph存储故障:

启动k8s集群之后首先发现很多服务都没有自动启动成功,包括我们的一些公共组件,比如jenkins、prometheus、业务容器等。通过以下命令排查出存储故障:

kubectl describe pods -n kube-system jenkins-55c4dcb555-fwpcp
Events:
Type Reason Age From Message


Warning FailedMount 12m (x257 over 11h) kubelet, 10.83.32.233 Unable to mount volumes for pod “jenkins-55c4dcb555-fwpcp_kube-system(8b5cda6f-6ffe-11e9-974d-480fcf482f56)”: timeout expired waiting for volumes to attach or mount for pod “kube-system”/“jenkins-55c4dcb555-fwpcp”. list of unmounted volumes=[jenkins-home]. list of unattached volumes=[plugins tmp jenkins-config plugin-dir secrets-dir jenkins-home jenkins-token-vb27p]
  然后我登录存储的管理机器(就是安装ceph-deploy)组件的机器,执行如下命令检查存储:

[root@k8sdemo-ceph1 ~]# ceph -s
cluster 119b3a1c-17ad-43c8-9378-a625b8dd19d9
health HEALTH_WARN
clock skew detected on mon.k8sdemo-ceph2, mon.k8sdemo-ceph3
too many PGs per OSD (1472 > max 300)
mds k8sdemo-ceph1 is laggy
Monitor clock skew detected
monmap e2: 3 mons at {k8sdemo-ceph1=10.83.32.224:6789/0,k8sdemo-ceph2=10.83.32.225:6789/0,k8sdemo-ceph3=10.83.32.234:6789/0}
election epoch 4792, quorum 0,1,2 k8sdemo-ceph1,k8sdemo-ceph2,k8sdemo-ceph3
fsmap e1045: 1/1/1 up {0=k8sdemo-ceph1=up:active(laggy or crashed)}
osdmap e311: 3 osds: 3 up, 3 in
flags sortbitwise,require_jewel_osds
pgmap v1226550: 1472 pgs, 5 pools, 119 GB data, 41716 objects
376 GB used, 3433 GB / 3809 GB avail
1472 active+clean
client io 2457 B/s wr, 0 op/s rd, 0 op/s wr
[root@k8sdemo-ceph1 ~]# #在故障的情况下,这里的osdmap 3 down,经过激活osd盘之后状态变成了up

[root@k8sdemo-ceph1 ~]# ceph osd tree
ID WEIGHT TYPE NAME UP/DOWN REWEIGHT PRIMARY-AFFINITY
-1 3.71986 root default
-2 1.52179 host k8sdemo-ceph1
0 1.52179 osd.0 up 1.00000 1.00000
-3 1.52179 host k8sdemo-ceph2
1 1.52179 osd.1 up 1.00000 1.00000
-4 0.67628 host k8sdemo-ceph3
2 0.67628 osd.2 up 1.00000 1.00000
[root@k8sdemo-ceph1 ~]# #在故障的情况下,这里的状态都是down,激活osd之后这里的状态都是up
  遇到这种情况我的解决方法如下:

ceph-deploy osd activate k8sdemo-ceph1:/dev/sda4 k8sdemo-ceph2:/dev/sda4 k8sdemo-ceph3:/dev/sda4
#在安装有ceph-deploy管理机器上面执行
  后续经过找一下ceph存储的牛人进行确认,因为我们的ceph版本是10.2.11,这个可能是一个BUG。就是重启之后OSD节点不会自动激活,需要手动激活。我们也可以采用启动自动执行激活命令的方式来实现自动激活。解决方案如下:

vim /etc/rc.d/rc.local
/usr/sbin/ceph-disk -v activate --mark-init systemd --mount /dev/sda4
chmod +x /etc/rc.d/rc.local
#在每一台ceph OSD节点上面增加如上内容:
  2.1 确认cephfs文件系统类型的StorageClass故障:
  当我解决了OSD节点故障之后,执行如下检查命令:

[root@k8sdemo-ceph1 ~]# ceph osd tree
ID WEIGHT TYPE NAME UP/DOWN REWEIGHT PRIMARY-AFFINITY
-1 3.71986 root default
-2 1.52179 host k8sdemo-ceph1
0 1.52179 osd.0 up 1.00000 1.00000
-3 1.52179 host k8sdemo-ceph2
1 1.52179 osd.1 up 1.00000 1.00000
-4 0.67628 host k8sdemo-ceph3
2 0.67628 osd.2 up 1.00000 1.00000

[root@k8sdemo-ceph1 ~]# ceph -s
cluster 119b3a1c-17ad-43c8-9378-a625b8dd19d9
health HEALTH_WARN
clock skew detected on mon.k8sdemo-ceph2, m

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值