Après avoir supprimé Kubernetes et ré-installé sur le maître et le nœud, je ne peux plus installer NGINX Ingress Controller pour fonctionner correctement.
Tout d'abord, pour supprimer Kubernetes, j'ai fait:
Client Version: version.Info{Major:"1", Minor:"19", GitVersion:"v1.19.2", GitCommit:"f5743093fd1c663cb0cbc89748f730662345d44d", GitTreeState:"clean", BuildDate:"2020-09-16T13:41:02Z", GoVersion:"go1.15", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"19", GitVersion:"v1.19.2", GitCommit:"f5743093fd1c663cb0cbc89748f730662345d44d", GitTreeState:"clean", BuildDate:"2020-09-16T13:32:58Z", GoVersion:"go1.15", Compiler:"gc", Platform:"linux/amd64"}
Ensuite, pour tout réinstaller, j'ai fait:
I0928 08:38:16.776841 1 main.go:245] Starting NGINX Ingress controller Version= GitCommit= W0928 08:38:16.797787 1 main.go:284] The '-use-ingress-class-only' flag will be deprecated and has no effect on versions of kubernetes >= 1.18.0. Processing ONLY resources that have the 'ingressClassName' field in Ingress equal to the class. F0928 08:38:16.802335 1 main.go:288] Error when getting IngressClass nginx: ingressclasses.networking.k8s.io "nginx" not found
Ensuite, pour installer NGINX Ingress Controller:
Name: nginx-ingress-2thp4
Namespace: nginx-ingress
Priority: 0
Node: k8s-node-0/10.0.8.66
Start Time: Mon, 28 Sep 2020 15:22:01 +0700
Labels: app=nginx-ingress
controller-revision-hash=646bf8d696
pod-template-generation=1
Annotations: cni.projectcalico.org/podIP: 192.168.11.198/32
cni.projectcalico.org/podIPs: 192.168.11.198/32
Status: Running
IP: 192.168.11.198
IPs:
IP: 192.168.11.198
Controlled By: DaemonSet/nginx-ingress
Containers:
nginx-ingress:
Container ID: docker://175d13f95564d98c06af5514b0519a035e5ee95872bb428fa94c9c2bfc6776a5
Image: nginx/nginx-ingress:edge
Image ID: docker-pullable://nginx/nginx-ingress@sha256:fdb07d0a639d0f2c761b4c5a93f6d5063b972b8ae33252bb7755bb5fb6da4fda
Ports: 80/TCP, 443/TCP, 8081/TCP
Host Ports: 80/TCP, 443/TCP, 0/TCP
Args:
-nginx-configmaps=$(POD_NAMESPACE)/nginx-config
-default-server-tls-secret=$(POD_NAMESPACE)/default-server-secret
State: Waiting
Reason: CrashLoopBackOff
Last State: Terminated
Reason: Error
Exit Code: 255
Started: Mon, 28 Sep 2020 15:33:09 +0700
Finished: Mon, 28 Sep 2020 15:33:09 +0700
Ready: False
Restart Count: 7
Readiness: http-get http://:readiness-port/nginx-ready delay=0s timeout=1s period=1s #success=1 #failure=3
Environment:
POD_NAMESPACE: nginx-ingress (v1:metadata.namespace)
POD_NAME: nginx-ingress-2thp4 (v1:metadata.name)
Mounts:
/var/run/secrets/kubernetes.io/serviceaccount from nginx-ingress-token-j9hjm (ro)
Conditions:
Type Status
Initialized True
Ready False
ContainersReady False
PodScheduled True
Volumes:
nginx-ingress-token-j9hjm:
Type: Secret (a volume populated by a Secret)
SecretName: nginx-ingress-token-j9hjm
Optional: false
QoS Class: BestEffort
Node-Selectors: <none>
Tolerations: node.kubernetes.io/disk-pressure:NoSchedule op=Exists
node.kubernetes.io/memory-pressure:NoSchedule op=Exists
node.kubernetes.io/not-ready:NoExecute op=Exists
node.kubernetes.io/pid-pressure:NoSchedule op=Exists
node.kubernetes.io/unreachable:NoExecute op=Exists
node.kubernetes.io/unschedulable:NoSchedule op=Exists
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 15m default-scheduler Successfully assigned nginx-ingress/nginx-ingress-2thp4 to k8s-node-0
Normal Pulled 15m kubelet Successfully pulled image "nginx/nginx-ingress:edge" in 9.106863831s
Normal Pulled 15m kubelet Successfully pulled image "nginx/nginx-ingress:edge" in 3.626387366s
Normal Pulled 14m kubelet Successfully pulled image "nginx/nginx-ingress:edge" in 3.839665529s
Normal Created 14m (x4 over 15m) kubelet Created container nginx-ingress
Normal Started 14m (x4 over 15m) kubelet Started container nginx-ingress
Normal Pulled 14m kubelet Successfully pulled image "nginx/nginx-ingress:edge" in 3.846965585s
Normal Pulling 13m (x5 over 15m) kubelet Pulling image "nginx/nginx-ingress:edge"
Warning BackOff 14s (x70 over 15m) kubelet Back-off restarting failed container
Ensuite, quand j'exécute k get all -n nginx-ingress j'ai:
NAME READY STATUS RESTARTS AGE pod/nginx-ingress-2thp4 0/1 CrashLoopBackOff 7 14m NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE daemonset.apps/nginx-ingress 1 1 0 1 0 <none> 14m
et le détail k describe pods nginx-ingress-2thp4 -n nginx-ingress :
git clone https://github.com/nginxinc/kubernetes-ingress.git cd kubernetes-ingress/deployments k apply -f common/ns-and-sa.yaml k apply -f rbac/rbac.yaml k apply -f common/default-server-secret.yaml k apply -f common/nginx-config.yaml k apply -f deployment/nginx-ingress.yaml k apply -f daemon-set/nginx-ingress.yaml
Et enregistre k logs nginx-ingress -n nginx-ingress :
# On Master sudo apt install -y kubelet kubeadm kubectl sudo kubeadm init mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config kubectl apply -f https://docs.projectcalico.org/v3.14/manifests/calico.yaml # On Node sudo apt install -y kubelet kubeadm kubectl sudo kubeadm join 10.0.8.135:6443 --token 31xags.h9mr5dz6ncn632uv --discovery-token-ca-cert-hash sha256:c6b479e2130799a4e4d41c4a02dab54eedc431806171b92f4bbc1978d84bd91d
Voici la version kubectl:
# On Master k delete namespace,service,job,ingress,serviceaccounts,pods,deployment,services --all k delete node k8s-node-0 sudo kubeadm reset sudo systemctl stop kubelet sudo apt-get purge kubeadm kubectl kubelet kubernetes-cni kube* -y sudo apt-get autoremove -y sudo rm -rf ~/.kube /etc/cni # On Node sudo kubeadm reset sudo systemctl stop kubelet sudo apt-get purge kubeadm kubectl kubelet kubernetes-cni kube* -y sudo apt-get autoremove -y sudo rm -rf ~/.kube
J'ai fait beaucoup de recherches mais je n'ai toujours pas trouvé de moyen de résoudre ce problème. J'ai également essayé de réinstaller plusieurs fois déjà mais cela ne fonctionne jamais.
3 Réponses :
Je pense que cela peut arriver parce que vous souhaitez utiliser le contrôleur d'entrée nginx dans des espaces de noms limités. Veuillez essayer ce correctif appliqué à votre définition ClusterRole nginx-ingress-clusterrole :
@@ -157,7 +160,7 @@ rules:
- list
- watch
- apiGroups:
- - "extensions"
+ - "networking.k8s.io"
resources:
- ingresses
verbs:
Jetez un œil: cluster-role-nginx-controller .
J'ai vérifié rbac.yaml et le correctif est déjà là.
Avez-vous envisagé d'utiliser IngressClass - kubernetes.io/docs/concepts/services-networking/ingress/… ?
Je pense que le lien que vous fournissez est le document à entrer de la communauté Kubernetes tandis que le besoin que j'utilise est nginx inc (contrôleur d'entrée). Alors, est-ce lié?
Oui, vous pouvez faire la même chose avec le contrôleur d'entrée nginx - voir stackoverflow.com/questions/55620567/… .
Vous devez également ajouter
kubectl apply -f common/ingress-class.yaml
Plus d'informations sur IngressClass et les modifications effectuées dans la version 1.18+ peuvent être trouvées sur https://kubernetes.io/docs/concepts/services-networking/ingress/
@jujuzi avez-vous essayé ça? Créez simplement IngressClass ...
Pour ma configuration, la IngressClass n'a pas été créée, comme Zzorica a répondu. Plus précisément, cette configuration doit être appliquée.
N'oubliez pas non plus d'ajouter
spec: ingressClassName: nginx
à votre objet Ingress également.