有一个 100 个节点的 kubernetes 集群,我必须手动清理特定的图像,我知道 kubelet 垃圾收集可能会有所帮助,但它不适用于我的案例。上网浏览后,我找到了一个解决方案——docker in docker,来解决我的问题。
我只想删除每个节点中的图像一次,有没有办法在每个节点中运行一次作业?
我检查了 kubernetes 标签和 podaffinity,但仍然没有任何想法,任何机构都可以提供帮助吗?
另外,我尝试使用 daemonset 来解决问题,但事实证明它只能删除部分节点而不是所有节点的图像,我不知道可能是什么问题......
这是守护程序集示例:
kind: DaemonSet
apiVersion: apps/v1
metadata:
name: test-ds
labels:
k8s-app: test
spec:
selector:
matchLabels:
k8s-app: test
template:
metadata:
labels:
k8s-app: test
spec:
containers:
- name: test
env:
- name: DELETE_IMAGE_NAME
value: "nginx"
image: busybox
command: ['sh', '-c', 'curl --unix-socket /var/run/docker.sock -X DELETE http://localhost/v1.39/images/$(DELETE_IMAGE_NAME)']
securityContext:
privileged: true
volumeMounts:
- mountPath: /var/run/docker.sock
name: docker-sock-volume
ports:
- containerPort: 80
volumes:
- name: docker-sock-volume
hostPath:
# location on host
path: /var/run/docker.sock