标签: kubernetes-health-check

由于活性问题或由于停止请求而重新启动容器之间的区别

我正在使用Kubernetes一个 Pod,它由不同的容器组成。

当两个特定事件发生时,我需要应用不同的行为:

  1. 容器(无论出于何种原因)出现问题并且需要重新启动。当活性探针失败时会发生这种情况
  2. 计划停止一个 Pod。例如,我正在推出一个新版本,kubernetes 终止前一个版本并启动新版本

根据我对这两种情况的理解,kubernetes 都会调用preStop钩子并发送 a SIGTERM,所以我不可能理解我处于这两种情况中的哪一种。是对的吗?我错过了什么吗?

谢谢

docker kubernetes kubernetes-health-check docker-container

5
推荐指数
0
解决办法
288
查看次数

kubeadm 连接失败,http://localhost:10248/healthz 连接被拒绝

我正在尝试在三个虚拟机上设置 kubernetes(来自 centos7 的教程),\n不幸的是工作线程的加入失败。我希望有人已经遇到过这个问题(在网上发现了两次但没有答案),或者可能猜出出了什么问题。

\n\n

这是我通过 kubeadm join 得到的结果:

\n\n
[preflight] running pre-flight checks\n        [WARNING RequiredIPVSKernelModulesAvailable]: the IPVS proxier will not be used, because the following required kernel modules are not loaded: [ip_vs ip_vs_rr ip_vs_wrr ip_vs_sh] or no builtin kernel ipvs support: map[ip_vs:{} ip_vs_rr:{} ip_vs_wrr:{} ip_vs_sh:{} nf_conntrack_ipv4:{}]\nyou can solve this problem with following methods:\n 1. Run \'modprobe -- \' to load missing kernel modules;\n2. Provide the missing builtin kernel ipvs support\n\nI0902 20:31:15.401693    2032 kernel_validator.go:81] Validating kernel version\nI0902 20:31:15.401768    2032 kernel_validator.go:96] …
Run Code Online (Sandbox Code Playgroud)

kubernetes kubernetes-health-check kubeadm

5
推荐指数
1
解决办法
2万
查看次数

如何暂停kubernetes服务

我有一个下面描述的设置 - 所以一个简单的复制控制器,服务和在谷歌云上部署kubernetes的https入口.

我需要杀死我的应用程序,以便我可以测试我的堆栈的其余部分如何反应 - 这是一个好方法吗?

我已经尝试删除该服务,但是当我重新创建它时,它不会获取后端服务(复制控制器和pod已创建,我可以在内部访问它们,但不能通过入口访问 - 服务没有看见.

echo "
apiVersion: v1
kind: Service
metadata:
  name: nodeapp-https
  labels:
    app: nodeapp-https
spec:
  type: NodePort
  ports:
  - port: 80
    targetPort: 8080
    protocol: TCP
    name: http
  selector:
    app: nodeapp-https
---
apiVersion: v1
kind: ReplicationController
metadata:
  name: nodeapp-https
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: nodeapp-https
    spec:
      containers:
      - name: nodeapp-https
        image: gcr.io/my-project/node-app:v84
        ports:
        - containerPort: 8080
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: nodeapp-httpss
spec:
  tls:
  - secretName: node-app-secret
  backend:
    serviceName: nodeapp-https …
Run Code Online (Sandbox Code Playgroud)

google-compute-engine kubernetes kubernetes-health-check kubectl

4
推荐指数
1
解决办法
5093
查看次数

如何使用K8S Node_Problem_Detector?

问题

如果是 K8S,监控节点运行状况文档中提到了节点问题检测器。如果GCE中没有,我们如何使用它?它是否向仪表板提供信息或提供 API 指标?

monitoring automation kubernetes kubernetes-health-check kubernetes-helm

4
推荐指数
1
解决办法
4688
查看次数

为什么既需要活跃又需要准备

在对kubernetes吊舱进行健康检查时,即使我们已经准备就绪探针,为什么还需要活动探针?

准备就绪探针已经在继续检查Pod中的应用程序是否准备好处理请求,这意味着Pod处于活动状态。但是,为什么还需要进行活力探测?

kubernetes kubernetes-health-check

4
推荐指数
1
解决办法
913
查看次数

grpc-health-probe(Kubernetes 上的 gRPC 健康检查)如何区分 liveness 和 readiness 探针

我正在编写一个 grpc 服务并在 Kubernetes ( https://github.com/grpc-ecosystem/grpc-health-probe )上使用 gRPC 健康检查。在我的服务器中,我添加了不同的端点实现(一个用于活动,另一个用于准备)。我想知道这个探针实用程序二进制文件如何区分活动检查与准备检查?在 yaml 中应该有一些其他的方式来定义它,而不仅仅是 ["bin/grpc_health_probe", "-addr=:8801"]

server = ServerBuilder.forPort(port)
  .addService(new GrpcModuleHealthCheck())
  .addService(new GrpcModuleReadinessCheck())
  .addService(ProtoReflectionService.newInstance())
  .build.start
Run Code Online (Sandbox Code Playgroud)

在 kubernetes 部署 yaml 中,我使用以下配置

    livenessProbe:
      failureThreshold: 3
      exec:
        command: ["bin/grpc_health_probe", "-addr=:8801"]
      initialDelaySeconds: 240
      periodSeconds: 20
      successThreshold: 1
      timeoutSeconds: 15
    readinessProbe:
      failureThreshold: 3
      exec:
        command: ["bin/grpc_health_probe", "-addr=:8801"]
      initialDelaySeconds: 20
      periodSeconds: 20
      successThreshold: 1
      timeoutSeconds: 15
Run Code Online (Sandbox Code Playgroud)

我刚刚测试并发现“GrpcModuleReadinessCheck”(我最后添加的健康类)实现在我刚刚执行我的 kubernetes pod 时生效

kubectl exec -it <MY_POD_NAME> -- /bin/bash

bash-4.4$ ./grpc_health_probe -addr=localhost:8801
status: SERVING
Run Code Online (Sandbox Code Playgroud)

kubernetes-health-check grpc-java

4
推荐指数
1
解决办法
2805
查看次数

如何在托管服务上实施 .NET Core 运行状况检查?

问题正如标题所问。对数据库操作、查询、命令和事件存储执行检查很简单,但我不知道如何/什么是对托管服务执行运行状况检查的最佳方法。有人可以建议吗?

.net-core kubernetes-health-check

4
推荐指数
2
解决办法
9273
查看次数

监控kubernetes作业

我有kubernetes作业,需要花费大量时间才能完成。在4至8分钟之间。我有什么办法可以知道什么时候完成工作,而不是假设最坏的情况下要等8分钟。我有一个执行以下操作的测试用例:

1) Submits the kubernetes job.
2) Waits for its completion.
3) Checks whether the job has had the expected affect.
Run Code Online (Sandbox Code Playgroud)

