Skip to content

Instantly share code, notes, and snippets.

@ravens
Created November 3, 2020 17:30
Show Gist options
  • Save ravens/28022443b85332dd193f8446f6216994 to your computer and use it in GitHub Desktop.
Save ravens/28022443b85332dd193f8446f6216994 to your computer and use it in GitHub Desktop.
nodePort service bug sample
apiVersion: apps/v1
kind: Deployment
metadata:
name: python-server-deployment
labels:
app: python-server
spec:
replicas: 2
selector:
matchLabels:
app: python-server
template:
metadata:
namespace: demos
labels:
app: python-server
spec:
containers:
- name: python-server
image: python:3
ports:
- containerPort: 5060
protocol: UDP
command:
- /bin/sh
- -c
- |
export PYTHONUNBUFFERED=true
cat <<EOF >> server.py
import socket
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
server_address = '0.0.0.0'
server_port = 5060
server = (server_address, server_port)
sock.bind(server)
print("Listening on " + server_address + ":" + str(server_port))
while True:
payload, client_address = sock.recvfrom(4096)
print("Echoing data back to " + str(client_address) + ": " + str(payload))
sent = sock.sendto(payload, client_address)
EOF
python server.py
---
kind: Service
apiVersion: v1
metadata:
name: python-server-service
labels:
app: python-server
spec:
type: NodePort
selector:
app: python-server
ports:
- port: 5060
name: python-server
protocol: UDP
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: python-client-deployment
labels:
app: python-client
spec:
replicas: 1
selector:
matchLabels:
app: python-client
template:
metadata:
namespace: demos
labels:
app: python-client
spec:
containers:
- name: python-client
image: python:3
ports:
- containerPort: 5060
protocol: UDP
command:
- /bin/sh
- -c
- |
export PYTHONUNBUFFERED=true
cat <<EOF >> client.py
import socket
import time
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
server_address = '0.0.0.0'
server_port = 5060
target_port = 5060
target_service = "python-server-service"
server = (server_address, server_port)
sock.bind(server)
print("Listening on " + server_address + ":" + str(server_port))
index = 0
while True:
serverip = socket.gethostbyname_ex(target_service)
message = "" + str(index)
index = index + 1
print("Sending " + message + " to " + repr(serverip))
sock.sendto(message.encode(), (target_service,target_port))
sock.settimeout(5.0)
try:
payload, client_address = sock.recvfrom(4096)
print("Server replied: " + str(payload))
except:
print("error")
time.sleep(1)
EOF
python client.py
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment