- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
Helm Hooks post-install 和 Kubernetes initcontainers 之间有什么区别?我的理解是,Hooks 用于在 Pod 生命周期的不同阶段定义一些操作,在这种情况下 - 安装后,另一方面,initcontainers 允许在将容器部署到 Pod 之前初始化容器。
据我所知,post-install
和 initcontainer 允许做同样的事情,即初始化数据库。
这样对吗?哪种方法更好?
最佳答案
对于数据库设置,我更喜欢 Helm Hook ,但即便如此也有一些微妙之处。
假设您的服务作为一个 Deployment 运行,具有 replicas: 3
以实现一点冗余。这些副本中的每一个都将运行一个 init 容器,如果它在 pod 规范中指定,则无需任何同步。如果其中一个 pod 崩溃,或者它的节点发生故障,它的替代者将再次运行 init 容器。对于您正在谈论的那种设置任务,您不想经常重复它。
这里的根本区别在于 Helm Hook 是一个单独的 Kubernetes 对象,通常是一个作业。您可以安排此作业在每次 helm 升级
时只运行一次,而在其他任何时候都不运行,这使其成为运行迁移等操作的合理位置。
这里有一个重要的微妙之处,即您可以同时运行一项服务的多个版本。使用前面的 replicas: 3
部署,然后 helm upgrade --set tag=something-newer
。 Deployment controller 将首先使用新镜像启动一个新的 pod,只有当它启动并运行后,它才会拆除旧的 pod,现在您将两个版本结合在一起。如果您 helm rollback
到旧版本,也会发生类似的事情。这意味着您需要对没有正确架构的数据库有一定的容忍度。
如果该作业更像是预加载一些初始数据的“种子”作业,则这更易于管理:在安装后 Hook 中执行,您希望它只运行一次。您无需在每次升级(作为升级后 Hook )或每次 pod 启动(作为初始化容器)时重复它。
关于kubernetes - Initcontainer 与 Helm Hook 安装后,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63030663/
有没有办法根据全局 values.yaml 有条件地安装 helm 子图?我将所有内部服务和组件都作为子图表,其中之一是消息队列图表。在我的开发和测试环境(本地 k8s)中,我使用 RabbitMQ,
我是 Helm 新手。 我在父图表中有一个默认值。我想默认在每个子图中使用这个值,但也有可能覆盖特定子图的值。 例子: # Parent-chart values.yaml global: sch
我正在使用 Helm chart 来部署大约 15 个微服务。有一个带有 requirements.yaml 的父 Helm chart 其中所有必需的微服务都列为依赖项。 sample requir
我正在为我的应用程序创建一个 Helm chart 。在模板目录中,我有一个包含这个的 config-map.yaml {{- with Values.xyz }} xyz.abc-def: {{ .
我已将图表发布到Chartmuseum。是的,我已经运行了“helm repo更新”。 $ helm search chartmuseum/ NAME C
我正在尝试找到一种方法来删除 Helm 中所有已部署的版本。 看来 Helm does not support删除所有版本,使用 --all否则。 是否有另一种方法可以在一个命令中删除所有 Helm
我想知道helm template --debug之间哪个最好 和 helm install --dry-run --debug 谢谢 最佳答案 两个命令的区别在于helm install --dry
我已经使用 helm 在我的 GKE 集群上部署了 jupyterhub。但是,当我运行 helm list --all(或 helm list --failed 等)时,我看不到任何输出。 我可以确
我正在尝试使用 OCI 注册表 (ACR) 来存储我的 helm 图表。我找到了推送和拉取图表的方法,但我无法以 OCI native 方式登录注册表。 目前我可以通过以下方式登录: az acr l
我正在使用 helm 图表(带有子图表)来部署我的应用程序。我正在使用值文件来设置值。 我正在寻找一种在我的值文件(或任何其他地方)中设置对我的值文件有效的变量的方法。 我的值文件中有一些部分(服务)
我有一个包含以下键/值对的值文件: domains: - name: "one.dev.beta.com" - name: "two.dev.beta.com" - name: "thre
我正在尝试在我的 helm 模板中提供一个条件,以使用 regexMatch 函数检查有效(或相当无效)的主机名。 这是我正在使用的代码行: {{- if regexMatch "(?:[0-9]{1
我有一个带有可选组件的 Helm chart 。似乎支持可选组件的首选方法是将它们分成单独的图表并用标签切换它们。 我试过了,但我的可选组件需要知道图表其余部分的变量(特定服务的地址)。这会导致事情破
我目前正在为多容器应用程序编写 Helm 图表。我们有一堆微服务容器(我们称它们为“应用程序”),它们在通过 K8s 处理的方式上非常相似,并且可以(因此应该)由相同的 Helm 模板处理以避免重复。
我正在安装 prometheus-redis-exporter Helm chart .其Deployment对象有一种注入(inject)注解的方法: # deployment.yaml ...
我无法摆脱这种状态:PENDING_INSTALL .这导致 terraform 无法部署。有没有办法不删除? # helm status core-api LAST DEPLOYED: Mon Ju
我正在寻找一种解决方案,将我的 values.yaml 中的列表转换为逗号分隔的列表。 值.yaml app: logfiletoexclude: - "/var/log/containe
我有一个 k8s 资源的通用模板,我想将其扩展 n 次(如果您好奇,这样我就可以创建 mongo 集群的 n 个成员,并且他们使用 statefulset 资源,以便每个成员都有一个稳定的网络姓名)。
我正在为 Web 服务开发一组 Helm 模板,该模板将整数 ID 作为其配置的一部分。该 Id 成为服务端点的一部分,编码为网络安全的 base64 字符集: 0=A 1=B 2=C ... 26=
我正在尝试将字典从一个 helm 模板传递到另一个 helm 模板,但它在被调用模板中解析为 null。 调用模板 - deployment.yaml 调用模板 - storageNodeAffini
我是一名优秀的程序员,十分优秀!