Eu tenho o problema ao implantar o mojaloop .kubernetes está respondendo com um log de erro como
Eu verifiquei minha versão do Kubernetes e 1.16 é a versão, então como posso corrigir esse tipo de problema com a versão da API. Ao investigar, descobri que o Kubernetes não suporta apps / v1beta2, apps / v1beta1, então como posso fazer o Kubernetes usar versão atualmente não obsoleta ou versão suportada Eu sou novo no Kubernetes e qualquer pessoa que possa me apoiar, estou feliz
Erro: falha na validação: [não é possível reconhecer "": não corresponde ao tipo "Implantação" na versão "apps / v1beta2", não é possível reconhecer "": não corresponde ao tipo "Implantação" na versão "extensões / v1beta1", não é possível reconhece "": não corresponde ao tipo "StatefulSet" na versão "apps / v1beta2", não é possível reconhecer "": não corresponde ao tipo "StatefulSet" na versão "apps / v1beta2"]
fonte
Respostas:
No Kubernetes 1.16, alguns
api
s foram alterados.Você pode verificar quais apis suportam o objeto Kubernetes atual usando
Isso significa que apenas apiVersion with
apps
está correto para implantações (extensions
não é compatívelDeployment
). A mesma situação com StatefulSet.Você só precisa alterar a aplicação Deployment e StatefuSet para
apiVersion: apps/v1
.Se isso não ajudar, adicione seu YAML à pergunta.
EDITAR Como o problema é causado pelos modelos HELM que incluíram apiVersions antigas em Implantações que não são suportadas na versão 1.16, existem 2 soluções possíveis:
1.
git clone
repo todo e substituir apiVersion paraapps/v1
em todos templates / deployment.yaml usando roteiro2. Use versão mais antiga do Kubernetes (1,15), quando validador aceitar
extensions
comoapiVersion
paraDeployent
eStatefulSet
.fonte
extensions/v1beta1
. Como uma das soluções possíveis égit clone
reposicionar e substituir a apiVersion porapps/v1
todos os scripts de templates / deployment.yaml usinc Afind . -name 'deployment.yaml' | xargs -n 1 perl -pi -e 's/(apps\/v1beta2)|(extensions\/v1beta1)/apps\/v1/g'.
segunda solução alternativa pode ser usar apenas a versão mais antiga do Kubernetes (1.15) quando o validador aceitar extensões como apiVersion for Deployent e StatefulSet.Minikube
ouKubeadm
?Você pode alterar manualmente como alternativa. Busque o gráfico de leme:
Acesse a pasta do gráfico:
Alterar versão da API:
Adicionar
spec.selector.matchLabels
:Por fim, instale seu gráfico alterado:
Aproveitar!
fonte
Isso estava me incomodando porque estou testando muitos pacotes de lemes, então escrevi um script rápido - que pode ser modificado para classificar seu fluxo de trabalho, talvez veja abaixo
Novo fluxo de trabalho Busque primeiro o gráfico como um tgz no diretório de trabalho
então, no seu trabalho, execute diretamente o script bash abaixo - que chamei de helmk
Conteúdo do helmk - é necessário editar o nome do cluster do kubeconfig para funcionar
É um truque um pouco perigoso, pois eu troco manualmente para o novo contexto de espaço para nome desejado e, em seguida, volto a usá-lo para ser usado apenas para desenvolvedores de um único usuário ou comentar isso.
Você receberá um aviso sobre o uso do recurso kubectl convert como este
Se você precisar editar o YAML para personalizar - basta substituir um dos arquivos / dev / stdin para arquivos intermediários, mas provavelmente é melhor utilizá-lo usando "create" com um save-config como eu tenho e simplesmente "aplique" suas alterações o que significa que eles também serão gravados nos kubernetes. Boa sorte
fonte
para simplificar, você não força a instalação atual a usar uma versão desatualizada da API, mas simplesmente corrige a versão nos arquivos de configuração, se quiser verificar qual versão o kube atual suporta, basta executar:
root @ ubn64: ~ # kubectl api-versões | grep -i apps
apps / v1
root @ ubn64: ~ #
fonte