Aller au contenu
ecdsa.com
kubectl (client-go)Docker et Kubernetes

Message d’erreur

Unable to connect to the server: tls: failed to verify certificate: x509: certificate has expired or is not yet valid

Go ajoute les deux instants : « …: current time <client time> is after <notAfter> » (ou « is before <notBefore> » pour les certificats qui ne sont pas encore valides), ce qui vous indique de quel côté se trouve l’erreur.

kubectl (client-go) — the API server certificate (often after a year without kubeadm upgrades) is outside its validity period

Ce que cela signifie

Le serveur d’API a présenté un certificat hors de sa période de validité selon l’heure locale de kubectl. Dans les clusters kubeadm, les certificats du plan de contrôle sont émis pour un an et ne sont renouvelés automatiquement que lors des mises à niveau kubeadm : les clusters laissés sans intervention pendant un an échouent donc exactement de cette manière. Une horloge erronée côté client produit la même erreur.

Pourquoi cela se produit

Comment corriger l’erreur

  1. 1.

    Lister les dates d’expiration des certificats

    kubeadm certs check-expiration affiche chaque certificat du plan de contrôle avec sa durée de vie restante.

    bash
    # On a control-plane node
    sudo kubeadm certs check-expiration
  2. 2.

    Renouveler les certificats et redémarrer le plan de contrôle

    kubeadm certs renew all écrit de nouveaux certificats ; les pods statiques doivent être redémarrés pour les charger, et les kubeconfig contenant des certificats client intégrés doivent être actualisés.

    bash
    sudo kubeadm certs renew all
    # restart the control-plane static pods so they load the new certificates,
    # then refresh your kubeconfig (the embedded client certificate was renewed too):
    sudo cp /etc/kubernetes/admin.conf "$HOME/.kube/config"
  3. 3.

    Vérifier l’heure du client

    Synchronisez l’horloge si le message complet indique « is before ».

    bash
    date -u; timedatectl status | grep -i synchronized

Erreurs associées

Parcourir toute la base de données des erreurs de signature