1
votes

Back-off redémarrage du conteneur Kubernetes échoué

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.


0 commentaires

3 Réponses :


0
votes

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 .


4 commentaires

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/… .



0
votes

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/


1 commentaires

@jujuzi avez-vous essayé ça? Créez simplement IngressClass ...



0
votes

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.


0 commentaires