2017-11-15 4 views
0

Der Versuch, eine lokale Registrierung auszuführen. Ich habe die folgende Konfiguration:Minikube kann Service nicht mit yaml bereitstellen

Bereitstellung:

apiVersion: apps/v1beta2 
kind: Deployment 
metadata: 
    name: registry 
    labels: 
    app: registry 
    role: registry 
spec: 
    replicas: 1 
    selector: 
    matchLabels: 
     app: registry 
    template: 
    metadata: 
     labels: 
     app: registry 
    spec: 
     containers: 
     - name: registry 
     image: registry:latest 
     ports: 
     - containerPort: 5000 
     volumeMounts: 
      - mountPath: '/registry' 
      name: registry-volume 
     volumes: 
     - name: registry-volume 
     hostPath: 
      path: '/data' 
      type: Directory 

Service:

apiVersion: v1 
kind: Service 
metadata: 
    name: registry 
    namespace: default 
    labels: 
    app: registry 
spec: 
    selector: 
    role: registry 
    type: NodePort 
    ports: 
    - name: registry 
     nodePort: 31001 
     port: 5000 
     protocol: TCP 

Alles gut funktioniert, wenn ich deployment/Service erstellen. kubectl zeigt den Status als Running für Service und Einsatz:

NAME    DESIRED CURRENT UP-TO-DATE AVAILABLE AGE 
deploy/registry 1   1   1   1   30m 

NAME      DESIRED CURRENT READY  AGE 
rs/registry-6549cbc974 1   1   1   30m 

NAME    DESIRED CURRENT UP-TO-DATE AVAILABLE AGE 
deploy/registry 1   1   1   1   30m 

NAME      DESIRED CURRENT READY  AGE 
rs/registry-6549cbc974 1   1   1   30m 

NAME       READY  STATUS RESTARTS AGE 
po/registry-6549cbc974-mmqpj 1/1  Running 0   30m 

NAME    TYPE  CLUSTER-IP EXTERNAL-IP PORT(S)   AGE 
svc/kubernetes ClusterIP 10.0.0.1  <none>  443/TCP   37m 
svc/registry  NodePort 10.0.0.6  <none>  5000:31001/TCP 7m 

aber wenn ich versuche, mit externen IP für den Dienst zu bekommen: minikube service registry --url, es mal-out/versagt: Waiting, endpoint for service is not ready yet....

Wenn ich den Dienst lösche (die Bereitstellung intakt halte) und die Bereitstellung manuell unter Verwendung von kubectl expose deployment registry --type=NodePort verfügbar mache, kann ich es zum Laufen bringen.

Minikube-Protokoll kann here gefunden werden.

+0

Wenn Service ich s nicht in der Lage zu den Pods dann ist das Problem mit Etiketten. –

+0

in Ihrer Service-Manifest-Datei sollten die Labels "app: registry" sein –

+0

Danke, das behebt es. –

Antwort

0

Sie müssen die richtige spec.selector in registry -Servicemanifest angeben:

apiVersion: v1 
kind: Service 
metadata: 
    name: registry 
    namespace: default 
    labels: 
    app: registry 
spec: 
    selector: 
    app: registry 
    type: NodePort 
    ports: 
    - name: registry 
     nodePort: 31001 
     port: 5000 
     protocol: TCP 

Jetzt registry Service zu Recht auf die registry pod:

$ kubectl get endpoints 
NAME   ENDPOINTS   AGE 
kubernetes 10.0.2.15:8443 14m 
registry  172.17.0.4:5000 4s 

Und Sie können auch externe URL erhalten:

$ minikube service registry --url 
http://192.168.99.106:31001 
Verwandte Themen