В Kubernetes каждый раз, когда я пытался отправить запрос в модули Kubernetes, он показывает мне IP-адрес Kube-proxy вместо реального IP.
Команда root@192.168.9.11: / home # curl -v http://192.168.9.10: 8006 / ping
Показывает IP-адрес Kube-прокси, а не РЕАЛЬНЫЙ IP-адрес клиента, с которого я отправляю запрос.
Ниже приведен мой python скрипт
''' Simple socket server using threads
'''
import socket
import sys
HOST = '' # Symbolic name, meaning all available interfaces
PORT = 8006 # Arbitrary non-privileged port
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
print 'Socket created'
#Bind socket to local host and port
try:
s.bind((HOST, PORT))
except socket.error as msg:
print 'Bind failed. Error Code : ' + str(msg[0]) + ' Message ' + msg[1]
sys.exit()
print 'Socket bind complete'
#Start listening on socket
s.listen(10)
print 'Socket now listening'
#now keep talking with the client
while 1:
#wait to accept a connection - blocking call
conn, addr = s.accept()
print 'Connected with ' + addr[0] + ':' + str(addr[1])
s.close()
Служебный файл
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/external-traffic: OnlyLocal
labels:
app: test
name: test
spec:
externalIPs:
- 192.168.9.10
ports:
- name: "8006"
port: 8006
protocol: TCP
targetPort: 8006
type: NodePort
externalTrafficPolicy: Local
selector:
name: test
Развертывание - это простой контейнер ubuntu
вывод при подключении к порту 8006 с другой машины curl -i http://192.168.9.10:8006/ping
Полученный запрос показывает IP-адрес k8s вместо реального источника IP (192.168.9.11)
bash-4.4# python /tmp/1.py
Socket created
Socket bind complete
Socket now listening
Connected with 10.244.1.1:32884