要创建/管理的目录应该是动态的,并从 helm 版本的
values.yaml
文件中读取。
我能想到的Daemonset定义如下:
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: create-directory
spec:
selector:
matchLabels:
app: create-directory
template:
metadata:
labels:
app: create-directory
spec:
# use default service-account with scc role-binding
ServiceAccountName: default
containers:
- name: create-directory
image: "{{ .Values.container.image }}"
imagePullPolicy: IfNotPresent
command: ["/bin/sh", "-c"]
args:
- |
{{- range .Values.directories }}
dir_path="/var/log/at/{{ . }}"
echo $dir_path
# Check if the directory exists
if [ -d "$dir_path" ]; then
echo "Directory $dir_path already exists."
else
# Create the directory
mkdir -p "$dir_path" && echo "Directory $dir_path created."
fi
{{- end }}
while true; do
sleep 100000;
done
# run the container as root
securityContext:
runAsUser: 0
volumeMounts:
- name: at-volume
mountPath: /var/log/at
volumes:
- name: at-volume
hostPath:
path: /var/log/at
其中舵图的
values.yaml
文件如下所示:
container:
image: registry.access.redhat.com/ubi8/toolbox:8.5
directories:
- directory1
- directory2
我需要以下方面的指导:
sleep
来保持 Pod 存活并在执行目录检查脚本后阻止其重新调度的方法是正确的还是社区推荐其他方法?values.yaml
目录列表中删除目录后,如何删除它们?更新 对于(1)我可以找到一个解决方案:“Run-once Kubernetes DaemonSet pods”