kubernetes-ingress - 没有 pod 的 WorkerNode 上的 502 Bad Gateway
问题描述
我正在尝试了解 K8S 集群上的 Nginx-Ingress。
我根据此处的说明设置了 nginx-ingress 控制器
我的集群有 3 个节点 kubernetes-master、kubernetes-node1、kubernetes-node2
我有一个运行 1 个副本(kubernetes-node1)的 IoTPoD。我创建了一个集群 IP 服务,用于通过 rest 访问这个 pod。下面是清单。
apiVersion: v1
kind: Namespace
metadata:
name: myiotgarden
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: ioteventshandler
namespace: myiotgarden
labels:
app: ioteventshandler
spec:
replicas: 2
selector:
matchLabels:
app: ioteventshandler
template:
metadata:
labels:
app: ioteventshandler
spec:
containers:
- name: ioteventshandler
image: 192.168.56.105:5000/ioteventshandler:latest
resources:
limits:
memory: "1024M"
requests:
memory: "128M"
imagePullPolicy: "Always"
---
apiVersion: v1
kind: Service
metadata:
name: iotevents-service
namespace: myiotgarden
labels:
app: iotevents-service
spec:
selector:
app: ioteventshandler
ports:
- port: 8080
protocol: TCP
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: ioteventshandler-ingress
annotations:
ingress.kubernetes.io/rewrite-target: /
namespace: myiotgarden
spec:
rules:
- host: kubernetes-master
http:
paths:
- path: /iotEvents/sonoff
backend:
serviceName: iotevents-service
servicePort: 8080
- host: kubernetes-node1
http:
paths:
- path: /iotEvents/sonoff
backend:
serviceName: iotevents-service
servicePort: 8080
- host: kubernetes-node2
http:
paths:
- path: /iotEvents/sonoff
backend:
serviceName: iotevents-service
servicePort: 8080
我在 Kmaster 节点上运行了一个 haproxy。已将 knode1 和 knode2 配置为工作节点。
frontend http_front
bind *:80
stats uri /haproxy?stats
default_backend http_back
backend http_back
balance roundrobin
server worker 192.168.56.207:80
server worker 192.168.56.208:80
当有 2 个 ioteventshandler 副本运行时,以下命令可以正常工作。
curl -kL http://kubernetes-master/iotEvents/sonoff/sonoff11
我得到了完美的回应。
但是,当我将副本减少到 1 时,curl 命令会间歇性地返回 502 Bad Gateway。我假设当 haproxy 将请求转发到 ioteventshandler 的副本未运行的 knode2 时会发生这种情况。
问题:有没有办法让 knode2 上的入口控制器将其转发到 knode1?我们该怎么做呢?
谢谢你。
解决方案
推荐阅读
- c# - 根据Condition读取多个节点
- reactjs - React Native功能未触发
- java - 垃圾收集线程不断使用 100% cpu 的可能原因
- ios - PushKit 后台通知在初始视图控制器上触发 viewDidAppear
- react-native - ReactNative:如何将删除图像下载/保存到照片库?
- java - 如何在spring boot中从系统属性中获取值
- .htaccess - 如何仅将主页重定向到 https 而没有 www?
- php - AJAX删除方法在LARAVEL中添加两个路由参数
- angular - 有没有办法进行 Forkjoin 迭代?
- sed - 使用 cat 和 sed 打印提取范围的原始行号