k8s驅(qū)動之CSI

參考文獻
https://kubernetes-csi.github.io/docs/deploying.html

Driver Volume Mounts

The node plugin needs direct access to the host for making block devices and/or filesystem mounts available to the Kubernetes kubelet.

The mount point used by the CSI driver must be set to Bidirectional to allow Kubelet on the host to see mounts created by the CSI driver container. See the example below:

      containers:
      - name: my-csi-driver
        ...
        volumeMounts:
        - name: socket-dir
          mountPath: /csi
        - name: mountpoint-dir
          mountPath: /var/lib/kubelet/pods
          mountPropagation: "Bidirectional"
      - name: node-driver-registrar
        ...
        volumeMounts:
        - name: registration-dir
          mountPath: /registration
      volumes:
      # This volume is where the socket for kubelet->driver communication is done
      - name: socket-dir
        hostPath:
          path: /var/lib/kubelet/plugins/<driver-name>
          type: DirectoryOrCreate
      # This volume is where the driver mounts volumes
      - name: mountpoint-dir
        hostPath:
          path: /var/lib/kubelet/pods
          type: Directory
      # This volume is where the node-driver-registrar registers the plugin
      # with kubelet
      - name: registration-dir
        hostPath:
          path: /var/lib/kubelet/plugins_registry
          type: Directory

查看集群CSI插件

在集群中查看

root@server29:~# ls  /var/lib/kubelet/
device-plugins  pki  plugins  plugins_registry
root@server29:~# ls  /var/lib/kubelet/p
pki/              plugins/          plugins_registry/ 
root@server29:~# ls  /var/lib/kubelet/plugins
com.seaweedfs.csi
root@server29:~# ls  /var/lib/kubelet/plugins_registry/
seaweedfs-csi-driver-reg.sock
root@server29:~# ls  /var/lib/kubelet/pki/
kubelet-client-2019-06-19-15-21-34.pem  kubelet-client-current.pem
root@server29:~# ls  /var/lib/kubelet/device-plugins/
DEPRECATION  kubelet_internal_checkpoint  kubelet.sock  nvidia.sock  rdma-sriov-dp.sock

該節(jié)點安裝了com.seaweedfs.csi的csi插件

查看

kubelet的啟動命令中的根目錄--root-dir=/data1/k8s/kubelet

root@server29:~# ls /data1/k8s/kubelet/pods/020bb12f-1da6-11eb-85b5-8446fe72fa77
containers  etc-hosts  plugins  volumes
root@server29:~# ls /data1/k8s/kubelet/pods/020bb12f-1da6-11eb-85b5-8446fe72fa77/containers
zhangbo6-inpainting
root@server29:~# ls /data1/k8s/kubelet/pods/020bb12f-1da6-11eb-85b5-8446fe72fa77/volumes/
kubernetes.io~empty-dir  kubernetes.io~nfs  kubernetes.io~secret
root@server29:~# ls /data1/k8s/kubelet/pods/020bb12f-1da6-11eb-85b5-8446fe72fa77/plugins/
kubernetes.io~empty-dir

去查看pod對應(yīng)的掛載信息發(fā)現(xiàn)沒有掛載seaweedfs
其中 020bb12f-1da6-11eb-85b5-8446fe72fa77是pod對應(yīng)的uid

kubectl get pods -o custom-columns=PodName:.metadata.name,PodUID:.metadata.uid |grep 020bb12f-1da6-11eb-85b5-8446fe72fa77
qiantao@qiant ~ % kc get pod zhangbo6-zhangbo6-inpainting -oyaml |grep containerID
  - containerID: docker://10be561c850486cad50d1f7ed12e0e5a93e40d424dd929ab00ecdc048479bf92

在節(jié)點上也能看到對應(yīng)的進程

