成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

解決K8S中Pod無法正常Mount PVC的問題

運維 系統運維
我是使用的Deployment來管理的有狀態應用,正常使用StatefulSet不會出現這種問題,那使用Deployment該如何避免這種問題呢?

[[413739]]

今天發現一個Pod一直處于ContainerCreating狀態,通過Describe查看,發現以下錯誤。

  1. Warning  FailedMount  15s        kubelet, node-2    MountVolume.WaitForAttach failed for volume "pvc-504feeb6-ae42-45ba-996b-5e8e1039b601" : rbd image kube/kubernetes-dynamic-pvc-bbfd3466-9f2f-11ea-8e91-5a4125e02b87 is still being used 

意思就是說該Pod啟動需要掛載PVC,但是這個PVC目前正被使用。可以確定的是除了這個Deployment之外,沒有其他Deployment在使用這個PVC,那這是為什么呢?

我們先來看看如果一個Pod需要掛載卷,在創建Pod的過程中,卷的整個流程如下:(1)第一步是先創建卷 (2)第二步在節點上掛載卷 (3)將卷映射到Pod中

在刪除Pod的時候,卷的卸載過程和上面正好相反。所以初步懷疑是在刪除Pod的時候,原節點由于某些原因從節點上卸載卷失敗,我們來具體排查一下。

1、通過上面Pod的錯誤信息,我們可以獲取到如下有用信息

  1. rbd image kube/kubernetes-dynamic-pvc-bbfd3466-9f2f-11ea-8e91-5a4125e02b87 is still being used 

我們可以從上面的信息獲取到rbd的鏡像信息,拆分如下:

  • rbd池:kube
  • rbd鏡像:kubernetes-dynamic-pvc-bbfd3466-9f2f-11ea-8e91-5a4125e02b87

2、我們通過ceph命令可以獲取到該鏡像被哪個節點使用,如下:

  1. # rbd info kube/kubernetes-dynamic-pvc-bbfd3466-9f2f-11ea-8e91-5a4125e02b87 
  2. rbd image 'kubernetes-dynamic-pvc-bbfd3466-9f2f-11ea-8e91-5a4125e02b87'
  3.  size 100 GiB in 25600 objects 
  4.  order 22 (4 MiB objects) 
  5.  snapshot_count: 0 
  6.  id: fb236b8b4567 
  7.  block_name_prefix: rbd_data.fb236b8b4567 
  8.  format: 2 
  9.  features: layering 
  10.  op_features:  
  11.  flags:  
  12.  create_timestamp: Tue May 26 17:03:15 2020 
  13.  access_timestamp: Tue May 26 17:03:15 2020 
  14.  modify_timestamp: Tue May 26 17:03:15 2020 

主要關注block_name_prefix的值。

然后通過以下的命令獲取到具體的節點:

  1. # rados listwatchers -p kube rbd_header.fb236b8b4567 
  2. watcher=192.168.100.181:0/154937577 client.194364 cookie=18446462598732840971 

其中,將從block_name_prefix獲取到的值將rbd_data修改為rbd_header,然后通過以上命令獲取即可。

從上面輸出的信息可以看到這個rbd鏡像被掛載到192.168.100.181主機上,這時候我們需要切換到該主機進行具體的操作。

3、查看具體的文件系統掛載信息

  1. ls /dev/rbd/kube/kubernetes-dynamic-pvc-bbfd3466-9f2f-11ea-8e91-5a4125e02b87 -l 
  2. lrwxrwxrwx 1 root root 11 7月  27 09:04 /dev/rbd/kube/kubernetes-dynamic-pvc-bbfd3466-9f2f-11ea-8e91-5a4125e02b87 -> ../../rbd4 

可以看到這個rbd鏡像被掛載到/dev/rbd4上,我們可以直接通過rbd unmap命令卸載,如下:

  1. # rbd unmap /dev/rbd4 

不過我這里并沒有這么容易,當我在卸載的時候報如下錯誤。

  1. # rbd unmap /dev/rbd4 
  2. rbd: sysfs write failed 
  3. rbd: unmap failed: (16) Device or resource busy 

一看到這個問題,就想到有時候在umount的時候,也會遇到Device busy,所以第一反應是使用lsof,看是否能找到哪個進程占用了,如下:

  1. # lsof 2>/dev/null | grep rbd4 

但是我并沒有找到任何進程,二臉懵逼.....

最后只有瘋狂百度了,找到了兩種解決方式。(1)通過rbd unmap -o force進行強制卸載 (2)通過grep 'rbd4' /proc/*/task/*/mountinfo來查找進程PID

當把這個rbd鏡像從原節點卸載過后,就可以看到Pod可以正常啟動了。

寫在最后

由于我是使用的Deployment來管理的有狀態應用,正常使用StatefulSet不會出現這種問題,那使用Deployment該如何避免這種問題呢?

  • 使用ReadWriteMany訪問模式的pvc
  • 將maxSurge設置為0,避免在更新過程中產生多余的pod

這兩種方式都有利有弊,具體情況需要使用者去權衡。

本文轉載自微信公眾號「運維開發故事」,可以通過以下二維碼關注。轉載本文請聯系運維開發故事公眾號。

 

責任編輯:姜華 來源: 運維開發故事
相關推薦

2022-06-01 09:38:36

KubernetesPod容器

2024-03-18 15:44:48

K8S故障運維

2023-07-04 07:30:03

容器Pod組件

2022-02-23 08:01:04

KubernetesK8sPod

2022-11-02 10:21:41

K8s pod運維

2021-12-21 08:31:07

k8s診斷工具kubectl-deb

2023-12-01 15:58:00

Kubernetes集群DevOps

2023-09-18 14:34:07

Kubernetes云原生

2022-04-22 13:32:01

K8s容器引擎架構

2023-11-06 07:16:22

WasmK8s模塊

2025-05-22 08:05:00

K8SNFS 存儲存儲

2023-09-13 09:02:22

PVPVC存儲

2023-02-08 07:55:33

K8sHPA服務器

2020-07-17 08:40:47

K8SServicePOD

2021-07-14 18:21:38

負載均衡K8SgRPC

2023-09-06 08:12:04

k8s云原生

2019-08-12 08:36:33

K8S網絡Pod

2025-04-07 08:00:00

KubernetesK8Spod

2024-07-15 18:20:18

2023-09-15 07:34:15

AIOps云原生項目
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 91一区二区 | 国产人成精品一区二区三 | 欧美一级欧美三级在线观看 | 国产精彩视频 | 在线看国产 | 中文字幕乱码一区二区三区 | a看片| 亚洲国产一区二区三区 | 青青久久久 | 国产精品一区在线观看 | 久久久国产一区二区三区四区小说 | 成人免费视频网站 | 成人午夜影院 | 日韩在线视频播放 | 亚洲国产精品久久 | 91免费电影 | 日韩毛片免费视频 | 日韩一区二区三区精品 | 91久久精品国产91久久 | 日韩欧美在线视频观看 | 中文字幕一区二区在线观看 | 国产美女视频黄a视频免费 国产精品福利视频 | 99精品在线观看 | 成人久久网| 中文字幕一区二区三区四区五区 | 91中文视频 | av日日操 | 国产精品一二区 | 成人在线观看网站 | 亚洲视频国产 | 久久999 | 久久伊| a在线观看免费 | 中文av在线播放 | 99日韩 | 视频国产一区 | 午夜影院免费体验区 | 欧美精品久久久 | 羞羞视频网页 | 日韩av最新网址 | 欧美成年网站 |