预检
悬挂
kubeadm 加入
错误报告
kubeadm 版本(使用kubeadm version
):
kubeadm 版本:&version.Info{Major:"1", Minor:"14", GitVersion:"v1.14.0", GitCommit:"641856db18352033a0d96dbc99153fa3b27298e5", GitTreeState:"clean", BuildDate:"2019-03-25T15:51: 21Z”,GoVersion:“go1.12.1”,编译器:“gc”,平台:“linux/amd64”}
环境:
kubectl version
):CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"
内核(例如uname -a
):
Linux vm02.andrefagundes.org 3.10.0-957.5.1.el7.x86_64 #1 SMP Fri Feb 1 14:54:57 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
其他:
加入控制平面时出现问题。 该进程挂起并显示消息正在运行飞行前检查。 见下文:
[ root@vm02 ~]# kubeadm join vm10.andrefacundes. 组织:6443 --token 07nh7g.v8p5fcs61fn3o2h4 --discovery令牌-CA证书哈希SHA256:039a5f9229dafe39d4a51af6899c20adff1de5dda23f780ac9b896e95f95623a --experimental控制平面--certificate键8afd066a7b8baa2abf86ba1b2d5e7f29625875d8f78a3e136f7fd35605b4775
[飞行前] 运行飞行前检查
我期待加入节点或显示错误消息。
我正在关注下面的官方文档。
https://kubernetes.io/docs/setup/independent/high-availability/#external -etcd-nodes
不。
带 v10 参数。
[ root@vm03 etcd]# kubeadm 加入 vm10.andrefagundes。 组织:6443 --token 07nh7g.v8p5fcs61fn3o2h4 --discovery令牌-CA证书哈希SHA256:039a5f9229dafe39d4a51af6899c20adff1de5dda23f780ac9b896e95f95623a --experimental控制平面--certificate键cf3c8ca4f74751bfe7fc9d3e00e03a37619d36a6d6fb79fb5ba3645d74dd7bf4 -v10
I0401 00:34:08.531961 16893 join.go:367] [preflight] 发现 NodeName 为空; 使用 OS 主机名作为 NodeName
I0401 00:34:08.532014 16893 join.go:371] [preflight] 发现广告地址为空; 使用默认接口的 IP 地址作为广告地址
I0401 00:34:08.532048 16893 initconfiguration.go:105] 检测到并使用 CRI 套接字:/var/run/dockershim.sock
I0401 00:34:08.532179 16893 interface.go:384] 寻找具有 IPv4 地址的默认路由
I0401 00:34:08.532187 16893 interface.go:389] 默认路由中转接口“eth0”
I0401 00:34:08.532324 16893 interface.go:196] 接口 eth0 已启动
I0401 00:34:08.532380 16893 interface.go:244] 接口“eth0”有 4 个地址:[192.168.122.103/24 fe80::a3c0:2a34:91f2:e0eb/64 fe80::8439:c3eb:5848:c1f2/ 64 fe80::4381:b4a5:5836:a0e1/64]。
I0401 00:34:08.532399 16893 interface.go:211] 检查地址 192.168.122.103/24。
I0401 00:34:08.532407 16893 interface.go:218] IP 找到 192.168.122.103
I0401 00:34:08.532415 16893 interface.go:250] 找到接口“eth0”的有效 IPv4 地址 192.168.122.103。
I0401 00:34:08.532421 16893 interface.go:395] 找到活动 IP 192.168.122.103
[飞行前] 运行飞行前检查
I0401 00:34:08.532495 16893 preflight.go:90] [preflight] 运行常规检查
I0401 00:34:08.532539 16893 checks.go:254] 验证目录 /etc/kubernetes/manifests 的存在性和空性
I0401 00:34:08.532570 16893 checks.go:292] 验证文件 /etc/kubernetes/kubelet.conf 的存在
I0401 00:34:08.532579 16893 checks.go:292] 验证文件 /etc/kubernetes/bootstrap-kubelet.conf 的存在
I0401 00:34:08.532586 16893 checks.go:105] 验证容器运行时
I0401 00:34:08.580885 16893 checks.go:131] 验证服务是否已启用并处于活动状态
I0401 00:34:08.638659 16893 checks.go:341] 验证文件 /proc/sys/net/bridge/bridge-nf-call-iptables 的内容
I0401 00:34:08.638724 16893 checks.go:341] 验证文件 /proc/sys/net/ipv4/ip_forward 的内容
I0401 00:34:08.638755 16893 checks.go:653] 验证交换是否启用
I0401 00:34:08.638788 16893 checks.go:382] 验证可执行 ip 的存在
I0401 00:34:08.638809 16893 checks.go:382] 验证可执行 iptables 的存在
I0401 00:34:08.638824 16893 checks.go:382] 验证可执行挂载的存在
I0401 00:34:08.638837 16893 checks.go:382] 验证可执行 nsenter 的存在
I0401 00:34:08.638849 16893 checks.go:382] 验证可执行 ebtables 的存在
I0401 00:34:08.638860 16893 checks.go:382] 验证是否存在可执行的 ethtool
I0401 00:34:08.638871 16893 checks.go:382] 验证可执行 socat 的存在
I0401 00:34:08.638883 16893 checks.go:382] 验证可执行 tc 的存在
I0401 00:34:08.638894 16893 checks.go:382] 验证是否存在可执行触摸
I0401 00:34:08.638914 16893 checks.go:524] 运行所有检查
I0401 00:34:08.664826 16893 checks.go:412] 使用 net.LookupHost 检查给定的节点名称是否可访问
I0401 00:34:08.665583 16893 checks.go:622] 验证 kubelet 版本
I0401 00:34:08.709573 16893 checks.go:131] 验证服务是否已启用且处于活动状态
I0401 00:34:08.716270 16893 checks.go:209] 验证端口 10250 的可用性
I0401 00:34:08.716418 16893 checks.go:439] 验证连接类型是通过代理还是直接
I0401 00:34:08.716444 16893 join.go:427] [飞行前] 发现集群信息
I0401 00:34:08.716498 16893 token.go:200] [发现] 尝试连接到 API 服务器“ vm10.andrefagundes.org:6443 ”
I0401 00:34:08.716961 16893 token.go:75] [discovery] 创建集群信息发现客户端,从“ https://vm10.andrefagundes.org:6443 ”请求信息
I0401 00:34:08.717031 16893 round_trippers.go:419] curl -k -v -XGET -H "接受:应用程序/json, / " -H "用户代理:kubeadm/v1.14.0 (linux/amd64) kubernetes/ 641856d"' https://vm10.andrefagundes.org :6443/api/v1/namespaces/kube-public/configmaps/cluster-info'
I0401 00:34:08.722405 16893 round_trippers.go:438] GET https://vm10.andrefagundes.org :6443/api/v1/namespaces/kube-public/configmaps/cluster-info 403 5 毫秒内禁止
I0401 00:34:08.722423 16893 round_trippers.go:444] 响应标头:
I0401 00:34:08.722432 16893 round_trippers.go:447] 内容类型:应用程序/json
I0401 00:34:08.722441 16893 round_trippers.go:447] X-Content-Type-Options: nosniff
I0401 00:34:08.722450 16893 round_trippers.go:447] 内容长度:321
I0401 00:34:08.722458 16893 round_trippers.go:447] 日期:2019 年 4 月 1 日星期一 03:34:08 GMT
I0401 00:34:08.722497 16893 request.go:942] 响应正文:{"kind":"Status","apiVersion":"v1","metadata":{},"status":"Failure","message ":"configmaps \"cluster-info\" 被禁止:用户 \" system:anonymous\ " 无法在命名空间 \"kube-public\"" 中的 API 组 \"\" 中获取资源 \"configmaps\",原因":"禁止","详细信息":{"name":"cluster-info","kind":"configmaps"},"code":403}
I0401 00:34:08.722937 16893 token.go:83] [discovery] 无法请求集群信息,将重试:[configmaps "cluster-info" 被禁止:用户 " system:anonymous " 无法在 API 中获取资源 "configmaps"命名空间“kube-public”中的组“”]
另一个信息... vm10.andrefagundes.org 是我控制平面前面的 Haproxy。
对我来说似乎是一个网络问题。
你确定这个加入节点连接到 LB 上的端口 6443 并且可以解析 vm10.andrefagundes.org 吗?
是的,我还将 vm10 更改为指向控制平面。 我看到控制平面上的流量正在使用 TCDUMP 进行监控。
您是否在 kubelet 日志中看到任何未解决的错误?
日志中有几个错误。 我还尝试重新安装集群几次,每次都遇到不同的错误。 我要放弃了。 我们可以结案了。 谢谢!!
创建单个控制平面节点+一些工作节点是否适合您,还是仅在加入其他控制平面节点时才会出现问题?
用户“ system:anonymous ”无法在命名空间“kube-public”中的API组“”中获取资源“configmaps”“原因”:“Forbidden”,“details”:{“name”:“cluster-info”, “种类”:“配置映射”},“代码”:403
似乎 kubeadm init 没有正确创建/配置集群信息
你能分享一下 kubeadm init 日志吗?
执行命令“kubeadm join ...”后,我遇到了同样的错误:运行飞行前检查卡住了。 我不知道如何处理它。
我遇到过同样的问题。 我需要重新启动主节点,然后在节点上再次执行“kubeadm join ...”命令对我有用。
我对kubeadm v1.15
有同样的问题,reboot master 对我不起作用
我对
kubeadm v1.15
有同样的问题,reboot master 对我不起作用
回退到 kubelet 和 kubeadm v1.13.1 修复了这个问题
确保您使用例如--v=2
调用kubeadm init/join
以获取有关正在发生的事情的更多详细信息。
遇到了同样的问题,但问题被追溯到网络连接,我的 keepalived 和 haproxy 守护程序配置错误,阻止挂起主节点通过 API 服务 VIP 加入集群
值得指出的是,使用 --v=2 运行 kubeadm init/join 是我解决它的方法
确保您使用例如
--v=2
调用kubeadm init/join
以获取有关正在发生的事情的更多详细信息。
kubeadm v1.15
kubeadm 加入 .. --v=2
I0802 11:47:31.027812 359 token.go:202] [发现] 无法连接到 API 服务器“”:令牌 ID“r5uyqk”对此集群无效或已过期。 在控制平面节点上使用“kubeadm token create”创建一个新的有效令牌
kubeadm 初始化阶段上传证书 --upload-certs
kubeadm 令牌创建
然后 kubeadm 加入成功
就我而言,我能够通过停止主节点上的防火墙来成功加入节点。
systemctl stop firewall
就我而言,我能够通过停止主节点上的防火墙来成功加入节点。
systemctl stop firewall
这个很有魅力。
[ root@localhost ~]# kubeadm join 192.168.8.128:6443 --token 38lhr8.kxi5uy8aoy71dj17 --discovery-token-ca-cert-hash sha256:a12c805b8d98f42a256486d27e87463e22aaba190ab8f5bdce89bbb8ca34
[飞行前] 运行飞行前检查
[警告 IsDockerSystemdCheck]:检测到“cgroupfs”作为 Docker cgroup 驱动程序。 推荐的驱动程序是“systemd”。 请按照https://kubernetes.io/docs/setup/cri/上的指南进行操作
[警告 SystemVerification]:此 Docker 版本不在已验证版本列表中:19.03.1。 最新验证版本:18.09
[预检] 从集群中读取配置...
[飞行前] 仅供参考:您可以使用“kubectl -n kube-system get cm kubeadm-config -oyaml”查看此配置文件
[kubelet-start] 从 kube-system 命名空间中的“kubelet-config-1.14”ConfigMap 下载 kubelet 的配置
[kubelet-start] 将 kubelet 配置写入文件“/var/lib/kubelet/config.yaml”
[kubelet-start] 将带有标志的 kubelet 环境文件写入文件“/var/lib/kubelet/kubeadm-flags.env”
[kubelet-start] 激活 kubelet 服务
[kubelet-start] 等待 kubelet 执行 TLS Bootstrap...
此节点已加入集群:
在控制平面上运行“kubectl get nodes”以查看该节点加入集群。
再次查看 OP 中的日志,这不是预检中的“挂起”,而是无法访问 cluster-info 配置映射,如果“init”的“boostrap-token”阶段可能会发生这种情况被跳过。
查看后来的报告,我看到网络和过期令牌问题属于“支持”项目而不是错误。
/分类支持
如有问题,请在 k8s slack 上尝试 stackoverflow、reddit 或 #kubeadm。
如果您发现真正的错误,请打开一个新问题。
就我而言,我能够通过停止主节点上的防火墙来成功加入节点。
systemctl stop firewall
systemctl 停止防火墙
我发现流量不允许连接主节点。
在 sg 中添加规则解决了我的问题
执行命令“kubeadm join ...”后,我遇到了同样的错误:运行飞行前检查卡住了。 我不知道如何处理它。
你找到任何解决方案了吗?
我发现流量不允许连接主节点。
在 sg 中添加规则解决了我的问题
你允许什么入站端口?
最有用的评论
确保您使用例如
--v=2
调用kubeadm init/join
以获取有关正在发生的事情的更多详细信息。