[英]Kubernetes + Metallb: Nginx pod not receiving traffic with Local traffic Policy, Layer 2 mode
發生了什么:我將Nginx服務的externalTrafficPolicy更改為Local,現在我的Nginx Pod不再接收流量
您預期會發生的情況:Nginx Pod將繼續獲得流量,但源IP保持不變。 使用第2層模式
環境:
MetalLB版本:0.7.1 Kubernetes版本:最新操作系統(例如來自/ etc / os-release):centos7內核(例如uname -a):Linux K8SM1 3.10.0-862.3.2.el7.x86_64#1 SMP 5月21日23:36:36 UTC 2018 x86_64 x86_64 x86_64 GNU / Linux
我有一個Nginx Pod,它在端口80上偵聽UDP,並將UDP數據包重定向到192.168.122.206:8080。我有一個簡單的udp服務器,在192.168.122.206:8080上偵聽。 一切正常,但是我需要知道數據包的原始源IP和端口,因此我將服務的流量策略更改為本地。 現在,廣告連播似乎沒有獲得流量。 我正在運行一個單節點裸機集群。 我曾嘗試做過“ kubectl日志pod-name”,但沒有任何顯示,這使我相信pod根本沒有獲得流量。 我確保將我的UDP數據包發送到nginx服務和端口80的外部IP。
我從中構建映像的nginx.conf:
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
# Load dynamic modules. See /usr/share/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;
events {
worker_connections 1024;
}
stream {
server {
listen 80 udp;
proxy_pass 192.168.122.206:8080;
}
}
我的Nginx部署和服務
apiVersion: apps/v1beta2
kind: Deployment
metadata:
name: nginx
spec:
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: asvilla/custom_nginx2:first
ports:
- name: http
containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: nginx
spec:
externalTrafficPolicy: Local
ports:
- name: http
port: 80
protocol: UDP
targetPort: 80
selector:
app: nginx
type: LoadBalance
我已將Pod和Container日志的詳細級別設置為9。當我發送數據包時,它們沒有任何新內容。 我還將“ kubectl describe service nginx”的詳細程度設置為9,並且在發送數據包時未顯示任何新內容。 我最大的猜測是kube-proxy出了什么問題? 另外,我的主節點是我唯一的節點這一事實可能會影響某些方面,盡管在我設置它時我並未對其進行污染,並允許調度程序將其視為輔助節點。
由於您已經將Service
指向通過UDP協議路由網絡流量的事實,我想Nginx Deployment
也應該允許這樣做,添加protocol: UDP
參數:
apiVersion: apps/v1beta2
kind: Deployment
metadata:
name: nginx
spec:
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: asvilla/custom_nginx2:first
ports:
- name: http
containerPort: 80
protocol: UDP
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.