我想为 Celery 工作 Pod 设置活性和就绪探针。由于这些工作单元没有与其关联的特定端口,我发现这很困难。主 Django 应用程序 nginx 服务器更容易设置。
我对 k8s 很陌生,所以对不同的方法不太熟悉。
readinessProbe:指示容器是否准备好响应请求。如果就绪探测失败,端点控制器会从与 Pod 匹配的所有服务的端点中删除 Pod 的 IP 地址。初始延迟之前的默认就绪状态为失败。如果容器不提供就绪探测,则默认状态为成功
如果就绪探测失败(并且从端点删除了 Pod 的 IP 地址),接下来会发生什么?会再次检查 Pod 的就绪探测条件吗?它会在初始延迟后再次检查吗?Pod 的 IP 地址是否有可能再次添加到端点(如果 Pod 在就绪探测失败后自我修复)?如果 Pod 被治愈,它会再次收到流量吗?
self-healing kubernetes google-kubernetes-engine kubernetes-pod readinessprobe
我正在我的计算机上本地测试Apache Spark上的Web爬行/报废程序.
该程序使用一些RDD转换,这些转换采用零星失败的易失性函数.(该函数的目的是将URL链接转换为网页,有时它调用的无头浏览器只是停电或过载 - 我无法避免这种情况)
我听说Apache Spark具有强大的故障转移和重试功能,任何不成功的转换或丢失的数据都可以从头开始从它可以找到的任何资源中重新计算(听起来像魔法吗?)所以我没有在我的任何故障转移或try-catch中码.
这是我的火花配置:
val conf = new SparkConf().setAppName("MoreLinkedIn")
conf.setMaster("local[*]")
conf.setSparkHome(System.getenv("SPARK_HOME"))
conf.setJars(SparkContext.jarOfClass(this.getClass).toList)
conf.set("spark.task.maxFailures","40") //definitely enough
Run Code Online (Sandbox Code Playgroud)
不幸的是,在大多数阶段和个别任务成功之后,工作失败了.最新的登录控制台显示:
Exception in thread "main" org.apache.spark.SparkException: Job aborted due to stage failure: Task 1.0:7 failed 1 times, most recent failure: Exception failure in TID 23 on host localhost: org.openqa.selenium.TimeoutException: Timed out after 50 seconds waiting for...
Run Code Online (Sandbox Code Playgroud)
看起来Spark只是在失败一次之后放弃了懦弱.如何正确配置以使其更加顽强?
(我的程序可以从https://github.com/tribbloid/spookystuff下载,对于稀缺和杂乱无章的代码/文档,我只是启动了几天)
ADD:如果您想自己尝试一下,以下代码可以演示此问题:
def main(args: Array[String]) {
val conf = new SparkConf().setAppName("Spark Pi")
conf.setMaster("local[*]")
conf.setSparkHome(System.getenv("SPARK_HOME"))
conf.setJars(SparkContext.jarOfClass(this.getClass).toList)
conf.set("spark.task.maxFailures","400000")
val sc = new SparkContext(conf)
val …Run Code Online (Sandbox Code Playgroud) 在kubernetes中,如果 pod 由于某种原因出现故障,准入控制器将重新启动它。
我们称这种机制为自我修复。
我从未使用过docker-compose,但我想知道:它是一样的吗?