kube-controller-manager组件故障导致pvc创建异常

一、背景

开发测试环境需求,需为服务挂载卷存储,使用gfs作为存储类,创建pvc指定卷大小;

#pvcyaml文件样板

apiVersion: v1

kind: PersistentVolumeClaim

metadata:

  name: my-pvc

spec:

  accessModes:

    - ReadWriteMany

  resources:

    requests:

      storage: *Gi

  storageClassName: glusterfs-storage

  volumeMode: Filesystem

#发现该pvc一直处于pending状态,即无法与pv邦定;后面又查看集群中的heketi组件日志,没有发出创建pv的请求

先说解决方法:修改controller-manager所在节点上的时间,使其恢复CST正常时间

二、排故

$ kubectl describe pvc my-pvc -n default

#显示详细信息请查看kube-controller-manager组件

$ kubectl logs controller-manager-* -n kube-system

Leaderelection .go:520errorretrieving resourceLockkube -system/kube-controtler-manager https:/**.**/api/Vl /namespaces/kube-system/endpoints/kube-controLler-manager?t1meout-10s:context deadline exceeded

#怀疑是controller-manager选主机制出现问题

controller-manager存在选主机制,只有主节点才会调用 StartControllers() 启动所有控制器,而其他从节点则仅执行选主算法(选出的主去不断更新kube-controller-managerendpoint资源,维护自己的主地位)

个人猜测:由于时间变动(在证书时间范围内,集群节点状态正常),导致管理节点上controller-manager组件无法根据选主算法维护kube-controller-managerendpoint资源,导致集群内部的controller-manager集群没有主去启动各种控制器(创建或者跟新资源),导致资源创建处于pending状态;

pv创建:

图一:pv创建图(个人理解)

#pv-controller机制:

PV对象主要状态变更

1available --> bound一个pv对象创建出来后,处于available状态。pv controller会为pvc对象寻找合适的pv对象与之绑定,随即pv对象状态变更为bound

2bound --> released当与pv绑定的pvc对象被删除后,如果回收逻辑为retain,则pv对象状态变更为released

pvc对象主要状态变更

1pending --> bound一个pvc对象创建出来后,处于pending状态。pv controller会为pvc对象寻找合适的pv对象与之绑定,随即pvc对象状态变更为bound————>当没有正常创建pv,无法绑定pv就是pending状态

#tips

pvc如何选择合适的pv来绑定?

1volumeName匹配:当pvc对象中指定了volumeName属性,则会直接查询名称为该volumeName属性值一致的pv,并与之绑定,当该pv不存在时,该pvc会一直处于pending状态;

2volumeMode匹配:选择具有与pvc相同的volumeModepvBlock/FileSystem);

3storageclass匹配:选择具有与pvc相同的stroageclass名称的pv

4accessMode匹配:选择具有与pvc相同的accessModepv

5size检查:选择size大于等于且最接近pvcsize声明的pv

 三、参考文献

k8s组件机制:3. 核心组件 - 3.4 kube-controller-manager - 《Kubernetes Handbook (Kubernetes指南)(201803)》 - 书栈网 · BookStack

组件选举:Kubernetes 实战-Leader 选举 · Yiran's Blog (zdyxry.github.io)

博客:4.深入k8s:持久卷PV、PVC及其源码分析 - luozhiyun - 博客园 (cnblogs.com)

k8s官网:Kubernetes

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值