Kubeadm: Não é possível atualizar o kube-apiserver do registro privado.

Criado em 2 out. 2017  ·  4Comentários  ·  Fonte: kubernetes/kubeadm

Eu verifiquei este problema, nº 71, parece que não consigo adicionar credenciais se o kube-apiserver não estiver em execução, mas após extrair manualmente a imagem privada e reiniciar o kubelet, ainda recebo o erro.

PullImage "docker.kesci.com:5000/kube-apiserver:latest" from image service failed: rpc error: code = Unknown desc = Error response from daemon: Get https://**my.private.image.registry**/v2/kube-apiserver/manifests/latest: no basic auth credentials

Versões

versão kubeadm (use kubeadm version ):

Meio Ambiente :

  • Versão do Kubernetes (use kubectl version ):
    Client Version: version.Info{Major:"1", Minor:"7", GitVersion:"v1.7.5", GitCommit:"17d7182a7ccbb167074be7a87f0a68bd00d58d97", GitTreeState:"clean", BuildDate:"2017-08-31T09:14:02Z", GoVersion:"go1.8.3", Compiler:"gc", Platform:"linux/amd64"}
  • Provedor de nuvem ou configuração de hardware :
    aws
  • SO (por exemplo, de / etc / os-release):
NAME="Ubuntu"
VERSION="16.04.3 LTS (Xenial Xerus)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 16.04.3 LTS"
VERSION_ID="16.04"
HOME_URL="http://www.ubuntu.com/"
SUPPORT_URL="http://help.ubuntu.com/"
BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"
VERSION_CODENAME=xenial
UBUNTU_CODENAME=xenial
  • Kernel (por exemplo, uname -a ):
    Linux ip-172-31-28-254 4.4.0-92-generic #115-Ubuntu SMP Thu Aug 10 09:04:33 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
  • Outros :

O que aconteceu?

Eu substituo manualmente a imagem da configuração de /etc/kubernetes/manifests/kube-apiserver.yaml e o kubelet obteve o erro container start failed: ErrImagePull: rpc error: code = Unknown desc = Error response from daemon: Get https://my.private.image.registry/v2/kube-apiserver/manifests/latest: no basic auth credentials , parece que não há credenciais configuradas, então manualmente docker puxo a imagem
docker pull my.private.image.registry/kube-apiserver:latest e run service kubelet restart , ainda tem este erro.

O que você esperava que acontecesse?

O suporte a kubelet configura credenciais manualmente ou pode reconhecer imagens locais extraídas.

Como reproduzi-lo (o mais mínimo e precisamente possível)?

Substitua a imagem /etc/kubernetes/manifests/kube-apiserver.yaml por uma imagem de registro privado.

kinsupport

Comentários muito úteis

@ggaaooppeenngg você deve tentar isto:

  1. Pré-extrair imagens com docker pull
  2. Use kubeadm init --config yourconfigfile , tendo o cuidado de definir a opção imageRepository no arquivo de configuração

Observe que:

  • você tem que pré-extrair imagens, porque não há como criar um imagePullSecrets antes que o cluster exista 😄
  • o procedimento acima funciona no kubeadm v1.8; Não me lembro se isso também era suportado em versões anteriores: confused:
  • este procedimento configura seu repo em arquivos yaml sem requerer mudanças manuais 👍; no entanto, espera-se que todas as imagens locais sigam uma convenção de nomenclatura padrão (por exemplo, componentname-architecture: version)

Para obter mais informações, você pode dar uma olhada em https://kubernetes.io/docs/admin/kubeadm/

Todos 4 comentários

Minha solução: docker extrair a imagem e definir imagePullPolicy como Never e, em seguida, reiniciar o kubelet.

Como você espera que o kubeadm aja nessa situação? Usamos imagens oficiais e não oferecemos suporte a repositórios personalizados. Qual é o seu caso de uso para usar uma imagem personalizada?

@ggaaooppeenngg você deve tentar isto:

  1. Pré-extrair imagens com docker pull
  2. Use kubeadm init --config yourconfigfile , tendo o cuidado de definir a opção imageRepository no arquivo de configuração

Observe que:

  • você tem que pré-extrair imagens, porque não há como criar um imagePullSecrets antes que o cluster exista 😄
  • o procedimento acima funciona no kubeadm v1.8; Não me lembro se isso também era suportado em versões anteriores: confused:
  • este procedimento configura seu repo em arquivos yaml sem requerer mudanças manuais 👍; no entanto, espera-se que todas as imagens locais sigam uma convenção de nomenclatura padrão (por exemplo, componentname-architecture: version)

Para obter mais informações, você pode dar uma olhada em https://kubernetes.io/docs/admin/kubeadm/

@jamiehannaford , quero cavar alguns problemas de desempenho e adicionar alguns registros de rastreamento, para que eu possa ter uma verificação.

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