Kubernetes YAML 配置陷阱-configmap挂载文件权限defaultMode 权限配置使用八进制格式时会导致配置异常

Kubernetes YAML 配置陷阱-defaultMode 权限配置使用八进制格式时会导致配置异常

configmap挂载文件权限修改
当 defaultMode 使用八进制格式时会导致配置异常,这是 Kubernetes YAML 的常见陷阱。

问题描述:

volumes:
  - name: setup-config
    configMap:
      name: xxx-setup-config
      defaultMode: 493  # 正确写法(0755 的十进制表示)
      # defaultMode: 0755  # 错误写法(会被解析为 755 的八进制 = 493 十进制)

问题分析:
Kubernetes API 的 YAML 解析器会将 前导零的数字识别为八进制数,但不同版本/工具的解析存在差异

  • 部分环境会将 0755 解析为十进制 755(权限 rwxr-xr-x)
  • 部分环境会拒绝前导零的数字(报语法错误)

解决思路:

  • 写十进制
    Kubernetes 的 defaultMode 实际需要十进制数值(如 0755 应写为 493),直接使用八进制数会导致解析错误
    八进制 0755 → 十进制 493
    八进制 0744 → 十进制 484
    在配置中增加注释说明:
    defaultMode: 493 # 0755 (rwxr-xr-x)

  • 移除 defaultMode

  • 动态权限修复
    通过 chmod +x 在容器启动时动态赋予执行权限,比静态配置更可靠

总结: 修改权限的时候切记yaml中是十进制。

defaultMode

在K8s(Kubernetes)中,defaultMode是用来设置Configmap挂载后的文件权限,它采用Unix文件权限标准。

420是8进制数字,转换成二进制是100100000,转换成文件权限码就是0644。

文件权限码0644代表所有者(owner)有读/写权限(6=4+2),而属组(group)用户和其他(other)用户只有读权限(4)。具体来说,0代表没有任何权限,1代表执行权限,2代表写权限,4代表读权限。

所以defaultMode: 420中的420实际上是指挂载的ConfigMap文件权限为0644,也就是所有者有读写权限,其他用户只有读权限。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

西京刀客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值