简体   繁体   English

如何使用 kubeadm 创建 kube.netes 集群?

[英]How to use kubeadm to create kubernetes cluster?

I init k8s cluster master with kubeadm, but I felt very confused.我用 kubeadm 初始化了 k8s cluster master,但我感到很困惑。 The version of kubeadm: kubeadm 的版本:

# ./kubeadm version
kubeadm version: version.Info{Major:"1", Minor:"5", GitVersion:"v1.5.1", GitCommit:"82450d03cb057bab0950214ef122b67c83fb11df", GitTreeState:"clean", BuildDate:"2016-12-14T00:52:01Z", GoVersion:"go1.7.4", Compiler:"gc", Platform:"linux/amd64"}

When I run command with kubeadm init , told me must start kubelet.service:当我使用kubeadm init运行命令时,告诉我必须启动 kubelet.service:

# ./kubeadm init
Running pre-flight checks
preflight check errors:
    kubelet service is not active, please run 'systemctl start kubelet.service'

And then When I retry this command after systemctl restart kubelet.service , told me Port 10250 in use :然后当我在systemctl restart kubelet.service之后重试这个命令时,告诉我Port 10250 in use

# systemctl restart kubelet.service
# ./kubeadm init
Running pre-flight checks
preflight check errors:
    Port 10250 is in use
    /var/lib/kubelet is not empty

Is there any way to run kubelet with no port OR can I change the port of kubelet?有什么方法可以在没有端口的情况下运行 kubelet 或者我可以更改 kubelet 的端口吗?

The reason that it mentions the port is in use is because you already ran kubeadm init once and it has already changed a number of things.它提到端口正在使用的原因是你已经运行了一次kubeadm init并且它已经改变了很多东西。

run kubeadm reset first to undo all of the changes from the first time you ran it.首先运行kubeadm reset以撤消第一次运行时的所有更改。

Then run systemctl restart kubelet然后运行systemctl restart kubelet

Finally, when you run kubeadm init you should no longer get the error.最后,当您运行kubeadm init您不应再收到错误消息。

Any time kubeadm does something that's not right or otherwise fails, it needs to be reset to work properly again.任何时候 kubeadm 做一些不正确或失败的事情,它都需要重置才能再次正常工作。

I also had same problem.我也有同样的问题。

error execution phase preflight: [preflight] Some fatal errors occurred:
    [ERROR Port-10251]: Port 10251 is in use
    [ERROR Port-10252]: Port 10252 is in use
    [ERROR Port-10250]: Port 10250 is in use
    [ERROR Port-2380]: Port 2380 is in use

then i noticed that there is another process is running " microk8s " once I stopped that, I was able to start kubeadm然后我注意到有另一个进程正在运行“ microk8s ”,一旦我停止它,我就可以启动 kubeadm

sudo microk8s.stop

Check the process which uses Port 10250,检查使用端口 10250 的进程,

sudo netstat -lnp | grep 10250

Kill the process using使用杀死进程

sudo kill Process_PID

then run kubeadm init .然后运行kubeadm init

You can use --port <port number> to override the port number for kublet.您可以使用--port <port number>来覆盖 kublet 的端口号。

For more information refer this: https://kubernetes.io/docs/admin/kubelet/有关更多信息,请参阅: https : //kubernetes.io/docs/admin/kubelet/

Maybe ubuntu has installed some snap package. check it:也许 ubuntu 已经安装了一些 snap package。检查一下:

snap services

if you see some app like microk8 or etcd or... there may be conflict.如果您看到某些应用程序,例如 microk8 或 etcd 或...可能存在冲突。 so:所以:

sudo snap stop microk8s
sudo snap disable microk8s

sudo snap stop docker.dockerd
sudo snap disable docker

sudo snap stop etcd
sudo snap disable etcd

Once you run Kubeadm init it will reserve the ports and if any failure occurs after that then it won't automatically release those ports一旦你运行 Kubeadm init 它将保留端口,如果之后发生任何故障,它不会自动释放这些端口

Sof if you initially ran如果你最初跑了

sudo kubeadm init

and it failed then reset the kubeadm by running它失败了,然后通过运行重置 kubeadm

sudo kubeadm reset

Make sure that kubelet is not installed twice.确保 kubelet 没有安装两次。

Remove it from snap :snap删除它:

snap remove kubelet

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM