025-09-10T12
4845.040Z INFO livekit service/server.go:242 starting LiveKit server {"portHttp": 7880, "nodeID": "ND_gh3g3zy5VFA4", "nodeIP": "51.20.184.28", "version": "1.5.2", "rtc.portTCP": 7881, "rtc.portICERange": [50000, 50100]}
2025-09-10T12
4901.745Z INFO livekit service/roomallocator.go:138 selected node for room {"room": "test-room", "roomID": "RM_bHSYtkCf9BQP", "selectedNodeID": "ND_gh3g3zy5VFA4"}
2025-09-10T12
4901.779Z INFO livekit service/roommanager.go:810 created TURN password {"username": "RJGOUZ2cyIXbRR2UfKIo4LvyWzuyID", "password": "QzxpRfjKJwWHGz7rAcyUhdlyU4drN7Gpy2Sfav2NYxO"}
2025-09-10T12
4901.800Z INFO livekit service/rtcservice.go:309 new client WS connected {"room": "test-room", "roomID": "RM_bHSYtkCf9BQP", "participant": "test-user", "pID": "PA_SdQmr2sfT8bQ", "remote": false, "connID": "CO_Rf7aNsufcyT6", "reconnect": false, "reconnectReason": "RR_UNKNOWN", "adaptiveStream": false, "selectedNodeID": "ND_gh3g3zy5VFA4"}
2025-09-10T12
4917.096Z INFO livekit.transport rtc/transport.go:656 peer connection failed {"room": "test-room", "roomID": "RM_bHSYtkCf9BQP", "participant": "test-user", "pID": "PA_SdQmr2sfT8bQ", "remote": false, "transport": "SUBSCRIBER"}
2025-09-10T12
4917.097Z INFO livekit rtc/participant_signal.go:308 closing signal connection {"room": "test-room", "roomID": "RM_bHSYtkCf9BQP", "participant": "test-user", "pID": "PA_SdQmr2sfT8bQ", "remote": false, "reason": "TRANSPORT_FAILURE", "connID": "CO_Rf7aNsufcyT6"}
2025-09-10T12
4917.098Z INFO livekit service/rtcservice.go:269 finishing WS connection {"room": "test-room", "roomID": "RM_bHSYtkCf9BQP", "participant": "test-user", "pID": "PA_SdQmr2sfT8bQ", "remote": false, "connID": "CO_Rf7aNsufcyT6", "closedByClient": true}
2025-09-10T12
4917.100Z INFO livekit rtc/participant.go:741 participant closing {"room": "test-room", "roomID": "RM_bHSYtkCf9BQP", "participant": "test-user", "pID": "PA_SdQmr2sfT8bQ", "remote": false, "sendLeave": false, "reason": "JOIN_FAILED", "isExpectedToResume": false}
2025-09-10T12
4917.100Z INFO livekit rtc/room.go:545 removing participant without connection {"room": "test-room", "roomID": "RM_bHSYtkCf9BQP", "participant": "test-user", "pID": "PA_SdQmr2sfT8bQ", "remote": false, "subscriberCandidates": ["[local] udp4 host 51.20.184.28:50009", "[local] tcp4 host 51.20.184.28:7881", "[remote] udp4 host 172.28.91.24:55182", "[remote] udp4 host 172.17.0.1:56308", "[remote] udp4 host 192.168.49.1:60789", "[remote] udp4 host 192.168.58.1:58671", "[remote] udp4 host 172.18.0.1:35573", "[remote] udp4 host 172.19.0.1:37971"], "connectionType": "unknown", "reason": "STATE_DISCONNECTED"}
2025-09-10T12
4937.040Z INFO livekit.room rtc/room.go:742 closing room {"room": "test-room", "roomID": "RM_bHSYtkCf9BQP"}
2025-09-10T12
4937.040Z INFO livekit service/roommanager.go:145 deleting room state {"room": "test-room"}
2025-09-10T12
4937.044Z INFO livekit.room service/roommanager.go:552 room closed {"room": "test-room", "roomID": "RM_bHSYtkCf9BQP"}
///////////
# namespace.yaml
apiVersion: v1
kind: Namespace
metadata:
name: livekit
labels:
name: livekit
---
# ========================
# Redis Deployment + Service
# ========================
apiVersion: apps/v1
kind: Deployment
metadata:
name: redis
namespace: livekit
spec:
replicas: 1
selector:
matchLabels:
app: redis
template:
metadata:
labels:
app: redis
spec:
containers:
- name: redis
image: redis:7-alpine
ports:
- containerPort: 6379
---
apiVersion: v1
kind: Service
metadata:
name: redis
namespace: livekit
spec:
selector:
app: redis
ports:
- protocol: TCP
port: 6379
targetPort: 6379
# ========================
# LiveKit ConfigMap
# ========================
---
apiVersion: v1
kind: ConfigMap
metadata:
name: livekit-config
namespace: livekit
data:
livekit.yaml: |
port: 7880
rtc:
tcp_port: 7881
port_range_start: 50000
port_range_end: 50100
use_external_ip: true
turn:
enabled: true
udp_port: 50000
redis:
address: redis.livekit.svc.cluster.local:6379
logging:
level: info
# ========================
# LiveKit Deployment
# ========================
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: livekit-server
namespace: livekit
labels:
app: livekit-server
spec:
replicas: 1
selector:
matchLabels:
app: livekit-server
template:
metadata:
labels:
app: livekit-server
spec:
containers:
- name: livekit-server
image: livekit/livekit-server:v1.5.2
env:
- name: LIVEKIT_CONFIG
valueFrom:
configMapKeyRef:
name: livekit-config
key: livekit.yaml
- name: LIVEKIT_KEYS
value: "devkey: my_dev_secret_key_123456789_secret_value"
- name: LIVEKIT_RTC_NAT1TO1_IPS
value: "nlb-dns"
ports:
- containerPort: 7880
name: http
- containerPort: 7881
name: rtc-tcp
- containerPort: 50000
name: turn-udp
protocol: UDP
# ========================
# LiveKit Internal Service
# ========================
---
apiVersion: v1
kind: Service
metadata:
name: livekit-server
namespace: livekit
spec:
type: ClusterIP
selector:
app: livekit-server
ports:
- name: http
port: 7880
targetPort: 7880
- name: rtc-tcp
port: 7881
targetPort: 7881
# ========================
# NLB Service for TCP
# ========================
---
apiVersion: v1
kind: Service
metadata:
name: livekit-nlb-tcp
namespace: livekit
annotations:
service.beta.kubernetes.io/aws-load-balancer-type: "nlb"
service.beta.kubernetes.io/aws-load-balancer-scheme: "internet-facing"
service.beta.kubernetes.io/aws-load-balancer-target-group-attributes: "stickiness.enabled=true,stickiness.type=source_ip"
spec:
type: LoadBalancer
externalTrafficPolicy: Local
selector:
app: livekit-server
ports:
- name: http-api
port: 7880
targetPort: 7880
protocol: TCP
- name: rtc-tcp
port: 7881
targetPort: 7881
protocol: TCP
# ========================
# NLB Service for TURN/UDP
# ========================
---
apiVersion: v1
kind: Service
metadata:
name: livekit-nlb-udp
namespace: livekit
annotations:
service.beta.kubernetes.io/aws-load-balancer-type: "nlb"
service.beta.kubernetes.io/aws-load-balancer-scheme: "internet-facing"
service.beta.kubernetes.io/aws-load-balancer-target-group-attributes: "stickiness.enabled=true,stickiness.type=source_ip"
spec:
type: LoadBalancer
externalTrafficPolicy: Local
selector:
app: livekit-server
ports:
- name: turn-udp
port: 50000
targetPort: 50000
protocol: UDP
# ========================
# NLB for UDP Media Range -
# ========================
---
apiVersion: v1
kind: Service
metadata:
name: livekit-udp-range
namespace: livekit
annotations:
service.beta.kubernetes.io/aws-load-balancer-type: "nlb"
service.beta.kubernetes.io/aws-load-balancer-scheme: "internet-facing"
spec:
type: LoadBalancer
externalTrafficPolicy: Local
selector:
app: livekit-server
ports:
- name: udp-50000
port: 50000
targetPort: 50000
protocol: UDP