kubernetes - 错误 {"message":"failure to get a peer from the ring-balancer"} 使用 kong ingress
问题描述
当我尝试使用公共 IP 访问时收到错误消息:
"{"message":"failure to get a peer from the ring-balancer"}"
看起来Kong无法提供上游服务。
我正在使用投票应用程序
入口.yaml
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: telehealth-ingress
namespace: kong
annotations:
kubernetes.io/ingress.class: "kong"
spec:
rules:
- http:
paths:
- backend:
serviceName: voting-service
servicePort: 80
服务.yaml
apiVersion: v1
kind: Service
metadata:
name: voting-service
labels:
name: voting-service
app: voting-app
spec:
ports:
- targetPort: 80
port: 80
selector:
name: voting-app-pod
app: voting-app
部署.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: voting-app-pod
labels:
name: voting-app-pod
app: voting-app
spec:
template:
metadata:
labels:
name: voting-app-pod
app: voting-app
spec:
containers:
- name: voting-app
image: dockersamples/examplevotingapp_vote
ports:
- containerPort: 80
replicas: 2
selector:
matchLabels:
app: voting-app
解决方案
这里可能有很多问题之一。但基本上你的入口无法到达你的后端。
如果您的后端启动并运行?
检查后端 pod 是否“正在运行”
kubectl get pods
检查后端部署是否已启动所有副本
kubectl get deploy
连接到应用程序 pod 并运行 localhost:80 请求
kubectl exec -it <pod-name> sh # curl http://localhost
连接到 ingress pod,看看你是否可以从那里访问服务
kubectl exec -it <ingress-pod-name> sh # dig voting-service (can you DNS resolve it) # telnet voting-sevice 80 # curl http://voting-service
此问题可能会揭示您无法访问后端服务的原因。你看到了什么http错误代码?
推荐阅读
- javascript - 动态更新列标题 React-Table v7
- laravel - 如何在 laravel lighthouse 和 vue apollo 中创建嵌套关系
- c++17 - 将整数参数传递给接受浮点数的可变参数模板
- c# - 如何判断 C# 项目是否正在使用 SSD 构建?
- r - 如何为 r 文本分析创建定制的贸易/法律词典
- css - CSS 关键帧动画在 Chrome 和 Firefox 中停止工作
- excel - *EXCEL* 如果一系列单元格包含 *STRING*,则从正单元格中提取十进制数的总和
- php - 如何从 HTML/PHP 页面打印 png/jpg 文件?
- c# - 通过 csproj 文件中的 PackageReference 更新 nuget 包
- r - 忽略 x-label 对齐与拼凑而成的多个图:这可能吗?