Как предложил @Ansil, ваш nginx должен быть настроен на прослушивание порта 8080
, если вы хотите сослаться на этот порт в своем определении Service
. По умолчанию он прослушивает порт 80
.
Вы не можете заставить его слушать другой порт, например, 8080
, просто указав containerPort
в своем определении Deployment
, как в вашем примере:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.7.9
ports:
- containerPort: 8080
Вы можете легко проверить это самостоятельно подключившись к таким Pod
:
kubectl exec -ti <nginx-pod-name> -- /bin/bash
Как только вы там окажетесь, запустите:
ss -ntlp
И вы должны увидеть, на каком порту ваш nginx фактически прослушивает.
Кроме того, вы можете:
cat /etc/nginx/conf.d/default.conf
Он также сообщит вам, на каком порту ваш nginx настроен для прослушивания. Это все. Это действительно просто. Вы изменили containerPort
на 8080
, но внутри вашего контейнера на самом деле ничего не слушает такой порт.
Вы все еще можете выставить его как Service
(независимо от декларативного или обязательного характера), но это ничего не изменит в конце концов он указывает на неправильный порт в вашем контейнере, который ничего не слушает, и вы увидите сообщение, подобное этому:
curl: (7) Failed to connect to 10.1.2.3 port 30080: Connection refused