kubesphere磁盘挂载小bug记录
kubeSphere磁盘挂载设置界面

此处使用了kubesphere 自带磁盘挂载设置(采用hostPath)

配置完成查看yaml 并未生效,运行容器时也报出未找到对应存储卷的错误

此处注明一下hostPath 相关配置项

前言

容器中的磁盘文件随着容器的生而生,随着容器的死而灭,这给运行在容器中的重要应用来说存在一些问题:

  • 当容器崩溃时,kubelet会以初始状态重启容器,会导致容器中的重要文件不复存在
  • 当在Pod中运行多个容器时,我们往往需要这些容器共享一些文件

于是,K8S便创造了卷——Volumes


卷类型之hostPath

hostPath类型的卷可以把宿主机节点上的文件或文件夹挂载到pod中

先来看看hostPath类型的卷如何配置:

apiVersion: v1
kind: Pod
metadata:
  name: test-pd
spec:
  volumes:
  - name: test-volume
    hostPath:
      path: /data
      type: Directory
  containers:
  - image: k8s.gcr.io/test-webserver
    name: test-container
    volumeMounts:
    - name: test-volume
      mountPath: /test-pd
      mountPropagation: None
      readOnly: true
      subPath: test.txt
      subPathExpr: 

这里针对每一个配置项逐一解释:

  • sepc.volumes: 配置宿主机节点上的挂载目录
配置项名称是否必须说明
name必须卷的名称,在pod内必须唯一
hostPath.path必须宿主机上的目录路径,如果是符号链接,它将根据符号链接追踪到实际路径
hostPath.type可选hostPath卷的类型,默认为“”

hostPath.type的枚举值有:

取值说明
DirectoryOrCreate如果给定路径不存在,将根据需要在那里创建一个空目录,权限设置为755,与Kubelet具有相同的组和所有权。
Directory给定的目录路径必须存在
FileOrCreate如果给定路径不存在,将根据需要在那里创建一个空文件,权限设置为644,与Kubelet具有相同的组和所有权。
File给定路径上必须存在对应文件
Socket给定路径上必须存在一个UNIX socket
CharDevice给定路径上必须存在字符设备
BlockDevice给定路径上必须存在块设备

使用type字段时需要注意:

  • 由于节点上的文件不同,具有相同配置(如从podTemplate创建的)的Pods在不同节点上的行为可能不同
  • 当Kubernetes按照计划添加资源感知调度(?)时,它将不会使用hostPath声明的资源
  • 在主机上创建的文件或目录只能由根用户写。你需要在一个有特权的容器中以root身份运行进程,或者修改主机上的文件权限,以便能够写入hostPath卷
  • containers.volumeMounts: 配置挂载到pod里的路径
配置项名称是否必须说明
name必须此处卷的名称必须和spec.volumes下的某个卷的名称一致
mountPath必须挂载到容器里的路径,不能包含英文冒号‘:’
mountPropagation可选该参数决定如何将挂载从主机传播到容器,反之亦然。默认为None
readOnly可选是否只读,默认为可读写
subPath可选将spec.volumes中的子目录挂载到容器中不同的位置,默认为“”,也就是挂载到spec.volumes定义的根目录
subPathExpr可选与subPath类似,但是路径中可以支持从环境变量取值:${VAR_NAME},默认为“”,也就是spec.volumes定义的根目录。和subPath只能有一个出现

mountPropagation的取值有:

  • None:默认值,卷在容器中以及宿主机上的后续挂载相互隔离
  • HostToContainer:任何在宿主机上创建的卷挂载在容器中都是可见的
  • Bidirectional:任何在容器中创建的卷挂载都会传播到宿主机,然后传播到所有使用此挂载的pod中的容器里

了解了yaml 对应配置项,我们进行手动配置对应的挂载磁盘

修改后,创建容器成功

验证:

宿主机创建一个文件

查看pod内文件情况

至此验证成功。

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