Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kubernetes 总括图中的舵副舵执行顺序_Kubernetes_Kubernetes Helm - Fatal编程技术网

Kubernetes 总括图中的舵副舵执行顺序

Kubernetes 总括图中的舵副舵执行顺序,kubernetes,kubernetes-helm,Kubernetes,Kubernetes Helm,我有一个包含多个子图的伞形图,我只是想确保subchart1在subchart2之前运行,等等。我们如何定义subchart执行的顺序 似乎钩重只适用于声明钩重的图表。您不能下订单,我认为您不需要它。您可以依靠运行状况检查,因此如果一个图表依赖于另一个图表,它可能会失败并重新启动,直到运行状况检查通过。以下是与图表执行顺序相关的一部分: 上面的部分解释了如何指定图表依赖项,但是 这是否影响使用helm install和helm安装图表 升级 假设一个名为“a”的图表创建了以下Kubernetes

我有一个包含多个子图的伞形图,我只是想确保subchart1在subchart2之前运行,等等。我们如何定义subchart执行的顺序


似乎钩重只适用于声明钩重的图表。

您不能下订单,我认为您不需要它。您可以依靠运行状况检查,因此如果一个图表依赖于另一个图表,它可能会失败并重新启动,直到运行状况检查通过。

以下是与图表执行顺序相关的一部分:

上面的部分解释了如何指定图表依赖项,但是 这是否影响使用helm install和helm安装图表 升级

假设一个名为“a”的图表创建了以下Kubernetes 物体

名称空间“A-名称空间”
statefulset“A-statefulset”
服务“A服务”

此外,A依赖于创建 物体

名称空间“B-名称空间”
replicaset“B-replicaset”
服务“B服务”

安装/升级海图A后,需要释放单舵 创建/修改。该版本将创建/更新以上所有内容 Kubernetes对象的顺序如下:

A-名称空间
B-名称空间
A-StatefulSet
B-复制集
A-服务
B服务

这是因为当Helm安装/升级图表时 图表中的对象及其所有依赖项聚合为一个集合;然后按类型和名称排序; 然后按该顺序创建/更新
因此,将创建一个包含图表及其依赖项的所有对象的单一版本

Kubernetes类型的安装顺序由枚举给出 InstallOrder in kind\u sorter.go()

kind_sorter.go()的一部分与安装图表相关:

var InstallOrder KindSortOrder = []string{
    "Namespace",
    "NetworkPolicy",
    "ResourceQuota",
    "LimitRange",
    "PodSecurityPolicy",
    "PodDisruptionBudget",
    "Secret",
    "ConfigMap",
    "StorageClass",
    "PersistentVolume",
    "PersistentVolumeClaim",
    "ServiceAccount",
    "CustomResourceDefinition",
    "ClusterRole",
    "ClusterRoleList",
    "ClusterRoleBinding",
    "ClusterRoleBindingList",
    "Role",
    "RoleList",
    "RoleBinding",
    "RoleBindingList",
    "Service",
    "DaemonSet",
    "Pod",
    "ReplicationController",
    "ReplicaSet",
    "Deployment",
    "HorizontalPodAutoscaler",
    "StatefulSet",
    "Job",
    "CronJob",
    "Ingress",
    "APIService",
}
有一种变通方法,可以更改默认行为,elementalvoid在以下方面共享:

我已经将我的服务、机密和配置映射设置为预安装 钩子来实现此行为

例如:

apiVersion: v1
kind: Service
metadata:
  name: foo
  annotations:
    "helm.sh/hook": "pre-install"
--

可以为挂钩定义一个重量,这将有助于建立一个平衡 确定性执行顺序。使用以下公式定义权重: 注释:

  annotations:
    "helm.sh/hook-weight": "5"
吊钩重量可以是正数或负数,但必须是负数 表示为字符串。当Tiller开始执行 特定种类的钩子它将按升序对这些钩子进行排序 秩序


关于钩子的更多详细信息可以在这里(,)和源文件(,)中找到。

当您无法下订单时,您可以使用Init Containers来验证您的POD是否在实际运行之前拥有所有需要运行的内容:

如果我添加一个钩子权重configMap:2和Secret:3,那么我认为它将改变资源类型的执行顺序。但事实并非如此,赫尔姆仍然执行秘密命令——配置地图。如果我有多个具有钩子权重的ConfigMap,那么钩子权重实际上会应用并排序多个ConfigMap的顺序,这是真的吗?您不能更改具有钩子权重的类型的顺序。开发人员可能会在将来更改,或者添加一些额外的参数来实现这一点,但现在您只能更改同一类型的多个图表的顺序,如ConfigMaps。答案第一行中的文档链接现在似乎已断开。我发现这个链接()有相同的信息。谢谢!我已经修好了链接。