#python #docker #kubernetes
#python #docker #kubernetes
Вопрос:
У меня есть контейнер docker с приложением, предоставляющим доступ к порту 8080. Я могу запустить его и получить к нему доступ на своем локальном компьютере:
$ docker run -p 33333:8080 foo
* Running on http://127.0.0.1:8080/ (Press CTRL C to quit)
Я могу протестировать его с:
$ nc -v locahost 33333
connection succeeded!
Однако, когда я развертываю его в Kubernetes, он не работает.
Вот файл манифеста:
apiVersion: v1
kind: Pod
metadata:
name: foo-pod
namespace: foo
labels:
name: foo-pod
spec:
containers:
- name: foo
image: bar/foo:latest
ports:
- containerPort: 8080
и
apiVersion: v1
kind: Service
metadata:
name: foo-service
namespace: foo
spec:
type: NodePort
ports:
- port: 8080
- NodePort: 33333
selector:
name: foo-pod
Развернуто с:
$ kubectl apply -f foo.yaml
$ nc -v <publicIP> 33333
Connection refused
Я не понимаю, почему я не могу получить к нему доступ…
Комментарии:
1. Я отметил, что запуск контейнера только с nc будет работать:
Ответ №1:
Проблема заключалась в том, что приложение прослушивало IP 127.0.0.1
. Он должен прослушиваться 0.0.0.0
для работы в kubernetes. Изменение в коде приложения сделало свое дело.