J'ai eu le problème lors du déploiement de mojaloop .kubernetes répond avec un journal des erreurs comme
J'ai vérifié ma version de Kubernetes et 1.16 est la version, alors comment puis-je résoudre ce type de problème avec la version de l'API. utiliser la version actuellement non obsolète ou la version prise en charge Je suis nouveau sur Kubernetes et tous ceux qui peuvent me soutenir, je suis heureux
Erreur: échec de la validation: [impossible de reconnaître "": aucune correspondance pour le type "Déploiement" dans la version "apps / v1beta2", impossible de reconnaître "": aucune correspondance pour le type "Déploiement" dans la version "extensions / v1beta1", impossible de reconnaître "": aucune correspondance pour le type "StatefulSet" dans la version "apps / v1beta2", impossible de reconnaître "": aucune correspondance pour le type "StatefulSet" dans la version "apps / v1beta1"]
la source
Réponses:
Dans Kubernetes 1.16, certains
api
s ont été modifiés.Vous pouvez vérifier quels API prennent en charge l'objet Kubernetes actuel à l'aide de
Cela signifie que seul apiVersion with
apps
est correct pour les déploiements (extensions
ne prend pas en chargeDeployment
). La même situation avec StatefulSet.Il vous suffit de remplacer Déploiement et ApiVersion StatefuSet par
apiVersion: apps/v1
.Si cela n'aide pas, veuillez ajouter votre YAML à la question.
EDIT Comme le problème est dû aux modèles HELM inclus dans les anciennes versions des déploiements qui ne sont pas pris en charge dans la version 1.16, il existe 2 solutions possibles:
1.
git clone
repo entier et remplacer apiVersionapps/v1
dans tous les templates / deployment.yaml en utilisant le script2. Utilisez une ancienne version de Kubernetes (1.15) lorsque le validateur accepte
extensions
commeapiVersion
pourDeployent
etStatefulSet
.la source
extensions/v1beta1
. Comme l'une des solutions de contournement possible consiste àgit clone
repo entier et à remplacer apiVersionapps/v1
dans tous les modèles / déploiement.yaml script usinc Lafind . -name 'deployment.yaml' | xargs -n 1 perl -pi -e 's/(apps\/v1beta2)|(extensions\/v1beta1)/apps\/v1/g'.
deuxième solution de contournement pourrait être simplement d'utiliser une version plus ancienne de Kubernetes (1.15) lorsque le validateur accepte les extensions comme apiVersion pour Deployent et StatefulSet.Minikube
ouKubeadm
?Vous pouvez changer manuellement comme alternative. Récupérez le graphique de barre:
Accédez au dossier du graphique:
Changer la version de l'API:
Ajouter
spec.selector.matchLabels
:Enfin, installez votre graphique modifié:
Prendre plaisir!
la source
Cela m'ennuyait parce que je teste beaucoup de packages de barre, j'ai donc écrit un script rapide - qui pourrait être modifié pour trier votre flux de travail, voir ci-dessous
Nouveau workflow Récupérez d'abord le graphique en tant que tgz dans votre répertoire de travail
puis dans votre travail exécutez directement le script bash ci-dessous - que j'ai nommé helmk
Contenu de helmk - besoin de modifier le nom de votre cluster kubeconfig pour qu'il fonctionne
C'est un hack légèrement dangereux car je passe manuellement au nouveau contexte d'espace de noms souhaité, puis à nouveau, donc uniquement pour être utilisé par des développeurs mono-utilisateur ou pour le commenter.
Vous recevrez un avertissement concernant l'utilisation de la fonction de conversion de kubectl comme celle-ci
Si vous avez besoin d'éditer le YAML pour le personnaliser - remplacez simplement l'un des fichiers / dev / stdin par des fichiers intermédiaires, mais il est probablement préférable de le faire en utilisant "create" avec une sauvegarde-config comme je l'ai et puis simplement "appliquez" vos changements ce qui signifie qu'ils seront également enregistrés dans kubernetes. Bonne chance
la source
pour faire simple, vous ne forcez pas l'installation actuelle à utiliser une version obsolète de l'API, mais vous fixez simplement la version dans vos fichiers de configuration si vous voulez vérifier la version prise en charge par le kube actuel, exécutez simplement:
root @ ubn64: ~ # kubectl api-versions | applications grep -i
apps / v1
root @ ubn64: ~ #
la source