问题标签 [kubernetes-health-check]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
792 浏览

dns - 错误:容器“dnsmasq”不健康,在 kubernetes 中运行本地集群时将被杀死并重新创建

我正在使用 ./hack/local-up-cluster.sh 脚本运行 Kubernetes 本地集群。现在,当我的防火墙关闭时,kube-dns 中的所有容器都在运行:

```

```

但是当防火墙打开时,我可以看到只有 2 个容器正在运行:

```

```

经过详细调查,发现 pod 失败是因为 dnsmasq 容器没有运行:

```

```

你能帮助我如何在防火墙上运行 dnsmasq 容器,我到底需要改变什么?TIA。

原来我的 kube-dns 服务没有端点,知道为什么吗?

0 投票
1 回答
777 浏览

kubernetes - Kubernetes:只点击一次 readinessProbe

我有以下准备探测设置:

我希望这个就绪探测器只被击中一次。一次尝试就应该失败或通过我的部署基础。

我做了一些谷歌搜索,但没有太大帮助。有 kube 专家吗?请帮忙。

0 投票
1 回答
349 浏览

kubernetes - 从 Google Cloud Endpoints 中排除路径

主要问题:

我们能否从云端点统计/监控中排除路径,同时仍允许流量流向我们的实际后端?

解释:

我们有一个在 Kubernetes 上运行的后端,现在正在试用 Google Cloud Endpoints。我们将 EPS 容器添加到后端容器前面的 pod 中。正如我们在其他地方所做的那样,我们也在 Kubernetes 和前面的 Google (L7) LoadBalancer 中使用健康检查。为了让健康检查到达我们的后端,它必须在 EPS 容器使用的 openapi yaml 文件中定义,例如:

问题在于这些请求混淆了我们实际 API 的监控/跟踪/统计。云端点注册的延迟数字是无用的:它们显示 2 毫秒的第 50 个百分位,然后是 20 秒的第 95 个百分位,因为运行状况检查流量的比例很高。实际请求耗时 20 多秒显示为请求的边际部分,因为运行状况检查每秒会多次请求,每次耗时 2 毫秒。由于这些健康检查是稳定的流量,占所有请求的 90%,因此实际相关请求在边距中显示为“异常”。

因此,我们希望从端点统计信息中排除此健康流量,但保持健康检查功能。

我在文档中没有找到任何关于此的内容,也没有在其他地方的网络上找到任何解决方案。

可能的替代解决方案

我们可以在我们的 Kubernetes 设置中添加一个额外的服务,直接到达我们的后端,仅用于健康检查。这方面的问题是:

  • 额外的 k8s 服务、配置、防火墙规则……需要
  • 我们不对实际设置进行健康检查。如果 EPS 容器无法将流量引导到我们的后端,这将被忽视。
  • 我们使用 SSL 加密负载均衡器和后端之间的流量,但是我们的实际后端现在应该需要一个额外的 ssl 感知网络服务器来实现这一点。对于没有实际数据的运行状况检查,这是一个小问题,但仍然意味着规则的例外。
  • 我们也可以为 EPS 容器添加额外的健康检查。但是由于这不应该出现在统计数据中,它应该就像对未定义的路径进行请求并检查响应是否是该案例的 EPS 响应:

    这也不理想。它确实检查容器是否至少在运行,但它更像是一种“它没有关闭”而不是“它正在工作”的方法,所以很多其他问题都不会被注意到。

0 投票
2 回答
1936 浏览

kubernetes - 修改后无法启动 api 服务器

我能够成功配置 K8S 集群。但后来我想允许对 kub apiserver 的异常访问,所以我将以下参数添加到 /kube-apiserver.yaml

但是当我重新启动服务时,它无法成功启动 apiserver。所以我恢复到原始配置,但是当我启动服务时仍然出现以下错误。我得到了各种各样的错误,我认为主要原因是 kubelet 无法启动 Api 服务器。

我该如何克服这个问题,有没有办法清理所有东西并将其作为新事物开始。我认为一些元数据仍然令人难以忘怀。

编辑

来自 /var/log/pods 的完整日志

0 投票
1 回答
14947 浏览

kubernetes - 如何修复此错误“watch chan error: etcdserver: mvcc: required revision has been compacted”?

我有一个带有两个节点的 kubernetes 集群,以及两个用于 etcd 的节点,我也在为我的 kubernetes 使用身份验证。当我运行这个命令时:kubectl get cs我得到这个输出:

当我检查我的 kube-apiserver 的日志时,我收到了这个错误:

这是什么错误,我该如何解决?

我也收到了我的 kube-controller-manager 的警告:

在我的 kube-scheduler 中:

我的 Kubernetes 版本是 1.6.3

我真的很感谢你的帮助:)

0 投票
1 回答
531 浏览

kubernetes - Kubernetes Pod 的应用程序指标监控

