systemd.path

最近看到一个使用 terraform 部署的 k8s 发行版 poseidon/typhon

一开始看 terraform 脚本的时候,虽然看到了 kubelet.service 的配置,但是没找到在什么时候启动的服务。后来才注意到 Ignition 定义里面被忽略掉的 kubelet.path

整体的流程大概就是:

  1. 利用 poseidon/terraform-render-bootstrap 来初始化相关的 TLS 证书和 YAML 配置文件
  2. 将配置文件拷贝到各节点 /etc/kubernetes 下
  3. systemd.path 监控到路径的变化,然后 bootstrap 集群

systemd.path 是利用了 inotify 机制,监控文件或者路径的变化后启动对应的服务。更多内容可以参考 man page

需要注意的是,systemd.path 可能会丢失事件,参考:

Some rights reserved
Except where otherwise noted, content on this page is licensed under a Creative Commons Attribution-NonCommercial 4.0 International license.