成人免费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

2021-12-21 08:31:07

k8s診斷工具kubectl-deb

2022-11-02 10:21:41

K8s pod運維

2023-12-01 15:58:00

Kubernetes集群DevOps

2023-09-18 14:34:07

Kubernetes云原生

2023-11-06 07:16:22

WasmK8s模塊

2022-04-22 13:32:01

K8s容器引擎架構

2025-05-22 08:05:00

K8SNFS 存儲存儲

2023-09-13 09:02:22

PVPVC存儲

2020-07-17 08:40:47

K8SServicePOD

2021-07-14 18:21:38

負載均衡K8SgRPC

2023-02-08 07:55:33

K8sHPA服務器

2019-08-12 08:36:33

K8S網絡Pod

2023-09-06 08:12:04

k8s云原生

2025-04-07 08:00:00

KubernetesK8Spod

2021-06-07 08:32:06

K8S集群Poddebug

2024-07-15 18:20:18

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 懂色中文一区二区三区在线视频 | 亚洲国产成人精品久久久国产成人一区 | 欧美精品首页 | 一区二区三区视频在线观看 | 操到爽| 久久中文字幕一区 | 91极品欧美视频 | 在线观看亚洲 | 国产免费一区二区 | 亚洲成人网在线观看 | 国产精品久久久亚洲 | 91在线一区二区 | 99久久精品一区二区毛片吞精 | 夜久久 | 欧美成年黄网站色视频 | 免费av毛片 | 日韩在线大片 | av入口| 国产精品精品视频一区二区三区 | 国产精品久久久久久久久婷婷 | 欧美精品一区二区在线观看 | 国产sm主人调教女m视频 | 国产98色在线 | 日韩 | 欧美综合在线观看 | 亚洲国产aⅴ成人精品无吗 综合国产在线 | 国产一区二区在线播放 | 中文字幕av高清 | 国产黄色大片网站 | av国产在线观看 | 色先锋影音 | 国产婷婷综合 | 亚洲一区二区av | 久久久久久高潮国产精品视 | 日韩一区二区三区在线 | 在线看av的网址 | 狠狠操av | 亚洲欧美一区二区三区国产精品 | 成人午夜影院 | 一区二区三区 在线 | 一区二区三区中文字幕 | 亚洲精品久久区二区三区蜜桃臀 |