我目前正在构建一个分布式共识系统,因此准确知道Kubernetes pod何时可以服务流量(接受http请求)非常重要。除了设置计时器以不断向自身发出请求外,关于如何做到这一点的任何想法?
答案 0 :(得分:3)
您可以使用就绪探针和kubernetes service。来自文档here
readinessProbe :指示容器是否已准备好服务 要求。如果就绪探针失败,则端点控制器 从以下所有服务的端点中删除Pod的IP地址 搭配豆荚。初始延迟之前的默认准备状态 是失败。如果容器未提供就绪探测器,则 默认状态为成功
根据指南here
apiVersion: v1
kind: Pod
metadata:
name: goproxy
labels:
app: goproxy
spec:
containers:
- name: goproxy
image: k8s.gcr.io/goproxy:0.1
ports:
- containerPort: 8080
readinessProbe:
httpGet:
path: /readiness
port: 8888
initialDelaySeconds: 300
periodSeconds: 30
您的应用程序需要具有HTTP端点/readiness
,该端点应返回200 OK
响应。Kubelet将探测您在准备情况探针中定义的端点。一旦kubelet从端点返回了200 OK
响应,那么pod将被标记为准备好接受流量,并且Kubernetes服务将开始将流量发送到后端pod。
最后通过Kubernetes服务公开pod。