2017-07-07 1 views
1

Ich verfolge einen Kurs auf PluralSight, wo der Kursautor ein Docker-Image auf kubernetes setzt und dann über seinen Browser darauf zugreift. Ich versuche zu replizieren, was er tut, aber ich kann die Website nicht erreichen. Ich glaube, ich könnte eine Verbindung mit der falschen IP herstellen.Google container connect to service

Ich habe einen ReplicationController die pods 10 läuft ist:

rc.yml

apiVersion: v1 
kind: ReplicationController 
metadata: 
      name: hello-rc 
spec: 
     replicas: 10 
     selector: 
       app: hello-world 
     template: 
      metadata: 
       labels: 
         app: hello-world 
      spec: 
        containers: 
          - name: hello-pod 
           image: nigelpoulton/pluralsight-docker-ci:latest 
           ports: 
             - containerPort: 8080 

ich den rc dann versucht zu entlarven:

kubectl expose rc hello-rc --name=hello-svc --target-port=8080 --type=NodePort 


$ kubectl get services 
NAME   CLUSTER-IP  EXTERNAL-IP PORT(S)   AGE 
hello-svc 10.27.254.160 <nodes>  8080:30488/TCP 30s 
kubernetes 10.27.240.1  <none>  443/TCP   1h 

Mein Google Container Endpunkt ist: 35.xxx.xx.xxx und wenn kubectl describe svc hello-svc ausgeführt wird, ist der NodePort 30488

So versuche ich auf die App unter 35.xxx.xx.xxx:30488 zugreifen, aber die Website ist nicht erreichbar.

Antwort

2

Wenn Sie über den NodePort-Port auf Ihren Dienst zugreifen möchten, müssen Sie Ihre Firewall für diesen Port (und diese Instanz) öffnen.

Ein besserer Weg ist es, einen Dienst vom Typ LoadBalancer (--type=LoadBalancer) zu erstellen und auf die IP zugreifen, die Google Ihnen geben wird.

Vergessen Sie nicht, den Load Balancer zu löschen, wenn Sie fertig sind.

+0

Upvote von mir, aber um durch den Pluralsight-Kurs zu kommen, war es einfacher für mich, ein Loch in der Firewall zu knacken. In der realen Welt bin ich mir sicher, dass ein LoadBalancer der richtige Weg ist. – quickshiftin