k8s从节点加入主节点[preflight] Running pre-flight checks卡住(已解决)

news2024/10/6 2:27:20

文章目录

  • 一、写在前面
  • 二、问题排查
    • 1、执行join时加上-v=2参数查看日志
    • 2、处理证书问题
    • 3、重启
    • 4、其他方法1
    • 5、其他方法2
  • 三、总结
  • 参考资料

一、写在前面

部署k8s时,主节点部署成功了,从节点1执行kubeadm join也成功了,从节点2执行kubeadm join一直卡在[preflight] Running pre-flight checks不动!

二、问题排查

网上查的资料,不管是时间同步,还是重新生成token都尝试了,结果还是不行。
kubeadm token list 查看token也并没有 过期。
kubeadm token create --ttl 0 --print-join-command 重新生成token也不行。
而且重新部署之后,还是不行。

# 1、重置
kubeadm reset
rm -rf /etc/kubernetes/*
rm -rf ~/.kube
# 2、重新init
# 3、重新执行init后的日志
# 4、重新部署calico网络插件
# 5、从节点重新加入

关键问题是,从节点1正常能加入集群,为什么从节点2无法加入集群???

1、执行join时加上-v=2参数查看日志

[root@w1 ~]# kubeadm join -v=2 192.168.56.100:6443 --token wvsok4.5kjxe1ts8kidll1b --discovery-token-ca-cert-hash sha256:e94113cc2b2fb1b9994c7e419c5f3b776493c7151377812672fe55163b3f97a5
I0703 09:09:38.169190    2029 join.go:367] [preflight] found NodeName empty; using OS hostname as NodeName
I0703 09:09:38.169794    2029 initconfiguration.go:105] detected and using CRI socket: /var/run/dockershim.sock
[preflight] Running pre-flight checks
I0703 09:09:38.169865    2029 preflight.go:90] [preflight] Running general checks
I0703 09:09:38.170055    2029 checks.go:254] validating the existence and emptiness of directory /etc/kubernetes/manifests
I0703 09:09:38.170069    2029 checks.go:292] validating the existence of file /etc/kubernetes/kubelet.conf
I0703 09:09:38.170078    2029 checks.go:292] validating the existence of file /etc/kubernetes/bootstrap-kubelet.conf
I0703 09:09:38.170085    2029 checks.go:105] validating the container runtime
I0703 09:09:38.221649    2029 checks.go:131] validating if the service is enabled and active
I0703 09:09:38.262731    2029 checks.go:341] validating the contents of file /proc/sys/net/bridge/bridge-nf-call-iptables
I0703 09:09:38.262898    2029 checks.go:341] validating the contents of file /proc/sys/net/ipv4/ip_forward
I0703 09:09:38.262920    2029 checks.go:653] validating whether swap is enabled or not
I0703 09:09:38.262941    2029 checks.go:382] validating the presence of executable ip
I0703 09:09:38.263176    2029 checks.go:382] validating the presence of executable iptables
I0703 09:09:38.263554    2029 checks.go:382] validating the presence of executable mount
I0703 09:09:38.263659    2029 checks.go:382] validating the presence of executable nsenter
I0703 09:09:38.263669    2029 checks.go:382] validating the presence of executable ebtables
I0703 09:09:38.263680    2029 checks.go:382] validating the presence of executable ethtool
I0703 09:09:38.263688    2029 checks.go:382] validating the presence of executable socat
I0703 09:09:38.263696    2029 checks.go:382] validating the presence of executable tc
I0703 09:09:38.263703    2029 checks.go:382] validating the presence of executable touch
I0703 09:09:38.263718    2029 checks.go:524] running all checks
I0703 09:09:38.275230    2029 checks.go:412] checking whether the given node name is reachable using net.LookupHost
I0703 09:09:38.275514    2029 checks.go:622] validating kubelet version
I0703 09:09:38.311281    2029 checks.go:131] validating if the service is enabled and active
I0703 09:09:38.316858    2029 checks.go:209] validating availability of port 10250
I0703 09:09:38.317624    2029 checks.go:292] validating the existence of file /etc/kubernetes/pki/ca.crt
I0703 09:09:38.317634    2029 checks.go:439] validating if the connectivity type is via proxy or direct
I0703 09:09:38.317653    2029 join.go:427] [preflight] Discovering cluster-info
I0703 09:09:38.317704    2029 token.go:200] [discovery] Trying to connect to API Server "192.168.56.100:6443"
I0703 09:09:38.318179    2029 token.go:75] [discovery] Created cluster-info discovery client, requesting info from "https://192.168.56.100:6443"
I0703 09:09:38.319099    2029 token.go:83] [discovery] Failed to request cluster info, will try again: [Get https://192.168.56.100:6443/api/v1/namespaces/kube-public/configmaps/cluster-info: dial tcp 192.168.56.100:6443: connect: protocol not available]

发现提示protocol not available,然后我们使用curl https://192.168.56.100:6443/api/v1/namespaces/kube-public/configmaps/cluster-info,发现也确实是提示protocol not available。

从主节点curl,发现有以下提示:

curl: (60) Peer's Certificate issuer is not recognized.
More details here: http://curl.haxx.se/docs/sslcerts.html

curl performs SSL certificate verification by default, using a "bundle"
 of Certificate Authority (CA) public keys (CA certs). If the default
 bundle file isn't adequate, you can specify an alternate file
 using the --cacert option.
If this HTTPS server uses a certificate signed by a CA represented in
 the bundle, the certificate verification probably failed due to a
 problem with the certificate (it might be expired, or the name might
 not match the domain name in the URL).
If you'd like to turn off curl's verification of the certificate, use
 the -k (or --insecure) option.

但是!我们使用浏览器访问这个网址,发现是https链接的证书出现了问题!

2、处理证书问题

搜了一大堆资料,大致参考了以下:
https://www.cnblogs.com/hkgov/p/14959992.html
https://blog.csdn.net/u012375924/article/details/108832392

(1)处理方式1
将这一串追加到/etc/pki/tls/certs/ca-bundle.crt文件
在这里插入图片描述
(2)处理方式2
随便下载一个有效的证书,将该文件上传到目录/etc/pki/ca-trust/source/anchors/下,将文件的后缀名改为.crt, 然后执行命令update-ca-trust extract

再次使用join命令,发现还是不行。

3、重启

再次将主节点重启之后,发现,join命令竟然可以使用了。。。。

4、其他方法1

https://blog.csdn.net/axin_123456/article/details/128961219

可能的原因: 之前错误操作,

systemctl stop NetworkManager--临时关闭

systemctl disable NetworkManager --永久关闭网络管理命令

又重新做了如下操作:

systemctl start NetworkManager

systemctl start network.service --开启网络服务

5、其他方法2

#安装utpdate工具
yum -y install utp ntpdate

timedatectl set-timezone Asia/Shanghai # 设置系统时区为上海

#设置系统时间与网络时间同步
ntpdate cn.pool.ntp.org

#将系统时间写入硬件时间
hwclock --systohc

三、总结

就上面那几种方式……不知道哪一个生效了,最后都是重启主节点之后就好了。注意!只重启主节点即可,重启主节点+从节点仍然不好用。

不知道什么毛病……

要不是为了学习,才不会自己手贱装这玩意。。。

参考资料

https://www.cnblogs.com/hkgov/p/14959992.html
https://blog.csdn.net/u012375924/article/details/108832392

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/719511.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

传输控制协议 TCP

文章目录 一、TCP报文格式1.报头格式2.TCP最大段长度 MSS 二、TCP连接建立与释放1.连接建立:三次握手2.报文传输3.连接释放:四次挥手4.保持定时器与时间等待定时器 三、TCP差错重传1.字节流状态分类与滑动窗口(发送)① 滑动窗口两…

基于 RK3399+fpga 的 VME 总线控制器设计(一)总体设计

2.1 需求分析及技术指标 2.1.1 需求分析 VME 总线控制器需要实现数据传输、中断处理、测量显示等功能。同时还需 要具有操作系统、底层驱动程序以及功能接口等,以方便用户进行上层应用软件开 发及使用。 本课题需要实现 VME 控制器的国产化开发&#xff0…

mysql误操作数据如何恢复

在此之前还是强烈建议大家进行定时备份,不然数据量多的话真的会有点emo的,好啦进入正题 操作背景:服务器windows server2012 数据库MySQL8.0 本人情况很奇葩,之前是备份了目标表的转储sql,但是我不知道是什么时候备…

RabbitMQ的基本概念和七种队列模式

I. RabbitMQ的基本概念 1. 生产者/消费者 生产者(Producer) 消息的创建者。 负责创建和推送数据到消息服务器。 消费者(Consumer) 消息的接收方。 负责接收消息和处理数据。 2. 消息队列(Queue) 消息队列是RabbitMQ的内部对象,用于存储生产者的消息直到发送给消…

【手撕算法|动态规划系列No.2】leetcode面试题 08.01. 三步问题

个人主页:平行线也会相交 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 平行线也会相交 原创 收录于专栏【手撕算法系列专栏】【LeetCode】 🍔本专栏旨在提高自己算法能力的同时,记录一下自己的学习过程,希望…

linux入门练级篇 第二讲 基本指令2

🎈个人主页:🎈 :✨✨✨初阶牛✨✨✨ 🐻推荐专栏1: 🍔🍟🌯C语言初阶 🐻推荐专栏2: 🍔🍟🌯C语言进阶 🔑个人信条: 🌵知行合一 &#x1f…

MySQL Optimization Learning(一)

目录 一、MySQL性能监控 1、show profile 2、performance schema 2.1、MYSQL performance schema详解 3、show processlist 一、MySQL性能监控 MySQL官网 拖到首页最下方找到 MySQL Reference Manual ->cmd命令行 C:\Users\Administrator>mysql -uroot -proot …

vue vant Calendar日历定制

calendar文档 <template> ...<Calendar :min-date"start" :max-date"end":title"null" :show-mark"false" :show-subtitle"false" :show-confirm"false" :show-title"true":poppable"fa…

Mongodb 对于Sort排序能够支持的最大内存限制查看和修改

报错&#xff1a; Executor error during find command: OperationFailed: Sort operation used more than the maximum 33554432 bytes of RAM. Add an index, or specify a smaller limit. MongoDB Server对于Sort排序能够支持的最大内存限制查看&#xff1a; [rootdata…

MySQL8.0 创建用户、配置用户权限、添加外网访问

MySQL8.0 创建用户、配置用户权限、添加外网访问 添加用户、外网访问 在MySQL 8.0中&#xff0c;root用户的外网访问权限默认是被禁止的。要修改root用户的外网访问权限&#xff0c;您需要进行以下步骤&#xff1a; 连接到MySQL服务器。您可以使用MySQL命令行客户端或其他数据…

1.mac M1 Java 开发环境的安装与配置

1.首先我们打开谷歌浏览器复制下面的网址安装jdk&#xff1a; Java Download | Java 7, Java 8, Java 11, Java 13, Java 15, Java 17, Java 19 - Linux, Windows and macOShttps://www.azul.com/downloads/?packagejdk#zulu 2.我们翻到最下面去选择我们需要的版本&#xff…

第三代互联网(Web3.0)

第三代互联网&#xff0c;也被称为Web3.0&#xff0c;是互联网发展的新阶段。Web3.0是指一种基于人工智能、区块链、物联网等技术的新一代互联网。相对于Web2.0&#xff0c;Web3.0的特点是更加分布式、去中心化、安全、隐私保护、智能化和可信任。 Web3.0的主要特点包括&#…

vue3插槽

匿名插槽 父组件 <template><h1>插槽</h1><A> 我是匿名插槽 </A> </template><script setup>import { ref } from vue;import A from ./A.vue; </script><style></style>子组件 <template><div>&l…

FastDDS 源码剖析:DDS部分 - typesDomainParticipant分析

目录 types分析 DomainParticipant分析 DomainParticipant的主要作用 DomainParticipant实现的一些关键原理&#xff1a; 源码剖析 types分析 位于src/cpp/dds中的types.cpp文件和位于include/dds/core中的types.hpp文件是FastDDS库的核心实现的一部分。 hpp文件是声明null…

【链表OJ】链表分割

⭐️ 往期相关文章 &#x1f4ab;链接1&#xff1a;链表中倒数第k个结点(快慢指针问题) &#x1f4ab;链接2&#xff1a;leetcode 876.链表的中间结点(快慢指针问题) &#x1f4ab;链接3&#xff1a;leetcode 206.反转链表 &#x1f4ab;链接4&#xff1a;leetcode 203.移除链…

[Golang实战] sql建表,不用外键,多个表之间如何建立起联系?

问题描述 下面是我的建表语句&#xff0c;在其中我并没有使用到外键&#xff0c;去关联三个表&#xff0c;但是我发现三个表中具有隐式的关联关系 create database library; use library; DROP TABLE IF EXISTS user;CREATE TABLE user(id bigint(20) NOT NULL AUTO_INCREMEN…

Java基础-多线程JUC-线程池和自定义线程池

1. 线程池 主要核心原理 不推荐Executors创建没有上线的线程池&#xff0c;建议使用自定义的线程池&#xff1b; Java工具类创建线程池&#xff1b; public class demo16 {public static void main(String[] args) {/*** public static ExecutorService newCachedThreadPoo1() …

一款打击感超强的动作游戏《流星蝴蝶剑》

文章目录 玩法介绍1.介绍2.按键操作3.流星蝴蝶剑各种武器招式秘籍 游戏优点游戏缺点游戏停服的原因游戏后续发展常见的的游戏道具1.四种水晶2.四种包子3.多种属性加成道具 《流星蝴蝶剑》的游戏打击感分析1.什么是游戏打击感2.影响游戏打击感的经典要素3.几个体现打击感的镜头动…

国产自研GPT大语言模型|实在智能TARS

目录 前言 TARS名字由来 实在智能 TARS 应用演示 大模型RPA 大模型IDP 最后 前言 Chat-GPT问世以来&#xff0c;国内外知名公司纷纷加入到大模型的研发行列中&#xff0c;2023年无疑成为大模型发展元年。百度、谷歌等科技巨头百家争鸣&#xff0c;新锐科技公司也不甘…

成为自动化测试的7种技能

目录 前言&#xff1a; 1.自动化测试员技能——编程语言 设计框架 2.自动化测试员技能–出色的手动测试技能 人眼就是一切 某些测试只能手动完成 自动化测试可能包含漏洞 某些方案不适用于自动化测试 您对整个问题都有个想法 3.自动化测试员技能–自动化工具专业知识…