如何使用kubeadm创建kubernetes集群?

How to use kubeadm to create kubernetes cluster?

我用kubeadm初始化了k8s cluster master,但是感觉很迷茫。 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"}

当我用 kubeadm init 命令 运行 时,告诉我必须开始 kubelet.service:

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

然后当我在 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

有什么方法可以 运行 没有端口的 kubelet 或者我可以更改 kubelet 的端口吗?

您可以使用 --port <port number> 覆盖 kublet 的端口号。

有关更多信息,请参阅:https://kubernetes.io/docs/admin/kubelet/

它提到端口正在使用的原因是因为您已经 运行 kubeadm init 一次并且它已经更改了很多东西。

运行 kubeadm reset 首先撤消您第一次 运行 时的所有更改。

然后运行systemctl restart kubelet

最后,当您 运行 kubeadm init 您应该不会再收到错误。

任何时候 kubeadm 做了一些不正确的事情或者失败了,它需要重新设置才能再次正常工作。

查看使用10250端口的进程,

sudo netstat -lnp | grep 10250

使用

终止进程
sudo kill Process_PID

然后 运行 kubeadm init .

我也遇到了同样的问题

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

然后我注意到还有另一个进程是 运行 “microk8s” 一旦我停止了它,我就可以启动 kubeadm

sudo microk8s.stop

确保kubelet没有安装两次。

将其从 snap 中删除:

snap remove kubelet

可能ubuntu安装了一些snap包。检查一下:

snap services

如果您看到某些应用程序,例如 microk8 或 etcd 或...,则可能存在冲突。所以:

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

一旦你 运行 Kubeadm init 它将保留端口,如果之后发生任何故障,它不会自动释放这些端口

Sof 如果你最初 运行

sudo kubeadm init

失败然后通过 运行ning

重置 kubeadm
sudo kubeadm reset