Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

How to replace docker images of kube-scheduler(apiserver etc.) when creating cluster #1344

Closed
Illyrix opened this issue Feb 20, 2020 · 10 comments
Labels
kind/support Categorizes issue or PR as a support question.

Comments

@Illyrix
Copy link

Illyrix commented Feb 20, 2020

I'm working on an ARM64 machine and has built node-image for ARM64 successfully.
I've got error while executing kind create cluster --image kindest/node:latest --retain
QQ20200220-164415@2x

There were some unexpected exited containers (after failed to create cluster), and the reason was possibly these images were built for amd64 but run on arm64.
QQ20200220-160950@2x

QQ20200220-161152@2x

Is there a way to replace these images of containers(kube-controller-manager, kube-apiserver, kube-scheduler, etcd, pause) by ARM64 version (such as kube-apiserver-arm64)?

@Illyrix Illyrix added the kind/support Categorizes issue or PR as a support question. label Feb 20, 2020
@BenTheElder
Copy link
Member

BenTheElder commented Feb 20, 2020 via email

@Illyrix
Copy link
Author

Illyrix commented Feb 20, 2020

Are you sure you built for arm? There should not be the architecture in the image name.

On Thu, Feb 20, 2020, 00:52 Illyrix @.> wrote: I'm working on an ARM64 machine and has built node-image for ARM64 successfully. I've got error while executing kind create cluster --image kindest/node:latest --retain [image: @. https://user-images.githubusercontent.com/12008675/74916515-f5df3280-5400-11ea-8817-a55eddefea65.png There were some unexpected exited containers (after failed to create cluster), and the reason was possibly these images were built for amd64 but run on arm64. [image: @.*** https://user-images.githubusercontent.com/12008675/74914363-48b6eb00-53fd-11ea-9304-4d8be539eed0.png [image: @.*** https://user-images.githubusercontent.com/12008675/74914532-8ddb1d00-53fd-11ea-90b2-53cd882d1575.png Is there a way to replace these images of containers(kube-controller-manager, kube-apiserver, kube-scheduler, etcd, pause) by ARM64 version (such as kube-apiserver-arm64)? — You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub <#1344?email_source=notifications&email_token=AAHADK3GBIJZ4L3ULRZEEZLRDZADJA5CNFSM4KYKBZA2YY3PNVWWK3TUL52HS4DFUVEXG43VMWVGG33NNVSW45C7NFSM4IO5F2HQ>, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAHADK5VQA4PLL3LTXY6W5TRDZADJANCNFSM4KYKBZAQ .

If i re-tag "pause" docker tag gcr.io/google_containers/pause-arm64:3.2 registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.1, "pause" works well
pause
But I think it is not a good solution. "kube-scheduler"(and others) are distinguished by hash-tag not readable version tag, so it's hard to be solved by this trick way

@zhouqiang-cl
Copy link

@BenTheElder May I ask can kind support arm64 now? seems it is still in progress

@aojea
Copy link
Contributor

aojea commented Feb 20, 2020

IIRC Kind is building for ARM ... another thing is that we don't have CI so it can not be supported because there is no way to test it
#188

Can you try building kind and the node images locally in an ARM architecture?

@BenTheElder
Copy link
Member

arm is nominally supported BUT you must build your own images, we are not trying to do a manifest image of the node or base images currently and we don't have upstream CI.

there's been pretty minimal demand, and non-trivial expense to running this.

you need to:

  • build a base image
  • use this base image to build a node image
  • use this node image when running create cluster

@BenTheElder
Copy link
Member

we do build the kind binary for multiple platforms but pre-built node & base image are amd64. the haproxy and kindnetd images are multi-arch.

@BenTheElder
Copy link
Member

BenTheElder commented Feb 21, 2020

If i re-tag "pause" docker tag gcr.io/google_containers/pause-arm64:3.2 registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.1, "pause" works well
the pause:3.1 image is expected to be a manifest list, and on the current platform it should match.

how are you building this image? I can't tell from the log screenshots.
and does that pause:3.1 match the upstream registry?

But I think it is not a good solution. "kube-scheduler"(and others) are distinguished by hash-tag not readable version tag, so it's hard to be solved by this trick way

huh? we definitely load / reference them using a tag and so does kubeadm ...

@BenTheElder
Copy link
Member

kube-scheduler etc. should be from the locally built images during kind build node-image, which invokes the upstream kubernetes build process. they should be for the current architecture.

only a few images like etcd are pulled instead of built, and those are multi-arch pre-built upstream images.

@zhouqiang-cl
Copy link

arm is nominally supported BUT you must build your own images, we are not trying to do a manifest image of the node or base images currently and we don't have upstream CI.

there's been pretty minimal demand, and non-trivial expense to running this.

you need to:

  • build a base image
  • use this base image to build a node image
  • use this node image when running create cluster

thank you @BenTheElder . we will try to do it

@BenTheElder
Copy link
Member

#1346

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
kind/support Categorizes issue or PR as a support question.
Projects
None yet
Development

No branches or pull requests

4 participants