Я пытался получить доступ через внешний ip от балансировщика нагрузки. Но я не могу подключиться к своему браузеру через этот ip.
Мне отказано в соединении через порт 80. Я не знаю, неверен ли мой файл yaml или его конфигурация на моем балансировщике нагрузки
Я успешно собрал свой docker образ с помощью файла needs.txt и загрузил его в корзину из GKE, чтобы вытащить образ docker в Кубернетес.
Я развернул образ с помощью команды: kubectl create -f <filename>.yaml
со следующим файлом yaml:
# [START kubernetes_deployment]
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: example
labels:
app: example
spec:
replicas: 1
template:
metadata:
labels:
app: example
spec:
containers:
- name: faxi
image: gcr.io/<my_id_stands_here>/<bucketname>
command: ["python3", "manage.py", "runserver"]
env:
# [START cloudsql_secrets]
- name: DATABASE_USER
valueFrom:
secretKeyRef:
name: cloudsql
key: username
- name: DATABASE_PASSWORD
valueFrom:
secretKeyRef:
name: cloudsql
key: password
# [END cloudsql_secrets]
ports:
- containerPort: 8080
# [START proxy_container]
- image: b.gcr.io/cloudsql-docker/gce-proxy:1.05
name: cloudsql-proxy
command: ["/cloud_sql_proxy", "--dir=/cloudsql",
"-instances=<I put here my instance name inside>",
"-credential_file=<my_credential_file"]
volumeMounts:
- name: cloudsql-oauth-credentials
mountPath: /secrets/cloudsql
readOnly: true
- name: ssl-certs
mountPath: /etc/ssl/certs
- name: cloudsql
mountPath: /cloudsql
# [END proxy_container]
# [START volumes]
volumes:
- name: cloudsql-oauth-credentials
secret:
secretName: cloudsql-oauth-credentials
- name: ssl-certs
hostPath:
path: /etc/ssl/certs
- name: cloudsql
emptyDir:
# [END volumes]
# [END kubernetes_deployment]
---
# [START service]
apiVersion: v1
kind: Service
metadata:
name: example
labels:
app: example
spec:
type: LoadBalancer
ports:
- port: 80
targetPort: 8080
selector:
app: example
# [END service]
Работает нормально. Вывод ниже: kubectl get pods
NAME READY STATUS RESTARTS AGE
mypodname. 2/2 Running 0 21h
и kubectl get services
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
example LoadBalancer 10.xx.xxx.xxx 34.xx.xxx.xxx 80:30833/TCP 21h
kubernetes ClusterIP 10.xx.xxx.x <none> 443/TCP 23h
kubectl describe services example
дает мне следующий вывод
Name: example
Namespace: default
Labels: app=example
Annotations: <none>
Selector: app=example
Type: LoadBalancer
IP: 10.xx.xxx.xxx
LoadBalancer Ingress: 34.xx.xxx.xxx
Port: <unset> 80/TCP
TargetPort: 8080/TCP
NodePort: <unset> 30833/TCP
Endpoints: 10.xx.x.xx:8080
Session Affinity: None
External Traffic Policy: Cluster
Events: <none>
Но я не могу подключиться к своему API остальных через curl или браузер. Я пытаюсь подключиться к <external_ip>:80
и получить a connection refused on this port
Я отсканировал внешний ip с помощью Nmap , и он показывает, что порт 80 закрыт. Но я не уверен, если это причина. Мой вывод nmap:
PORT STATE SERVICE
80/tcp closed http
554/tcp open rtsp
7070/tcp open realserver
Спасибо за вашу помощь, ребята