ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

k0s 目录布局完全指南:data-dir、run-dir 与 kubelet 根目录解析

k0s 目录布局完全指南:data-dir、run-dir 与 kubelet 根目录解析 云原生容器编排边缘计算【免费下载链接】k0sk0s - The Zero Friction Kubernetes项目地址https://gitcode.com/gh_mirrors/k0/k0s点击查看免费下载k0s 在宿主机上会读写一套固定的目录体系用来存放持久化状态证书、etcd 数据、manifest、镜像包和运行时状态PID 文件、Unix socket。本文基于官方 directories 文档 与仓库源码系统讲解 k0s 的目录布局、每个目录的用途与权限模式、三个可配置父目录--data-dir、--run-dir、--kubelet-root-dir的取值规则以及路径如何从命令行参数派生并传播到各个受监督组件。读完本文你将能清晰回答k0s 的数据放在哪、运行时文件放在哪、备份和清理分别覆盖哪些路径、改目录参数会不会破坏现有集群等实操问题。稳定性提示下文描述的目录布局被 k0s 官方视为实现细节即使在同一个小版本patch release之间也可能在没有通知的情况下变化除非文档的其他部分例如引用这些路径或其中文件的章节明确声明其稳定性。规划自动化脚本、备份策略或监控规则时请留意这一点。三个可配置的父目录k0s 的整棵目录树由两个父目录派生而来均可通过 CLI 标志配置在启用负载workload的节点上还可以单独指定 kubelet 根目录CLI 标志默认值存放内容--data-dirLinux/var/lib/k0sWindowsC:\var\lib\k0s持久状态证书、etcd/kine 数据库、manifest、镜像包等--run-dirLinux/run/k0s运行时状态受监督进程的 PID 文件、Unix socket如status.sock--kubelet-root-dirdata-dir/kubeletKubelet 根目录仅在有 workload 的节点上生效注意--run-dir目前仅在 Linux 上有默认值/run/k0s见 pkg/constant/constant_unix.go。这三个标志在 pkg/config/cli.go 中注册其中--data-dir的描述带有明确警告Data Directory for k0s. DO NOT CHANGE for an existing setup, things will break!——对于一个已经运行过的集群随意更改--data-dir会导致现有状态证书、数据库无法被找到集群将无法正常工作。数据目录data-dir布局在默认的/var/lib/k0s下k0s 按照以下结构组织持久化状态路径用途目录权限模式data-dir/数据目录顶层0755data-dir/bin/首次启动时解压出的内嵌二进制kubelet、etcd、containerd 等0755data-dir/pki/由 k0s 管理的集群 CA 与各组件证书0751data-dir/pki/etcd/etcd 专用证书0711data-dir/etcd/使用内嵌 etcd 时的 etcd 数据库文件0700data-dir/manifests/Manifest Deployer 的 drop-in 目录放入此处的文件会被应用到集群0755data-dir/images/导入到受管理 containerd 实例的镜像包airgap 场景0755data-dir/kine/使用 Kine 代替 etcd 时的 Kine 数据库文件0750这些权限模式并非文档口头约定而是硬编码在 pkg/constant/constant.go 中例如DataDirMode 0755、CertRootDirMode 0751、EtcdDataDirMode 0700、KineDBDirMode 0750。其中 etcd 数据目录0700与证书根目录的收紧权限对应了 CIS Kubernetes 基准中关于 etcd 数据与证书文件保护的检查项源码注释引用了 CIS 1.5.1 的相关规则。证书与配置文件的具体文件权限除目录权限外pki/内部的证书文件还有更细粒度的权限划分公钥证书public certs以0644写入私钥private keys以0640写入admin/kubelet 配置文件如admin.conf、kubelet config以0600写入。对应到源码即CertMode 0644、CertSecureMode 0640、OwnerOnlyMode 0600见 pkg/constant/constant.go。从源码注释可以推断0640的私钥模式与0600的 owner-only 模式同样是围绕 CIS 基准中对证书、kube-apiserver.yaml、admin.conf等敏感文件权限的加固要求。运行目录run-dir布局在默认的/run/k0s下路径用途权限模式run-dir/运行目录顶层0755run-dir/*.pid受监督进程kubelet、etcd、containerd 等的 PID 文件0644run-dir/status.sock向k0s status等命令暴露本地状态的 Unix socket由进程 umask 决定PidFileMode 0644与RunDirMode 0755同样定义于 pkg/constant/constant.go。status.sock的默认位置来自 pkg/constant/constant_unix.go 的StatusSocketPathDefault /run/k0s/status.sock并可通过--status-socket标志覆盖见 pkg/config/cli.go 与 cmd/status/status.go。为什么 run-dir 独立于>k0s airgap list-images | k0s airgap bundle-artifacts -v -o image-bundle.tar生成的 bundle 导入到节点后即落到data-dir/images由 k0s 管理的 containerd 实例加载。这解释了为什么备份时需要一并覆盖该目录见下文。Kubelet 根目录与 CSI 存储的路径差异k0s 管理的 kubelet 默认工作目录是data-dir/kubelet这与上游 Kubernetes 的默认/var/lib/kubelet不同。这一差异对 CSI 驱动有实际影响Storage 文档 明确指出kubelet 由 k0s 安装时默认使用/var/lib/k0s/kubelet若指定了--data-dir则路径随之变化在配置 CSI 驱动时需按其文档自定义该路径否则驱动可能无法找到 kubelet 的工作目录。部署任何依赖 kubelet 目录路径的存储、监控或安全组件前务必核对这一点。备份/恢复的覆盖范围Backup/Restore 文档 与目录布局直接对应k0s 的备份覆盖data-dir/pki下的证书、data-dir/manifests下自定义 manifest、data-dir/images下的镜像包以及 etcd或 k0s 配置使用的 kine数据库文件。反过来data-dir/bin中的内嵌二进制无需备份首次启动会重新解压运行时目录run-dir也无需备份重启自动重建。规划备份脚本时可按此范围精确打包避免备份冗余的运行时产物。清理reset时的目录处理k0s reset的目录清理逻辑在 pkg/cleanup/directories.go 中实现它印证了本文的目录模型清理时先反向卸载data-dir与 kubelet 根目录下的所有挂载点避免误删 Kubernetes 挂载的持久卷失败时回退为 lazy unmount随后删除 kubelet 根目录、data-dir与run-dir。实现中还特别处理了两种情况当 kubelet 根目录位于data-dir之外时单独卸载其挂载当data-dir或 kubelet 根目录本身是独立分区/卷的挂载点时只清空其内容而不删除挂载点本身。小结k0s 的目录体系可以归纳为三条主线持久状态集中在data-dir默认/var/lib/k0sbin/、pki/、etcd/、manifests/、images/、kine/对应备份与升级的核心数据运行时状态集中在run-dir默认/run/k0sPID 文件与status.sock因/run常为 tmpfs 而在重启时自动清空路径一致性所有子路径均由--data-dir/--run-dir/--kubelet-root-dir统一派生并传播到受监督组件--data-dir一旦集群初始化后便不应更改。权限设计上从pki/0751到 etcd 数据0700、私钥0640再到 admin 配置0600层层收紧与 CIS Kubernetes 基准的加固要求对应。理解了这套布局无论是备份、离线部署、CSI 驱动配置还是故障排查都能快速定位 k0s 的状态到底在哪里。相关延伸阅读StorageCSI 路径差异、Backup/Restore备份覆盖范围、Manifest Deployermanifests 目录用法、airgap 离线安装。赞分享云原生容器编排边缘计算【免费下载链接】k0sk0s - The Zero Friction Kubernetes项目地址https://gitcode.com/gh_mirrors/k0/k0s点击查看免费下载相关推荐mruby-dir 深度解析为 mruby 补齐 Dir 目录操作类的 mrbgem 完整指南mruby dir 深度解析为 mruby 补齐 Dir 目录操作类的 mrbgem 完整指南 mruby dir 是托管在 h2o 仓库 deps/mrub后端网络mruby-dir 详解mruby 的 Dir 类目录操作接口与底层实现剖析mruby dir 详解mruby 的 Dir 类目录操作接口与底层实现剖析 导读 mruby dir 是 mruby 生态中提供 Dir 类的标准 mrbg可观测性日志分析云原生流处理Claude Code DirectoryAdded Hook 完全指南/add-dir 与 register_repo_root 的目录注册事件解析Claude Code DirectoryAdded Hook 完全指南/add dir 与 register_repo_root 的目录注册事件解析 Dir文档提示工程人工智能上一篇acme-billing下一篇RIOT 驱动的 Grove LED Bar 测试应用接线、编译与源码级原理解析创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表