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
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
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