Я использую AWS EKS. Я запустил свое приложение django с помощью gunicorn в кластере kubernetes.
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: api
labels:
app: api
type: web
spec:
replicas: 1
template:
metadata:
labels:
app: api
type: web
spec:
containers:
- name: vogofleet
image: xx.xx.com/api:image2
imagePullPolicy: Always
env:
- name: DATABASE_HOST
value: "test-db-2.xx.xx.xx.xx.com"
- name: DATABASE_PASSWORD
value: "xxxyyyxxx"
- name: DATABASE_USER
value: "admin"
- name: DATABASE_PORT
value: "5432"
- name: DATABASE_NAME
value: "test"
ports:
- containerPort: 9000
Я применил эти изменения и вижу, что мой модуль работает kubectl get pods
Теперь я пытаюсь открыть его через объект службы. Вот мой служебный объект,
# service
---
apiVersion: v1
kind: Service
metadata:
name: api
labels:
app: api
spec:
ports:
- port: 9000
protocol: TCP
targetPort: 9000
selector:
app: api
type: web
type: LoadBalancer
Сервис также работает. Он дал мне внешний IP-адрес для доступа к службе, который является адресом балансировщика нагрузки. Я вижу, что он запустил новый балансировщик нагрузки в консоли AWS. Но я не могу получить к нему доступ из браузера. В нем говорится, что адрес не вернул никаких данных. ELB показывает проверку работоспособности экземпляров как OutOfService.
В кластере работают и другие поды. Когда я запускаю printenv
в этих модулях, вот результат:
root@consumer-9444cf7cd-4dr5z:/consumer# printenv | grep API
API_PORT_9000_TCP_ADDR=172.20.140.213
API_SERVICE_HOST=172.20.140.213
API_PORT_9000_TCP_PORT=9000
API_PORT=tcp://172.20.140.213:9000
API_PORT_9000_TCP=tcp://172.20.140.213:9000
API_PORT_9000_TCP_PROTO=tcp
API_SERVICE_PORT=9000
И я попытался проверить подключение к своему api pod,
root@consumer-9444cf7cd-4dr5z:/consumer# telnet $API_PORT_9000_TCP_ADDR $API_PORT_9000_TCP_PORT
Trying 172.20.140.213...
telnet: Unable to connect to remote host: Connection refused
Но когда я перенаправляю порт на свой локальный хост, я могу получить к нему доступ на моем локальном хосте,
$ kubectl port-forward api-6d94dcb65d-br6px 9000
и проверьте соединение,
$ nc -vz localhost 9000
found 0 associations
found 1 connections:
1: flags=82<CONNECTED,PREFERRED>
outif lo0
src ::1 port 53299
dst ::1 port 9000
rank info not available
TCP aux info available
Connection to localhost port 9000 [tcp/cslistener] succeeded!
Почему я не могу получить к нему доступ из других контейнеров и из общедоступного Интернета? И, Группы безопасности верны.
kubectl describe service api
? - person Pampy   schedule 27.02.2019