我们已经在我们的 kubernetes 环境中使用节点导出器来拉取/收集 docker/container 指标。接下来,我们还希望能够收集应用程序指标(在我们的例子中由 spring-actuator 提供,例如http://pod-name:8080/prometheus)。这通常是如何完成的,记住我们不能将 Kubernetes 服务用作固定的 DNS 名称(它们在服务后面的 Pod 上进行负载平衡)以及 Pod 总是消失和出现的事实,改变它们的名称并因此改变它们的可寻址性?

我们最初的幼稚方法如下(但这还不够,因为它是由服务进行负载平衡的):

任何建议或示例都会非常棒。

非常感谢提前,

巴特

0 投票
4 回答
12688 浏览

kubernetes - 如何在服务于 Kubernetes Ingress 的 GCE L7 平衡器中获取自定义运行状况检查路径?

我正在尝试在 GCE 中的 Kubernetes(服务器 1.6.4)内部署一个 grafana 实例。我正在使用以下清单:

部署完整版):

服务

入口


事实证明,grafana 提供 302 开启,/但默认 GCE 入口运行状况检查预计开启 200 /来源)。如您所见,Deployment中有一个自定义的readinessProbe(第 22 行)。

一旦我将这些资源发布到 kube-apiserver 上,所有内容都将被正确创建。具体来说,Ingress获得一个公共 ip4 地址,但使用默认路径设置了 healthcheck,/而不是在readinessProbe. 因此,如果我curl使用 Ingress 的公共 ip4 地址,我会得到 502。

/login该问题可以通过在 GCE 控制台中手动更改探测路径来解决。

0 投票
1 回答
10735 浏览

deployment - 如何验证 Kubernetes 部署更新是否成功?

我有一个简单的 Kubernetes 部署。它由一个单一的、未复制的容器组成。没有暴露容器的服务。容器有一个健康检查,检查它是否正确配置并可以与其外部依赖项通信。我使用kubectl apply.

更新部署后,我想检查新版本是否已完全推出并通过了健康检查。我不知道如何配置我的部署来实现这一点。

我尝试了各种活性和就绪探针、部署策略和就绪/进展部署属性的组合。我试过检查部署的状态、它的 pod 和 rollout 命令。一切都无济于事。

我的印象是我应该查看部署条件以了解状态,但我找不到关于这些条件是什么或如何实现它们的清晰文档。

0 投票
0 回答
527 浏览

kubernetes - 节点丢失时的集群协调

我有一个包含 3 个节点的集群,我想在单个节点丢失后快速恢复。通过恢复,我的意思是我在一段合理的时间(最好是可配置的)后恢复与我的服务的通信。

以下是各种细节:

k8s版本:

我有一个分布在所有 3 个节点上的服务。在一个节点失败的情况下,我观​​察到以下行为:

  1. api 服务器故障转移到另一个节点,kubernetes 服务端点显示正确的 IP 地址(自定义故障转移)。
  2. api 服务器没有响应10.100.0.1(其集群 IP)
  3. 一段时间后,所有相关的服务端点都被清除(例如,kubectl get ep --namespace=kube-system显示没有所有端点的就绪地址)
  4. 有问题的服务在服务 IP 上不可用(由于上述原因)

ready该服务具有就绪/活跃度探测,并且在任何给定时间只有一个实例存在live。我已经检查了应该可用的实例是否也可用 - 即两者ready/ live

在丢失节点上运行的服务 Pod 收到状态之前,这将持续超过 15 分钟NodeLost,此时端点被重新填充,我可以像往常一样访问该服务。

我试过摆弄pod-eviction-timeout,node-monitor-grace-period设置无济于事 - 时间总是大致相同。

因此,我的问题:

  1. 在节点丢失的情况下,我在哪里可以详细了解关键 k8s 组件的行为?
  2. 什么是参数组合来减少集群协调所需的时间,因为这应该在测试中使用?
0 投票
1 回答
318 浏览

events - 为什么我看不到与失败的 Kubernetes 探测相关的事件?

我已经为 Kubernetes 部署中的容器定义了就绪和活跃度探测。当这些失败时,我希望看到它们的输出包含在 pod 的事件中。但是我没有看到这样的事件。我确实看到了同一个 pod 的其他事件。

我在 GKE 上运行,使用 Kubernetes v1.6.4。

应该产生事件的代码在这里:https ://github.com/kubernetes/kubernetes/blob/v1.6.4/pkg/kubelet/prober/prober.go#L94 。

相反,我看到的是指示无法检索容器的“ref”的日志。我在代码中的其他地方看到了类似的日志,它们试图记录与容器相关的事件。

这是一个错误吗?这些事件可能非常有用。特别是,这是查看失败探针输出的唯一方法,以便我可以诊断出意外失败的探针。

[我不确定这是否适合 StackOverflow。请让我知道它是否会更好地作为 Github 中的问题提出。]