作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 GCP 上有一个 Kubernetes 部署和一个 ClusterIP 服务来发现这个部署中的 pod。部署包含多个副本集 pod,它们根据我们的水平 pod 标量配置(基于 CPU 利用率)来来去去。
现在,当创建新的副本集 pod 时,应用程序需要一些时间才能开始服务。但是 ClusterIP 在应用程序准备好之前已经开始将请求分发到新的副本集 pod,这导致请求没有被服务。
ClusterIP 服务 yaml:
apiVersion: v1
kind: Service
metadata:
labels:
app: service-name
tier: backend
environment: "dev"
creator: internal
name: service-name
spec:
clusterIP: None
ports:
- name: https
protocol: TCP
port: 7070
targetPort: 7070
selector:
app: dep-name
tier: "backend"
environment: "dev"
creator: "ME"
type: ClusterIP
最佳答案
Kubernetes 为它提供了就绪探测。使用就绪探测,Kubernetes 不会在探测成功之前将流量发送到 Pod。更新部署时,它还将使旧副本保持运行,直到对新副本的探测成功。这意味着如果您的新 pod 以某种方式损坏,它们将永远看不到流量,您的旧 pod 将继续为部署提供所有流量。
您需要使用以下就绪探测更新部署文件:
readinessProbe:
exec:
command:
- cat
- /tmp/healthy
initialDelaySeconds: 5
periodSeconds: 5
关于Kubernetes ClusterIP 服务初始延迟或活跃度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57456027/
我是一名优秀的程序员,十分优秀!