更新部署后服务返回 301 的健康检查
Health checks for service returning 301 after updating deployment
我们最近更新了使用 Docker 和 Kubernetes 部署的 dropwizard 服务的部署。
它之前工作正常,就绪探测器正在对内部集群 IP 生成 200 秒的运行状况检查 ping。由于我们更新了健康检查 ping 导致 301 并且服务被认为已关闭。
我注意到健康检查现在是 NEG 的默认 kubernetes L7 负载平衡健康检查。(端口设置为 80)之前是 默认kubernetes L7 负载平衡健康检查。 其中端口是可配置的。
kube 文件是通过 CircleCI 部署的,但就绪探测是:
kind: Deployment
metadata:
name: pes-${CIRCLE_BRANCH}
namespace: ${GKE_NAMESPACE_NAME}
annotations:
reloader.stakater.com/auto: 'true'
spec:
replicas: 2
selector:
matchLabels:
app: ***
template:
metadata:
labels:
app: ***
spec:
containers:
- name: ***
image: ***
envFrom:
- configMapRef:
name: ***
- secretRef:
name: ***
command: ['./gradlew', 'run']
resources: {}
ports:
- name: pes
containerPort: 5000
readinessProbe:
httpGet:
path: /api/healthcheck
port: pes
initialDelaySeconds: 15
timeoutSeconds: 30
---
apiVersion: v1
kind: Service
metadata:
name: ***
namespace: ${GKE_NAMESPACE_NAME}
spec:
ports:
- name: pes
port: 5000
targetPort: pes
protocol: TCP
selector:
app: ***
type: LoadBalancer
关于这需要如何在 GCP 中配置的任何想法?
我感觉新部署已经从旧版运行状况检查更改为非旧版,但不知道还需要设置什么才能使其正常工作。 kube 文件是否处理创建防火墙规则或是否需要手动完成?
正在 https://cloud.google.com/load-balancing/docs/health-check-concepts?hl=en
阅读文档
编辑:
问题现已解决。 GKE 版本更新后,它现在默认创建 NEG 健康检查。我们通过向服务部署文件添加以下注释来禁用此功能。
元数据:
注释:
cloud.google.com/neg: '{"ingress":false}'
问题现已解决。 GKE 版本更新后,它现在默认创建 NEG 健康检查。我们通过向服务部署文件添加以下注释来禁用此功能。
metadata: annotations: cloud.google.com/neg: '{"ingress":false}'
我们最近更新了使用 Docker 和 Kubernetes 部署的 dropwizard 服务的部署。
它之前工作正常,就绪探测器正在对内部集群 IP 生成 200 秒的运行状况检查 ping。由于我们更新了健康检查 ping 导致 301 并且服务被认为已关闭。
我注意到健康检查现在是 NEG 的默认 kubernetes L7 负载平衡健康检查。(端口设置为 80)之前是 默认kubernetes L7 负载平衡健康检查。 其中端口是可配置的。
kube 文件是通过 CircleCI 部署的,但就绪探测是:
kind: Deployment
metadata:
name: pes-${CIRCLE_BRANCH}
namespace: ${GKE_NAMESPACE_NAME}
annotations:
reloader.stakater.com/auto: 'true'
spec:
replicas: 2
selector:
matchLabels:
app: ***
template:
metadata:
labels:
app: ***
spec:
containers:
- name: ***
image: ***
envFrom:
- configMapRef:
name: ***
- secretRef:
name: ***
command: ['./gradlew', 'run']
resources: {}
ports:
- name: pes
containerPort: 5000
readinessProbe:
httpGet:
path: /api/healthcheck
port: pes
initialDelaySeconds: 15
timeoutSeconds: 30
---
apiVersion: v1
kind: Service
metadata:
name: ***
namespace: ${GKE_NAMESPACE_NAME}
spec:
ports:
- name: pes
port: 5000
targetPort: pes
protocol: TCP
selector:
app: ***
type: LoadBalancer
关于这需要如何在 GCP 中配置的任何想法?
我感觉新部署已经从旧版运行状况检查更改为非旧版,但不知道还需要设置什么才能使其正常工作。 kube 文件是否处理创建防火墙规则或是否需要手动完成?
正在 https://cloud.google.com/load-balancing/docs/health-check-concepts?hl=en
阅读文档编辑: 问题现已解决。 GKE 版本更新后,它现在默认创建 NEG 健康检查。我们通过向服务部署文件添加以下注释来禁用此功能。
元数据: 注释: cloud.google.com/neg: '{"ingress":false}'
问题现已解决。 GKE 版本更新后,它现在默认创建 NEG 健康检查。我们通过向服务部署文件添加以下注释来禁用此功能。
metadata: annotations: cloud.google.com/neg: '{"ingress":false}'