调和相关对象k8s控制器运行时

时间:2020-04-04 18:31:04

标签: kubernetes

我正在尝试实现一个k8s控制器,该控制器应监视两个自定义资源,然后通过创建部署,服务等来协调它们。问题是应首先创建自定义资源A和自定义资源B(当然, (不知道顺序),然​​后我应该执行对帐。在协调功能内部,我可以一次访问其中之一。在进行协调之前,确保两者均已创建的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

正如我在评论中提到的,您可以尝试使用其中任何一个

Container probes

探针是由容器上的kubelet定期执行的诊断。为了执行诊断,kubelet调用由Container实现的Handler。处理程序分为三种:

ExecAction :在容器内执行指定的命令。如果命令以状态代码0退出,则认为诊断成功。

TCPSocketAction :根据指定端口上容器的IP地址执行TCP检查。如果端口打开,则认为诊断成功。

HTTPGetAction :针对指定端口和路径上容器的IP地址执行HTTP Get请求。如果响应的状态码大于或等于200且小于400,则认为诊断成功。


每个探针具有以下三个结果之一:

成功:容器通过了诊断。 失败:容器无法通过诊断。 未知:诊断失败,因此不应采取任何措施。


kubelet 可以选择对正在运行的Container进行三种探测并对其做出反应:

livenessProbe :指示容器是否正在运行。如果活动性探针失败,则kubelet将杀死Container,并且Container将接受其重新启动策略。如果“容器”不提供活动性探针,则默认状态为“成功”。

readinessProbe :指示容器是否准备好处理请求。如果就绪探针失败,则端点控制器将从与Pod匹配的所有服务的端点中删除Pod的IP地址。初始延迟之前的默认就绪状态为“失败”。如果“容器”未提供“准备就绪”探针,则默认状态为“成功”。

startupProbe :指示是否启动容器中的应用程序。如果提供了启动探针,则将禁用所有其他探针,直到成功。如果启动探针失败,则kubelet将杀死Container,并且Container将接受其重新启动策略。如果容器未提供启动探针,则默认状态为“成功”。

其他链接:

Helm

Helm是用于管理图表的工具。图表是预先配置的Kubernetes资源包。

使用头盔

  • 查找并使用打包为Helm Charts的流行软件在​​Kubernetes中运行
  • 将自己的应用程序共享为Helm Charts
  • 创建Kubernetes应用程序的可复制构建
  • 智能管理您的Kubernetes清单文件
  • 管理Helm软件包的发行版

根据您的情况,您可以使用helm hooks,因此它可能要等到这些资源被创建后再执行创建部署,服务等操作。

其他链接: