掌舵3 Kubernetes服务目录资源的部署顺序

掌舵3 Kubernetes服务目录资源的部署顺序,kubernetes,kubernetes-helm,Kubernetes,Kubernetes Helm,我使用的是HelmV3.3.0和Kubernetes1.16 集群已经安装了,因此实现开放式ServiceBroker API规范的外部服务可以实例化为K8S资源-如ServiceInstances和ServiceBindings ServiceBindings反映为K8SSecrets,并包含所创建的外部服务的绑定信息。这些秘密通常作为环境变量或K8S部署中的卷映射到Docker容器中 现在我正在使用头盔部署我的库伯内特斯资源,我读到 Kubernetes类型的[Helm]安装顺序由中的枚举I

我使用的是HelmV3.3.0和Kubernetes1.16

集群已经安装了,因此实现开放式ServiceBroker API规范的外部服务可以实例化为K8S资源-如
ServiceInstance
s和
ServiceBinding
s

ServiceBinding
s反映为K8S
Secret
s,并包含所创建的外部服务的绑定信息。这些秘密通常作为环境变量或K8S
部署中的卷映射到Docker容器中

现在我正在使用头盔部署我的库伯内特斯资源,我读到

Kubernetes类型的[Helm]安装顺序由中的枚举InstallOrder给出

在该文件中,订单中既没有提到
ServiceInstance
也没有提到
ServiceBinding
作为资源,这意味着Helm在安装其任何InstallOrder列表后安装这些资源类型,尤其是
Deployment
s。这似乎与我的图表上的
helm install--dry run--debug
run的输出相匹配,其中的顺序指示K8S服务目录资源是最后应用的

问题:我不明白的是,为什么我的
部署
没有安装头盔失败。
毕竟,我的
部署
资源似乎是在
服务绑定
启动之前部署的。我的
Deployment
引用的是从
ServiceBinding
生成的
Secret
。我预计它会失败,因为在安装
部署
时,
机密还不存在。但事实并非如此

这只是一个时间上的小故障/幸运的巧合,还是这是我可以信赖的,为什么


谢谢

请回答我自己的问题(感谢@dawid kruk和服务目录Sig on Slack上的人们):

  • 事实上,我的
    Pod
    的初始启动(引用由
    ServiceBinding
    创建的
    Secret
    的启动)失败了!它失败了,因为K8S试图启动吊舱时,
    Secret
    实际上不在那里
  • Kubernetes有一种自愈机制,即它尝试(并重试)达到集群的目标状态,如各种部署的资源所述
  • 通过Kubernetes尝试让吊舱运行,最终(当
    秘密
    最终存在时)所有条件都将得到满足,以使吊舱顺利启动。因此,最终,evth。正在正常运行
这是如何简化的?一种可能是Helm将自定义资源
ServiceBinding
ServiceInstance
包括在其可安装资源的有序列表中,并在安装阶段早期安装它们


但即使没有这一点,库伯内特斯实际上也处理得很好。安装顺序(在本例中)实际上并不重要。这是一件好事

请回答我自己的问题(感谢@dawid kruk和服务目录Sig on Slack上的人们):

  • 事实上,我的
    Pod
    的初始启动(引用由
    ServiceBinding
    创建的
    Secret
    的启动)失败了!它失败了,因为K8S试图启动吊舱时,
    Secret
    实际上不在那里
  • Kubernetes有一种自愈机制,即它尝试(并重试)达到集群的目标状态,如各种部署的资源所述
  • 通过Kubernetes尝试让吊舱运行,最终(当
    秘密
    最终存在时)所有条件都将得到满足,以使吊舱顺利启动。因此,最终,evth。正在正常运行
这是如何简化的?一种可能是Helm将自定义资源
ServiceBinding
ServiceInstance
包括在其可安装资源的有序列表中,并在安装阶段早期安装它们


但即使没有这一点,库伯内特斯实际上也处理得很好。安装顺序(在本例中)实际上并不重要。这是一件好事

正如我在评论中所说:


事实上,您的
部署
一开始就失败了,状态为:CreateContainerConfigError
。您的
部署
是在
Secret
之前从
ServiceBinding
创建的。只有当
ServiceBinding
中的
Secret
可用时,它才能正常工作

我想用一个例子来说明为什么
部署没有失败

发生了什么(按顺序简化):

  • Deployment
    ->创建并生成了一个
    Pod
  • Pod
    ->Pod失败,状态为:
    CreateContainerConfigError
    由于缺少
    Secret
  • ServiceBinding
    ->在后台创建的
    Secret
  • Pod
    获取所需的
    Secret
    并启动
前面提到的
InstallOrder
将保留
ServiceInstace
ServiceBinding
作为最后一条评论


例子 假设:

  • 有一个正在工作的Kubernetes集群
  • Helm3已安装并可随时使用
以下指南:

templates/
目录中有一个舵图,其中包含以下文件:

  • ServiceInstance
  • ServiceBinding
  • 部署
档案:

ServiceInstance.yaml

apiVersion:servicecatalog.k8s.io/v1beta1 种类:ServiceInstance 元数据: 名称:示例实例 规格: 集群服务
|                  Pod                      |                Secret                     |
|-------------------------------------------|-------------------------------------------|
| creationTimestamp: "2020-08-23T19:54:47Z" |                   -                       |
|                   -                       | creationTimestamp: "2020-08-23T19:54:55Z" |
| startedAt: "2020-08-23T19:55:08Z"         |                   -                       |
21:54:47:534823000   NAME                      READY   STATUS                       RESTARTS    AGE
21:54:47:542107000   ubuntu-65976bb789-l48wz   0/1     Pending                      0           0s
21:54:47:553799000   ubuntu-65976bb789-l48wz   0/1     Pending                      0           0s
21:54:47:655593000   ubuntu-65976bb789-l48wz   0/1     ContainerCreating            0           0s
-> 21:54:52:001347000    ubuntu-65976bb789-l48wz   0/1     CreateContainerConfigError   0           4s
21:55:09:205265000   ubuntu-65976bb789-l48wz   1/1     Running                      0           22s
21:54:47:385714000   NAME                            TYPE                 DATA   AGE
21:54:47:393145000   sh.helm.release.v1.example.v1   helm.sh/release.v1   1      0s
21:54:47:719864000   sh.helm.release.v1.example.v1   helm.sh/release.v1   1      0s
21:54:51:182609000   understood-squid-redis          Opaque               1      0s
21:54:52:001031000   understood-squid-redis          Opaque               1      0s
-> 21:54:55:686461000    example-binding                 Opaque               6      0s