Kubeadm: [AVISO FileExisting-crictl]: crictl não encontrado no caminho do sistema

Criado em 25 dez. 2017  ·  22Comentários  ·  Fonte: kubernetes/kubeadm

versão do kube: 1.9.0

Como resolver esta verificação pré-voo, o que significa este aviso?

triaged

Comentários muito úteis

Se o kubeadm quiser essa ferramenta cli, ele deve instalá-la se não estiver presente, em vez de avisar. Eu suspeito que uma minoria muito escassa de usuários terá o crictl pré-instalado !!

Todos 22 comentários

É apenas um aviso, não um erro. Você deve ser capaz de prosseguir muito bem sem ele.
Se você quiser se livrar do aviso, basta instalar https://github.com/kubernetes-incubator/cri-tools/tree/master/cmd/crictl

Obrigado e tenha um bom dia!

@luxas Muito obrigado!

Eu o instalei, tanto pelo método "go get" quanto colocando-o diretamente no meu PATH. O alerta ainda está chegando. Existe algum motivo para não encontrá-lo?

Vou adicionar uma migalha de pão ao aviso.

go get github.com/kubernetes-incubator/cri-tools/cmd/crictl resolve

@chuckha

Se o kubeadm quiser essa ferramenta cli, ele deve instalá-la se não estiver presente, em vez de avisar. Eu suspeito que uma minoria muito escassa de usuários terá o crictl pré-instalado !!

Enviamos crictl nos pacotes oficiais deb/rpm?

@errordeveloper não, mas poderíamos.

Por que nada é mencionado sobre isso em https://kubernetes.io/docs/setup/independent/install-kubeadm? ?

Deveria incluir algo na linha do que eu tive que fazer:
Instale esta coisa para que você possa construir essa outra coisa que o kubeadm precisa:

yum instalar ir

Atualize-o porque nada funciona sem exigir mais pesquisa no Google, então é claro que a versão instalada é muito antiga:

rpm --import https://mirror.go-repo.io/centos/RPM-GPG-KEY-GO-REPO
curl -s https://mirror.go-repo.io/centos/go-repo.repo | tee /etc/yum.repos.d/go-repo.repo
vi /etc/yum.repos.d/go-repo.repo

Substitua "$releasever" por "7" e "$basearch" por "x86_64", porque, duh, esses vars não existirão.

yum atualização golang

Construa a coisa:

acesse github.com/kubernetes-incubator/cri-tools/cmd/crictl

Agora tente kubeadm init e lide com os outros erros não documentados.

da mesma forma no Ubuntu 16.4 .. a sugestão útil de usar "go get ..." estava lá, mas isso exigia um

sudo apt-get install golang-go

então você executa o comando go-get e, em seguida, dá erro porque o GOPATH não está definido, o que eu consertei, mas reclamou porque usei um caminho relativo, que consertei, mas reclamou porque

contexto do pacote: caminho de importação não reconhecido "contexto" (o caminho de importação não começa com o nome do host)

o que acontece é porque a versão mais recente do golang que você pode instalar usando o apt-get é 1.6, e a correção de contexto está em 1.7 e acima .. o que requer uma limpeza completa e reinstale usando as instruções amigáveis aqui . o que é bom, mesmo que eles tenham errado as configurações da variável de ambiente .. (suspiro) .. então percebo que 1.7 é realmente bastante antigo, então volto às instruções oficiais aqui .. embora ainda esteja feliz por ter o wget instruções para baixar o tarball do primeiro local útil .. que modifiquei para isso

wget https://storage.googleapis.com/golang/go1.10.1.linux-amd64.tar.gz

apenas no caso de alguém tropeçar nisso ...

Eu sei que isso parece que estou reclamando (porque estou, o que é porque estou um pouco irritado) .. mas achei que valeria a pena ressaltar que não é tão simples quanto adicionar uma instrução para executar

acesse github.com/kubernetes-incubator/cri-tools/cmd/crictl

e acredito que isso resolverá o problema facilmente ... esse tipo de coisa provavelmente não deve ser empurrado para os usuários finais.

Forneça o que encontrei com este aviso:

kubeadm version: &version.Info{Major:"1", Minor:"10", GitVersion:"v1.10.2", GitCommit:"81753b10df112992bf51bbc2c2f85208aad78335", GitTreeState:"clean", BuildDate:"2018-04-27T09:10: 24Z", GoVersion:"go1.9.3", Compilador:"gc", Plataforma:"linux/amd64"}

  1. --ignore-preflight-errors não pode atenuar este aviso, tentei vários formatos:
    --ignore-preflight-errors="cri" ou --ignore-preflight-errors=cri ou
    --ignore-preflight-errors "cri" ou --ignore-preflight-errors cri

  2. instalar o pacote também não pode atenuar este aviso

    acesse github.com/kubernetes-incubator/cri-tools/cmd/crictl

    instalará o binário em $HOME/go/bin, e eu o adicionei em $PATH
    e instalei o binário como usuário normal e root (assim ele aparece em ambos os diretórios pessoais).
    ainda o kubeadm relata o aviso e não consegue encontrá-lo.