问题是,在我的Java测试中,它在kubernetes中提交了部署作业,即使该作业花费的时间少于完成该作业的时间,我仍要等待8分钟,因为我没有办法从Java监视作业的状态测试。

kubernetes kubernetes-health-check

3
推荐指数
2
解决办法
8494
查看次数

什么是 Kubernetes Client-Java API 来获取所有部署

我一直在探索Kubernetes-Client/Java 库,但我无法弄清楚获取所有部署的 API 调用。

我正在寻找此命令的 K8-Client/Java API 调用:

kubectl get deployments
NAME             DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
appservice1       3         3         3            3           5d
appservice2       3         3         3            3           1d
appservice3       1         1         1            1           22d
Run Code Online (Sandbox Code Playgroud)

更具体地说,我有兴趣确定每个部署所需的和当前 pod 的数量(如上)。

java kubernetes kubernetes-health-check

3
推荐指数
1
解决办法
5653
查看次数

使用 mTLS 进行 GKE gRPC 入口运行状况检查

我正在尝试使用双向 TLS 身份验证在 GKE (v1.11.2-gke.18) 上实现 gRPC 服务。

当不强制执行客户端身份验证时,GKE 自动创建的 HTTP2 运行状况检查会响应,并且一切都连接问题。

当我打开相互身份验证时,运行状况检查失败 - 大概是因为它无法完成连接,因为它缺少客户端证书和密钥。

与往常一样,文档很简单而且相互矛盾。我需要一个完全编程的解决方案(即没有控制台调整),但除了手动将运行状况检查更改为 TCP 之外,我一直无法找到解决方案。

从我所见,我猜我要么需要:

  • 实施自定义 mTLS 运行状况检查,以防止 GKE 自动创建 HTTP2 检查
  • 找到一种替代方法在不使用service.alpha.kubernetes.io/app-protocols: '{"grpc":"HTTP2"}'专有注释的容器上进行 SSL 终止
  • 找到某种方法为健康检查提供所需的凭据
  • 改变我的 go 实现,以某种方式在不需要 mTLS 的情况下进行健康检查,同时在所有其他端点上强制执行 mTLS

或者也许还有其他我没有考虑过的东西?下面的配置非常适用于带有 TLS 的 REST 和 gRPC,但会与 mTLS 中断。

服务.yaml

apiVersion: v1
kind: Service
metadata:
  name: grpc-srv
  labels:
    type: grpc-srv
  annotations:
    service.alpha.kubernetes.io/app-protocols: '{"grpc":"HTTP2"}'
spec:
  type: NodePort
  ports:
  - name: grpc
    port: 9999
    protocol: TCP
    targetPort: 9999
  - name: http
    port: 8080
    protocol: …
Run Code Online (Sandbox Code Playgroud)

mutual-authentication google-kubernetes-engine grpc kubernetes-health-check kubernetes-ingress

3
推荐指数
1
解决办法
1203
查看次数