Я следил за примером книжной полки GKE ruby и ссылался на примеры kubernetes. Пока у меня развернуты ресурсы, я не могу пинговать свои рельсы frontend
узел. Я реализовал простой ping
маршрут для проверки самого простого подключения.
Я уменьшился replicas
на 1, чтобы упростить ситуацию, и взял журналы с узла, чтобы убедиться, что он работает без каких-либо ошибок.
> wget http://104.154.128.169/ping
--2017-09-15 14:14:54-- http://104.154.128.169/ping
Connecting to 104.154.128.169:80... failed: Connection refused.
apiVersion: v1
kind: Service
metadata:
name: foo-frontend
labels:
app: foo
tier: frontend
spec:
type: LoadBalancer
ports:
- port: 80
selector:
app: foo
tier: frontend
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: foo-frontend
labels:
app: foo
tier: frontend
spec:
replicas: 1
template:
metadata:
labels:
app: foo
tier: frontend
spec:
containers:
- name: foo-app
image: us.gcr.io/foo/api:latest
imagePullPolicy: Always
env:
- name: FORMATION
value: web=1
- name: RAILS_ENV
value: production
- name: RACK_ENV
value: production
- name: RAILS_LOG_TO_STDOUT
value: enabled
- name: RAILS_SERVE_STATIC_FILES
value: "true"
- name: SECRET_KEY_BASE
valueFrom:
secretKeyRef:
name: production-secrets
key: SECRET_KEY_BASE
- name: DB_PASSWORD
valueFrom:
secretKeyRef:
name: production-secrets
key: DB_PASSWORD
ports:
- containerPort: 8080
фрагмент
EXPOSE 8080/tcp
CMD bundle exec foreman start --formation "$FORMATION"
web: bundle exec rackup --port 8080
worker: bundle exec rake run_worker
> kubectl get pods; kubectl get services
NAME READY STATUS RESTARTS AGE
foo-frontend-284775361-4pzk3 1/1 Running 0 9m
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
foo-frontend 10.15.246.177 104.154.128.169 80:30917/TCP 9m
kubernetes 10.15.240.1 <none> 443/TCP 22h
И
> kubectl describe service
Name: foo-frontend
Namespace: default
Labels: app=foo
tier=frontend
Annotations: <none>
Selector: app=foo,tier=frontend
Type: LoadBalancer
IP: 10.15.246.177
LoadBalancer Ingress: 104.154.128.169
Port: <unset> 80/TCP
NodePort: <unset> 30917/TCP
Endpoints: 10.12.2.13:80
Session Affinity: None
Events:
FirstSeen LastSeen Count From SubObjectPath Type Reason Message
--------- -------- ----- ---- ------------- -------- ------ -------
10m 9m 2 service-controller Normal CreatingLoadBalancer Creating load balancer
9m 9m 2 service-controller Normal CreatedLoadBalancer Created load balancer
Name: kubernetes
Namespace: default
Labels: component=apiserver
provider=kubernetes
Annotations: <none>
Selector: <none>
Type: ClusterIP
IP: 10.15.240.1
Port: https 443/TCP
Endpoints: 104.154.116.128:443
Session Affinity: ClientIP
Events: <none>
Я считаю, что основная проблема заключалась в том, что я не указал targetPort
в сервисе. Я также настраиваю статический IP-адрес с помощью gcloud compute addresses create foo-frontend-ip --region=us-central1
так или иначе, это был один из двух.
apiVersion: v1
kind: Service
metadata:
name: foo-frontend
labels:
app: foo
tier: frontend
spec:
type: LoadBalancer
# use your external IP here
loadBalancerIP: x.x.x.x
ports:
- port: 80
targetPort: 8080
protocol: TCP
selector:
app: foo
tier: frontend