root@server29:~# ps -aux |grep 10be561c850486cad50d1f7ed12e0e5a93e40d424dd929ab00ecdc048479bf92
root     36133  0.0  0.0  11788  5108 ?        Sl   Nov03   0:05 containerd-shim -namespace moby -workdir /data/k8s/k8s_docker/data/containerd/daemon/io.containerd.runtime.v1.linux/moby/10be561c850486cad50d1f7ed12e0e5a93e40d424dd929ab00ecdc048479bf92 -address /var/run/docker/containerd/containerd.sock -containerd-binary /data/services/k8s_docker-GPU-1.18.9.3/bin/containerd -runtime-root /var/run/docker/runtime-nvidia

另外一個例子

當我在pod中啟用

apiVersion: v1
kind: Pod
metadata:
  labels:
    pm-pod-db-id: "9529"
  name: qiantao-test-busybox
  namespace: default
spec:
  containers:
  - args:
    - sleep 
    - "100000000"
    image: busybox
    imagePullPolicy: IfNotPresent
    name: test-create4-8
    volumeMounts:
    - mountPath: /dev/shm
      name: dshm
    - mountPath: /data/netfs
      name: weedfs-volume
  nodeSelector:
    ip: 10.26.133.29
  volumes:
  - name: weedfs-volume
    persistentVolumeClaim:
      claimName: qiantao-pvc-csi-data
  - emptyDir:
      medium: Memory
    name: dshm

PVC的配置如下

qiantao@qiant ~ % kc get pvc qiantao-pvc-csi-data -o yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  annotations:
    pv.kubernetes.io/bind-completed: "yes"
    pv.kubernetes.io/bound-by-controller: "yes"
  creationTimestamp: "2020-06-18T11:05:21Z"
  finalizers:
  - kubernetes.io/pvc-protection
  name: qiantao-pvc-csi-data
  namespace: default
  resourceVersion: "614229919"
  selfLink: /api/v1/namespaces/default/persistentvolumeclaims/qiantao-pvc-csi-data
  uid: 9a394cfb-b153-11ea-bcb7-ac1f6b244dd4
spec:
  accessModes:
  - ReadWriteMany
  resources:
    requests:
      storage: 1000Gi
  selector:
    matchLabels:
      pv: qiantao-pv-csi-data1
  storageClassName: seaweedfs-storage
  volumeMode: Filesystem
  volumeName: qiantao-pv-csi-data
status:
  accessModes:
  - ReadWriteMany
  capacity:
    storage: 1000Gi
  phase: Bound

PV如下所示

qiantao@qiant ~ % kc get pv qiantao-pv-csi-data -o yaml 
apiVersion: v1
kind: PersistentVolume
metadata:
  annotations:
    pv.kubernetes.io/bound-by-controller: "yes"
    pv.kubernetes.io/provisioned-by: com.seaweedfs.csi
  creationTimestamp: "2020-06-18T11:05:21Z"
  finalizers:
  - kubernetes.io/pv-protection
  - external-attacher/seaweedfs-csi-driver
  labels:
    pv: qiantao-pv-csi-data1
  name: qiantao-pv-csi-data
  resourceVersion: "614229916"
  selfLink: /api/v1/persistentvolumes/qiantao-pv-csi-data
  uid: 9a3276ac-b153-11ea-bcb7-ac1f6b244dd4
spec:
  accessModes:
  - ReadWriteMany
  capacity:
    storage: 1000Gi
  claimRef:
    apiVersion: v1
    kind: PersistentVolumeClaim
    name: qiantao-pvc-csi-data
    namespace: default
    resourceVersion: "614229912"
    uid: 9a394cfb-b153-11ea-bcb7-ac1f6b244dd4
  csi:
    driver: seaweedfs-csi-driver
    fsType: ext4
    volumeHandle: csi-qiantao-storage
  persistentVolumeReclaimPolicy: Retain
  storageClassName: seaweedfs-storage
  volumeMode: Filesystem
status:
  phase: Bound

最終在pod使用時(pod uid=53fe1c36-1ff9-11eb-8a23-b008758cb2a8)

