鍍金池/ 問答/Linux  網(wǎng)絡(luò)安全/ k8s部署tomcat nginx等服務(wù)后 當(dāng)用戶服務(wù)服務(wù)時(shí)獲取不到用戶真實(shí)IP

k8s部署tomcat nginx等服務(wù)后 當(dāng)用戶服務(wù)服務(wù)時(shí)獲取不到用戶真實(shí)IP clientip信息

k8s部署tomcat nginx等服務(wù)后 當(dāng)用戶服務(wù)服務(wù)時(shí)獲取不到用戶真實(shí)IP clientip信息,只能獲取到虛擬網(wǎng)絡(luò)段地址。

回答
編輯回答
醉淸風(fēng)

保留客戶端源IP
由于此功能的實(shí)施,目標(biāo)容器中看到的源IP 不會(huì)是客戶端的原始源IP。要啟用客戶端IP的保留,可以在服務(wù)規(guī)范中配置以下字段(在GCE / Google Kubernetes引擎環(huán)境中支持):
● service.spec.externalTrafficPolicy - 表示該服務(wù)是否希望將外部流量路由到節(jié)點(diǎn)本地或群集范圍的端點(diǎn)。有兩個(gè)可用選項(xiàng):“群集”Cluster(默認(rèn))和“本地”Local?!叭杭毖谏w了客戶端源IP,并可能導(dǎo)致到另一個(gè)節(jié)點(diǎn)的第二跳,但應(yīng)具有良好的整體負(fù)載分散。“本地”保留客戶端源IP并避免LoadBalancer和NodePort類型服務(wù)的第二跳,但可能會(huì)導(dǎo)致流量不均衡蔓延。
● service.spec.healthCheckNodePort - 指定服務(wù)的健康檢查節(jié)點(diǎn)端口(數(shù)字端口號(hào))。如果未指定,則healthCheckNodePort由具有分配的節(jié)點(diǎn)端口的服務(wù)API后端創(chuàng)建。如果由客戶端指定,它將使用用戶指定的nodePort值。它僅在類型設(shè)置為“LoadBalancer”并且externalTrafficPolicy設(shè)置為“Local”時(shí)才起作用。
此功能可通過externalTrafficPolicy在服務(wù)配置文件中設(shè)置為“本地” 來激活。

{
  "kind": "Service",
  "apiVersion": "v1",
  "metadata": {
    "name": "example-service"
  },
  "spec": {
    "ports": [{
      "port": 8765,
      "targetPort": 9376
    }],
    "selector": {
      "app": "example"
    },
    "type": "LoadBalancer",
    "externalTrafficPolicy": "Local"
  }
}
2018年3月28日 11:39