web-dev-qa-db-fra.com

ADRESSE vide de kubernetes

J'ai essayé de configurer l'entrée sur mon cluster de kubernetes. J'ai suivi la documentation pour installer le contrôleur d'entrée et ai exécuté les commandes suivantes

kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/mandatory.yaml
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/provider/baremetal/service-nodeport.yaml

Après que default-http-backend et nginx-ingress-controller étaient en cours d'exécution:

ingress-nginx   default-http-backend-846b65fb5f-6kwvp      1/1       Running   0          23h       192.168.2.28   node1
ingress-nginx   nginx-ingress-controller-d658896cd-6m76j   1/1       Running   0          6m        192.168.2.31   node1

J'ai essayé de tester l'entrée et j'ai déployé le service suivant:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: echoserver-deploy
spec:
  replicas: 2
  selector:
    matchLabels:
      app: echo
  template:
    metadata:
      labels:
        app: echo
    spec:
      containers:
        - name: my-echo
          image: gcr.io/google_containers/echoserver:1.8
---
apiVersion: v1
kind: Service
metadata:
  name: echoserver-svc
spec:
  selector:
    app: echo
  ports:
    - protocol: TCP
      port: 8080
      targetPort: 8080

Et l'entrée suivante:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: happy-ingress
  annotations:
    INGRESS.kubernetes.io/rewrite-target: /
spec:
  rules:
    - Host: happy.k8s.io
      http:
        paths:
          - path: /echoserver
            backend:
              serviceName: echoserver-svc
              servicePort: 8080

Lorsque j'ai lancé la commande 'kubectl get ing', j'ai reçu:

NAME            HOSTS          ADDRESS   PORTS     AGE
happy-ingress   happy.k8s.io             80        14m

Je n’ai pas résolu ADDRESS et je ne peux pas comprendre le problème car tous les modules fonctionnent. Pouvez-vous me donner un indice sur ce que le problème peut être?

Merci

3
Dorin

Votre hostname happy.k8s.io devrait être une adresse IP réelle du contrôleur nginx-ingress, qui pointe vers l'avant de votre équilibreur de charge.

Vous pouvez vérifier sous quelle adresse IP le cluster fonctionne: 

bash-3.2$ kubectl cluster-info
Kubernetes master is running at https://192.168.1.100:8443
KubeDNS is running at https://192.168.1.100:8443/api/v1/namespaces/kube- 
system/services/kube-dns:dns/proxy

Testez le contrôleur d'entrée pour votre cluster à l'aide de curl

bash-3.2$ curl http://192.168.1.100:8080
default backend - 404

En fin de compte, vous devez simplement ajouter l’entrée de domaine à /etc/hosts:

192.168.1.100   happy.k8s.io
1
Crou

Je ne sais pas si cela va aider, mais j'ai le même problème ... Je n'ai pas installé de contrôleur d'entrée ou quoi que ce soit, comme certaines personnes l'ont dit sur Github,. J'ai juste créé une entrée pour pouvoir pointer mon sous-domaine à un service différent et au début mon entrée n’avait pas d’adresse IP (elle était vide).

NAME      HOSTS                            ADDRESS   PORTS   AGE
ingress   delivereo.tk,back.delivereo.tk             80      39s

Je pense que c’est parce que mes 2 services pour l’application frontale et l’API principale avaient le type de LoadBalancer . Je l’ai changée en NodePort car ils n’ont plus besoin d’adresse IP externe maintenant que le contrôleur d’entrée gérera ce que l’URL va où.

Et quand j'ai changé le type de mes services sur NodePort, après 2 ou 3 minutes, l'adresse IP de l'Ingress est apparue… .. Lorsque j'ai pointé mon DNS Cloudflare sur la nouvelle adresse IP Ingress, j'ai testé mon sous-domaine et cela a fonctionné!

AVANT

apiVersion: v1
kind: Service
metadata:
  name: delivereotk
spec:
  ports:
    - port: 80
  selector:
    app: delivereotk
  type: LoadBalancer

APRÈS

apiVersion: v1
kind: Service
metadata:
  name: delivereotk
spec:
  ports:
    - port: 80
  selector:
    app: delivereotk
  type: NodePort

Entrée

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: ingress
spec:
  rules:
  - Host: delivereo.tk
    http:
      paths:
        - backend:
            serviceName: delivereotk
            servicePort: 80
  - Host: back.delivereo.tk
    http:
      paths:
        - backend:
            serviceName: backdelivereotk
            servicePort: 80
0
Ibragim Abubakarov