it-swarm.com.de

kubernetes service externe ip anhängig

Ich versuche, Nginx auf kubernetes bereitzustellen. Die Version von kubernetes ist v1.5.2. Ich habe Nginx mit 3 Replikaten bereitgestellt. Die YAML-Datei befindet sich unten.

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: deployment-example
spec:
  replicas: 3
  revisionHistoryLimit: 2
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.10
        ports:
        - containerPort: 80

und jetzt möchte ich seinen Port 80 auf Port 30062 des Knotens verfügbar machen, dafür habe ich einen Dienst erstellt, 

kind: Service
apiVersion: v1
metadata:
  name: nginx-ils-service
spec:
  ports:
    - name: http
      port: 80
      nodePort: 30062
  selector:
    app: nginx
  type: LoadBalancer

dieser Dienst funktioniert gut, aber er ist nicht nur auf dem Dashboard von kubernetes, sondern auch auf dem Terminal anhängig .  Terminal output  Dash board status

bitte helfen Sie mir, dieses Problem zu lösen. Vielen Dank ...

41
Pankaj Jackson

Es sieht so aus, als würden Sie einen benutzerdefinierten Kubernetes-Cluster verwenden (minikube, kubeadm oder ähnliches). In diesem Fall ist kein LoadBalancer integriert (im Gegensatz zu AWS oder Google Cloud). Mit dieser Standardeinstellung können Sie nur NodePort (weitere Informationen hier: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport ) oder einen Ingress Controller verwenden. Mit dem Ingress Controller können Sie einen Domainnamen einrichten, der Ihrem Pod zugeordnet ist (weitere Informationen hier: https://kubernetes.io/docs/concepts/services-networking/ingress/#ingress-controllers )

77
Javier Salmeron

Um auf einen Dienst unter minikube zuzugreifen, müssen Sie den folgenden Befehl ausführen:

minikube service [-n NAMESPACE] [--url] NAME

Mehr Informationen hier: Minikube GitHub

16
Saket Jain

Wenn Sie nicht GCE oder EKS verwenden (Sie haben kubeadm verwendet), können Sie Ihrem Dienst YAML eine externalIPs-Spezifikation hinzufügen. Sie können die IP-Adresse verwenden, die der primären Schnittstelle Ihres Knotens zugeordnet ist, z. B. eth0. Sie können dann über die externe IP des Knotens extern auf den Dienst zugreifen. 

...
spec:
  type: LoadBalancer
  externalIPs:
  - 192.168.0.10
13
toppur

Wenn Sie Minikube verwenden, gibt es einen magischen Befehl!

$ minikube tunnel

Hoffentlich kann jemand damit ein paar Minuten sparen.

Referenzlink https://github.com/kubernetes/minikube/blob/master/docs/networking.md#loadbalancer-emulation-minikube-tunnel

5
Peter Zhou

Ich habe mit kubeadm einen einzelnen Knoten-k8s-Cluster erstellt. Als ich PortForward und kubectl proxy ausprobiert habe, wurde die externe IP als ausstehend angezeigt.

$ kubectl get svc -n argocd argocd-server
NAME            TYPE           CLUSTER-IP      EXTERNAL-IP   PORT(S)                      AGE
argocd-server   LoadBalancer   10.107.37.153   <pending>     80:30047/TCP,443:31307/TCP   110s

In meinem Fall habe ich den Dienst so gepatcht:

kubectl patch svc <svc-name> -n <namespace> -p '{"spec": {"type": "LoadBalancer", "externalIPs":["172.31.71.218"]}}'

Danach wurde der Dienst über der öffentlichen IP-Adresse gestartet

$ kubectl get svc argo-ui -n argo
NAME      TYPE           CLUSTER-IP     EXTERNAL-IP     PORT(S)        AGE
argo-ui   LoadBalancer   10.103.219.8   172.31.71.218   80:30981/TCP   7m50s
2

NodePort verwenden:

kubectl run user-login --replicas = 2 --labels = "run = user-login" --image = kingslayerr/teamproject: version2 --port = 5000

kubectl Bereitstellung Bereitstellung Benutzeranmeldung - Typ = NodePort - Name = Benutzeranmeldedienst

kubectl beschreibt Dienste Benutzer-Login-Service .__ (notiert den Port)

kubect cluster-info (IP-> Get Die IP, auf der der Master ausgeführt wird)

Ihr Dienst ist erreichbar unter (IP) :( Port)

1
Shubham Sawant

Wenn Sie mit minikube arbeiten, vergessen Sie nicht, den Namespace anzugeben, wenn Sie nicht die Standardeinstellung verwenden.

minikube service << service_name >> --url --namespace = << name_name >>

1
Mohsin

Folgende @ Javier Antwort. Ich habe mich für das "Patchen der externen IP" für meinen Load Balancer entschieden.

 $ kubectl patch service my-loadbalancer-service-name \
-n lb-service-namespace \
-p '{"spec": {"type": "LoadBalancer", "externalIPs":["192.168.39.25"]}}'

Dadurch wird diese ausstehende IP-Adresse durch eine neue, aktualisierte IP-Adresse ersetzt, die Sie für Ihren Cluster verwenden können.

Mehr dazu. Bitte lesen Sie karthiks Post am LoadBalancer-Unterstützung mit Minikube für Kubernetes

Dies ist nicht der sauberste Weg. Ich brauchte eine vorübergehende Lösung. Hoffe das hilft jemandem.

0
Mo-Gang

Überprüfen Sie die kube-controller-Protokolle. Dieses Problem konnte behoben werden, indem die clusterID-Tags auf die ec2-Instanz gesetzt wurden, auf der ich den Cluster bereitgestellt habe.

0
Rakesh Pelluri

bestehenden Dienst löschen und denselben neuen Dienst erstellen. Meine Probleme wurden behoben. Meine Probleme bestehen darin, dass der von mir definierte Lastausgleichs-Ip verwendet wird, sodass der externe Endpunkt ansteht. Wenn ich eine neue Lastausgleichs-IP ändere, funktioniert sie immer noch nicht. Löschen Sie zum Schluss den vorhandenen Dienst und erstellen Sie einen neuen, um mein Problem zu lösen.

0
Shakira Sun

gleicher Fehler:

os> kubectl erhalten svc right-sabertooth-wordpress

NAME TYPE CLUSTER-IP EXTERNER IP-PORT (S)
right-sabertooth-wordpress LoadBalancer 10.97.130.7 "ausstehend" 80: 30454/TCP, 443: 30427/TCP 

os> Minikubeservice-Liste

| ------------- | ---------------------------- | ------ -------------------------- |

| NAMESPACE | NAME | URL |

| ------------- | ---------------------------- | ------ -------------------------- |

| default | kubernetes | Kein Knotenport |

| default | rechts-sabertooth-mariadb | Kein Knotenport |

| default | right-sabertooth-wordpress | http://192.168.99.100:30454 |

| | | http://192.168.99.100:30427 |

| kube-system | kube-dns | Kein Knotenport |

| kube-system | Deichselbereitstellung | Kein Knotenport |

| ------------- | ---------------------------- | ------ -------------------------- |

Es ist jedoch über das http://192.168.99.100:30454 erreichbar.

0
alfred