root@server29:~# tree /data1/k8s/kubelet/pods/53fe1c36-1ff9-11eb-8a23-b008758cb2a8/volumes/ -L 4
/data1/k8s/kubelet/pods/53fe1c36-1ff9-11eb-8a23-b008758cb2a8/volumes/
├── kubernetes.io~csi
│   └── qiantao-pv-csi-data
│       ├── mount
│       │   ├── 111
│       │   ├── 3333
│       │   ├── agedatastes
│       │   ├── beat_game
│       │   ├── data
│       └── vol_data.json
├── kubernetes.io~empty-dir
│   └── dshm
└── kubernetes.io~secret
    └── default-token-6lktj
        ├── ca.crt -> ..data/ca.crt
        ├── namespace -> ..data/namespace
        └── token -> ..data/token

可以看出使用了kubernetes.io~csi類型的存儲掛載源请,當掛載成功后顯示了掛載的目錄

使用命令看到的目錄與文件系統(tǒng)上一致

kc exec -it qiantao-test-busybox -- ls /data/netfs
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末倡勇,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子杆勇,更是在濱河造成了極大的恐慌扰藕,老刑警劉巖问顷,帶你破解...
    沈念sama閱讀 217,826評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件九府,死亡現(xiàn)場離奇詭異稻励,居然都是意外死亡父阻,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評論 3 395
  • 文/潘曉璐 我一進店門望抽,熙熙樓的掌柜王于貴愁眉苦臉地迎上來加矛,“玉大人,你說我怎么就攤上這事煤篙≌謇溃” “怎么了?”我有些...
    開封第一講書人閱讀 164,234評論 0 354
  • 文/不壞的土叔 我叫張陵辑奈,是天一觀的道長苛茂。 經(jīng)常有香客問我已烤,道長,這世上最難降的妖魔是什么妓羊? 我笑而不...
    開封第一講書人閱讀 58,562評論 1 293
  • 正文 為了忘掉前任胯究,我火速辦了婚禮,結(jié)果婚禮上躁绸,老公的妹妹穿的比我還像新娘裕循。我一直安慰自己,他們只是感情好净刮,可當我...
    茶點故事閱讀 67,611評論 6 392
  • 文/花漫 我一把揭開白布剥哑。 她就那樣靜靜地躺著,像睡著了一般淹父。 火紅的嫁衣襯著肌膚如雪株婴。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,482評論 1 302
  • 那天弹灭,我揣著相機與錄音督暂,去河邊找鬼。 笑死穷吮,一個胖子當著我的面吹牛逻翁,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播捡鱼,決...
    沈念sama閱讀 40,271評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼八回,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了驾诈?” 一聲冷哼從身側(cè)響起缠诅,我...
    開封第一講書人閱讀 39,166評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎乍迄,沒想到半個月后管引,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,608評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡闯两,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,814評論 3 336
  • 正文 我和宋清朗相戀三年褥伴,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片漾狼。...
    茶點故事閱讀 39,926評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡重慢,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出逊躁,到底是詐尸還是另有隱情似踱,我是刑警寧澤,帶...
    沈念sama閱讀 35,644評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站核芽,受9級特大地震影響囚戚,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜狞洋,卻給世界環(huán)境...
    茶點故事閱讀 41,249評論 3 329
  • 文/蒙蒙 一弯淘、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧吉懊,春花似錦庐橙、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,866評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至恶导,卻和暖如春浆竭,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背惨寿。 一陣腳步聲響...
    開封第一講書人閱讀 32,991評論 1 269
  • 我被黑心中介騙來泰國打工邦泄, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人裂垦。 一個月前我還...
    沈念sama閱讀 48,063評論 3 370
  • 正文 我出身青樓顺囊,卻偏偏與公主長得像,于是被迫代替她去往敵國和親蕉拢。 傳聞我的和親對象是個殘疾皇子特碳,可洞房花燭夜當晚...
    茶點故事閱讀 44,871評論 2 354

推薦閱讀更多精彩內(nèi)容