2017-02-09 2 views
1

Ich habe eine YAML-Datei mit drei Bildern in einem Pod erstellt (sie müssen miteinander über 127.0.0.1 kommunizieren). Es scheint alles zu funktionieren. Ich habe in der YAML-Datei einen Knotenpunkt definiert.Kubernetes nodeport funktioniert nicht

Es gibt einen Entfaltungs definiert applications Es enthält drei Bilder:

  • Kontakte-db (A MySQL Datenbank)
  • Front-End (einen Winkel Website)
  • net-Kern (Eine API)

Ich habe drei Dienste definiert, einen für jeden Container. Dort habe ich den Typ NodePort definiert, um darauf zuzugreifen.

So abgerufen ich die Dienste die Portnummern zu erhalten:

NAME   CLUSTER-IP  EXTERNAL-IP PORT(S)   AGE 
contacts-db 10.103.67.74  <nodes>  3306:30241/TCP 1d 
front-end  10.107.226.176 <nodes>  80:32195/TCP  1d 
net-core  10.108.146.87 <nodes>  5000:30245/TCP 1d 

Und ich navigieren in meinem Browser zu http: //: 32195, und es hält nur Laden. Es verbindet sich nicht. Dies ist die vollständige Yaml-Datei:

--- 
apiVersion: v1 
kind: Namespace 
metadata: 
    name: three-tier 
--- 
apiVersion: extensions/v1beta1 
kind: Deployment 
metadata: 
    name: applications 
    labels: 
    name: applications 
    namespace: three-tier 
spec: 
    replicas: 1 
    template: 
    metadata: 
     labels: 
     name: applications 
    spec: 
     containers: 
     - name: contacts-db 
     image: mysql/mysql-server #TBD 
     env: 
      - name: MYSQL_ROOT_PASSWORD 
      value: quintor 
      - name: MYSQL_DATABASE 
      value: quintor #TBD 
     ports: 
     - name: mysql 
      containerPort: 3306 
     - name: front-end 
     image: xanvier/angularfrontend #TBD 
     resources: 
      requests: 
      cpu: 100m 
      memory: 100Mi 
     ports: 
     - containerPort: 80 
     - name: net-core 
     image: xanvier/contactsapi #TBD 
     resources: 
      requests: 
      cpu: 100m 
      memory: 100Mi 
     ports: 
     - containerPort: 5000 
--- 
apiVersion: v1 
kind: Service 
metadata: 
    name: contacts-db 
    labels: 
    name: contacts-db 
    namespace: three-tier 
spec: 
    type: NodePort 
    ports: 
    # the port that this service should serve on 
    - port: 3306 
    targetPort: 3306 
    selector: 
    name: contacts-db 
--- 
apiVersion: v1 
kind: Service 
metadata: 
    name: front-end 
    labels: 
    name: front-end 
    namespace: three-tier 
spec: 
    type: NodePort 
    ports: 
    - port: 80 
    targetPort: 80 #nodePort: 30001 
    selector: 
    name: front-end 
--- 
apiVersion: v1 
kind: Service 
metadata: 
    name: net-core 
    labels: 
    name: net-core 
    namespace: three-tier 
spec: 
    type: NodePort 
    ports: 
    - port: 5000 
    targetPort: 5000 #nodePort: 30001 
    selector: 
    name: net-core 
--- 

Antwort

3

Die Auswahl eines Dienstes entspricht den Bezeichnungen Ihres Pods. In Ihrem Fall zeigen die definierten Selektoren auf die Container, was bei der Auswahl der Pods zu nichts führt.

Sie müssten Ihre Dienste neu definieren, um einen Selektor zu verwenden oder Ihre Container auf verschiedene Bereitstellungen/Pods aufzuteilen.

Um zu sehen, ob ein Wähler für einen definierten Leistungen funktionieren würde, können Sie sie mit überprüfen können: zu

kubectl get pods -l key=value 

Wenn das Ergebnis leer ist, wird Ihre Dienste ins Leere laufen.

+1

Sie können auch sehen, welche Dienste tatsächlich von Endpunkten (Pods) mit 'kubectl get endpoints' unterstützt werden –

Verwandte Themen