簡體   English   中英

Kubernetes + Metallb:Nginx容器未通過本地流量策略(第2層模式)接收流量

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM