使用Finalizers来控制资源卸载顺序

引言 在现代云原生生态系统中,Kubernetes 和 Helm 被广泛用于资源部署和管理。Helm,作为 Kubernetes 的包管理工具,简化了应用的部署和管理。然而,在使用 Operator 部署非 Helm 管理的 Kubernetes 资源时,如 DaemonSet,我们面临一个独特的挑战:如何在卸载时正确处理这些资源。 问题深入 通常,Helm Chart 定义了资源的卸载顺序。但当涉及到 Operator 直接管理的资源时,例如 DaemonSet,这些资源并不在 Helm Chart 的控制之下。因此,在执行 Helm 卸载操作时,可能会导致相关 RBAC 资源先于 DaemonSet 的 Pods 被删除,进而导致 Pods 中的 pre-stop 钩子执行失败,留下未清理的资源。 解决方案介绍 为了应对这一挑战,我们可以利用 Kubernetes 的 finalizers 和 Helm 的 pre-delete 钩子。Finalizers 允许在删除 Kubernetes 对象之前执行清理逻辑,而 pre-delete 钩子则允许我们在 Helm 删除资源之前进行干预。 实现细节 Finalizers 的应用:我们在 Custom Resource (CR) 中添加 finalizers 字段,这确保在完全删除资源之前,可以执行必要的清理步骤。 Pre-delete 钩子的使用:通过添加一个 Job 作为 pre-delete 钩子,该 Job 触发 kubectl delete clusteroperator 命令,在 Helm 卸载流程中先行执行。...

2024-01-04 134 words 1 min

K8s多容器pod的数据共享

最近刚好遇到多容器单Pod的数据共享需求. 随着需求做完,想着写点文章分享下. 本文只分享两个场景,共享空目录,共享非空目录 背景知识 Pod Pod 是可以在 Kubernetes 中创建和管理的、最小的可部署的计算单元 可以在单个Pod中创建多个Container,他们之间共享上下文 Pod 的共享上下文包括一组 Linux 名字空间、控制组(cgroup)和可能一些其他的隔离方面, 即用来隔离容器的技术。 在 Pod 的上下文中,每个独立的应用可能会进一步实施隔离。 Pod 类似于共享名字空间并共享文件系统卷的一组容器。 Volume Kubernetes 卷(Volume) 这一抽象概念用于解决Container文件存储和跨Container数据共享问题 共享空目录 这个场景比较常见,也比较好处理. 通常使用volumes中的emptyDir来处理 https://kubernetes.io/zh-cn/docs/concepts/storage/volumes/#emptydir apiVersion: v1 kind: Pod metadata: name: test-pd spec: containers: - image: registry.k8s.io/test-webserver name: test-container volumeMounts: - mountPath: /cache name: cache-volume - image: registry.k8s.io/test-webserver name: test-container1 volumeMounts: - mountPath: /cache name: cache-volume volumes: - name: cache-volume emptyDir: {} test-conainer和test-conainer1的/cache目录就进行保持共享,当然你要记住,之前存在于/cache的内容将会无法看到 共享非空目录 k8s本身的设计,不允许直接挂载非空目录, 所以我们这里使用initContainer进行操作 apiVersion: apps/v1 kind: Pod spec: initContainers: - image: name: command: [ "/bin/sh", "-c", "mkdir /tmp/dir; cp -r /target/folder /tmp/dir", ] volumeMounts: - name: sharing mountPath: /tmp/dir containers: - image: name: volumeMounts: - name: sharing mountPath: /usr/local/sharing volumes: - name: sharing emptyDir: {} 在PodInitialization的过程中,首先会启动initContainer....

2023-09-13 113 words 1 min