@heyi-arm --ignore-preflight-errors converterá o erro em aviso, mas os avisos ainda serão mostrados.

Apenas entrando aqui, assim como acabei de encontrar isso ao tentar provisionar uma configuração multimestre usando o Ansible.

TASK [ansible-k8s : join_cluster | Joining Additional Nodes To K8s Cluster] ******************************************************************************************************
fatal: [node1]: FAILED! => {"changed": true, "cmd": ["kubeadm", "join", "--token", "8gsm4e.uv0bve5j7ec2i0qk", "--discovery-token-unsafe-skip-ca-verification", "--ignore-preflight-errors", "192.168.250.10:6443"], "delta": "0:00:00.176311", "end": "2018-05-10 19:57:28.117885", "msg": "non-zero return code", "rc": 2, "start": "2018-05-10 19:57:27.941574", "stderr": "\t[WARNING FileExisting-crictl]: crictl not found in system path\nSuggestion: go get github.com/kubernetes-incubator/cri-tools/cmd/crictl\n[preflight] Some fatal errors occurred:\n\t[ERROR FileAvailable--etc-kubernetes-pki-ca.crt]: /etc/kubernetes/pki/ca.crt already exists\n[preflight] If you know what you are doing, you can make a check non-fatal with `--ignore-preflight-errors=...`", "stderr_lines": ["\t[WARNING FileExisting-crictl]: crictl not found in system path", "Suggestion: go get github.com/kubernetes-incubator/cri-tools/cmd/crictl", "[preflight] Some fatal errors occurred:", "\t[ERROR FileAvailable--etc-kubernetes-pki-ca.crt]: /etc/kubernetes/pki/ca.crt already exists", "[preflight] If you know what you are doing, you can make a check non-fatal with `--ignore-preflight-errors=...`"], "stdout": "[preflight] Running pre-flight checks.", "stdout_lines": ["[preflight] Running pre-flight checks."]}
fatal: [node2]: FAILED! => {"changed": true, "cmd": ["kubeadm", "join", "--token", "8gsm4e.uv0bve5j7ec2i0qk", "--discovery-token-unsafe-skip-ca-verification", "--ignore-preflight-errors", "192.168.250.10:6443"], "delta": "0:00:00.183138", "end": "2018-05-10 19:57:28.171885", "msg": "non-zero return code", "rc": 2, "start": "2018-05-10 19:57:27.988747", "stderr": "\t[WARNING FileExisting-crictl]: crictl not found in system path\nSuggestion: go get github.com/kubernetes-incubator/cri-tools/cmd/crictl\n[preflight] Some fatal errors occurred:\n\t[ERROR FileAvailable--etc-kubernetes-pki-ca.crt]: /etc/kubernetes/pki/ca.crt already exists\n[preflight] If you know what you are doing, you can make a check non-fatal with `--ignore-preflight-errors=...`", "stderr_lines": ["\t[WARNING FileExisting-crictl]: crictl not found in system path", "Suggestion: go get github.com/kubernetes-incubator/cri-tools/cmd/crictl", "[preflight] Some fatal errors occurred:", "\t[ERROR FileAvailable--etc-kubernetes-pki-ca.crt]: /etc/kubernetes/pki/ca.crt already exists", "[preflight] If you know what you are doing, you can make a check non-fatal with `--ignore-preflight-errors=...`"], "stdout": "[preflight] Running pre-flight checks.", "stdout_lines": ["[preflight] Running pre-flight checks."]}

@mrlesmithjr você tem outro problema, não relacionado: [ERROR FileAvailable--etc-kubernetes-pki-ca.crt]: /etc/kubernetes/pki/ca.crt already exists . Verifique seu manual do ansible e abra um novo problema com detalhes, se necessário.

Foi aí que copiei do master a pasta PKI. Ainda tentando resolver tudo isso. Mas com certeza fará.

Este é um ótimo feedback. Vou trazê-lo em sig-cluster-lifecycle. Isso deve ser absolutamente ignorável, no mínimo.

E deve ser .deb distribuído se o kubeadm depender dele. Caso contrário, é apenas algum utilitário opcional - que ainda deve ser empacotado.

Se isso for necessário para instalação, ele precisa ser enviado com os pacotes. As ferramentas de compilação Go não pertencem aos hosts de contêiner de produção.

Na minha opinião, não deve ser necessário, a menos que o usuário queira usar o CRI em vez do docker. Isso pode ser feito explicitamente introduzindo uma nova opção de linha de comando (--use-cri ?) ou implicitamente como neste PR quando o usuário especifica o soquete CRI usando a opção --cri-socket.

@luxas para mim isso se apresenta como um erro. Isso é um inseto? Se sim, deve ser corrigido rapidamente, porque, conforme ilustrado acima, a instalação do crictl não é tão fácil em algumas configurações (e requer ferramentas de construção no host de produção).

Eu acho que isso deve ser corrigido por este PR

Esta página foi útil?
0 / 5 - 0 avaliações