包虫病

首页 » 常识 » 诊断 » 自动批量将文件注入Pod容器里的方法
TUhjnbcbe - 2021/1/24 9:27:00
市场营销求职招聘交流微信群 http://www.rjvip.cn/xiaofei/1340.html

让我们想象一下,如果你有一个需求,想自动地将某一个特定的文件添加到所有(或一组)pod容器文件系统中,而无需在每个pod上明确使用附加volumeMount存储,考虑下该如何解决这问题?

你是否曾经注意到,当您在K8s中创建Pod时,这些容器(通常)包含位于下述目录的身份验证令牌文件?

/var/run/secrets/kubernetes.io/serviceaccount/token

您可以通过在集群中运行以下命令来进行验证:

$kubectlrunbusybox--image=busybox--restart=Never-it--rm--ls-l/var/run/secrets/kubernetes.io/serviceaccount/token#output/var/run/secrets/kubernetes.io/serviceaccount/token

旁注:在K8s1.6以上的版本看不到这种行为

为了让这个验证的事情有更多的乐趣,我们将使用一块ASCII艺术(通过这个生成工具)作为我们的“hello.txt的”文件:

我们的hello.txt文件内容

输入AdmissionWebhooks

实现上一段所述目标的一种方法是使用KubernetesAdmissionWebhooks。这个方法具体是什么?让我们看一下官方文档:

准入webhook是HTTP回调,用于接收准入请求并对其进行处理。您可以定义两种类型的准入Webhook,即验证准入Webhook和更改准入Webhook。MutatingAdmissionWebooks首先被调用,并且可以修改发送到API服务器的对象以实施自定义默认值。

从Kubernetes.io博客文章中借用的下图也可以帮助我们理解其中的概念:

AdmissionControllerPhases

因此,在本文中,我们将“hello.txt”文件添加到pod容器的方法是通过MutatingAdmissionWebhook扩展K8s,以便每次我们向API发送请求以创建Pod时,都使用PodSpec在保存到存储之前先进行了mutated。然后,当Kubelet在辅助节点上创建我们的Pod时,应该自动包含“hello.txt”文件。理解了原理接下来让我们尝试一下!

设置

在以下github存储库中包含了用于运行该项目的所有代码和命令

1
查看完整版本: 自动批量将文件注入Pod容器里的方法