k8s踩坑记 - kubeadm join 之 token 失效
抛砖引玉
环境
- centos 7 amd64 两台
- kubernetes 1.10
伴随着k8s1.10版本的发布,前天先在一台机器上搭建了k8s单机版集群,即既是master,也是node,按照经验,将 kubeadm init 提示的 kubeadm join 记录下来,方便未来新增集群集工作节点(机器)时,可以直接复用,紧接着就部署dashboard、heapster、ElasticSearch、Redis、dotnet 微服务等等,一气呵成,集群状态良好,因为之前测试环境搞过k8s,呵呵 ...... 。过了两天公司购买的第二胎服务器到了,那么就顺其自然的在上面执行之前记录的 kubeadm join 脚本,结果如下:

看到这个提示信息,我完全100%地相信,node 已经加入集群,并且只要等一会儿,通过 kubectl get nodes 就可以看到 node is ready,嘿嘿
过一会儿,又过一会,再过一会儿 ...... ,可是

西天取经,历经九九八十一难
然后,开启重试模式,发扬程序员不掘不挠的传统精神:
kubectl resetkubectl join ......kubectl get nodes
进入重试死循环N次,耐性真好,哈哈。明明提示 This node has joined the cluster ,为什么实际情况是这样呢,难道这就是理想和现实的差距,其实这就是 坑,out了吧。我想了又想,看了又看,没有一点点错误、警告之类的信息,无从下手啊,肿么办呢,最后还是把关注点放在了kubelet上,于是开始查看kuberlet的日志:

看到了吧
error: failed to run Kubelet: failed to create kubelet:
misconfiguration: kubelet cgroup driver: "cgroupfs" is different from docker cgroup driver: "systemd"
原来这个小问题啊,哎。。。。。。,我又再一次相信了这个k8s的提示信息,然后开始修正bug了


信了你的邪哦,为什么 kubelet cgroup driver 和 docker cgroup driver 一模一样,刚刚,kubelet 日志里面不是。。。明明。。。却。。。,淡定,这可能是幻觉,好吧。到底什么是真的,什么是假的,能不能给一个准确的提示信息,既然也不是kubelet的问题,又是最新的版本,也没有资料可查,当下实在没辙了,那就去 kubernets#62776 提 Issues吧,于是乎,就这样下班了。。。。

第二天,第一件事情就是查看昨天提的问题是否有人回答了,结果看到被一个印度阿三给关闭了

哎,和昨天预料的结果一眼,好像有点诸葛了吧,嘿嘿,那还是靠自己吧,又想了又想,看了又看,真的是没有一点点防备啊,期间检查了 kubeadm、kubectl、kubelet,也查看来了各种配置;也想过是不是master提前安装的一些东西影响了,因为以前都是 kubeadm init 后,然后就马上 ·kubeadm join;还想过是不是环境的问题,因为之前的测试环境一直是Ubuntu 16.4,现在的主机环境是 CentOS 7。本想着今天上午,搞不定,就按照测试环境的步骤,重来来过,然后,还是不肯放弃(天生就是当程序员的料子啊,就是头有点冷,呵呵),于是从另外的角度去思考,怀疑是不是记录的 'kube join token=.... ',有问题啊(之前为什么没怀疑,是因为我是直接复制 kubeadm init 打印出来的原生脚本,而且测试环境一点问题都没有。),于是开始顺藤摸瓜,排查第一个参数 token,执行命令 kubeadm token list:

修成正果,立地成佛
真是抛开云雾见天明,不容易啊,众里寻她千百度,原来她在灯火阑珊处。。。。。哎,不去搞文学,可惜了,呵呵。
于是乎,通过 kubeadm create token 重新创建了一个 token,然后,重新执行 kubeadm join,再次查看 kubectl get nodes:

成功了,终于成功了,这是搞 kubernetes 以来,踩的最迷糊的一次坑,最后自己回答了自己的 kubernets#62776 ,随便也给kubernetes 提了一下建议,希望提示信息能够准确些,他们的一小步,就是我们的一大步啊。。。。。

普惠
默认情况下,通过 kubeadm create token 创建的 token ,过期时间是24小时,这就是为什么过来一天无法再次使用之前记录的 kube join 原生脚本的原因,也可以运行 kubeadm token create --ttl 0生成一个永不过期的 token,详情请参考:kubeadm-token,了解了原因才能够举一反三,带着思考学习k8s,才不会觉得乏味,希望把这个坑分享给大家,如果有什么疑问,或者想要交流的东西欢迎评论区留言,楼主会一一回复的哦。
如果你觉得本篇文章对您有帮助的话,感谢您的【推荐】,这将成为我继续写作的动力。
如果你对 kubernets 和 dotnet 感兴趣的话可以关注我,我会定期的在博客分享我的学习心得。
k8s踩坑记 - kubeadm join 之 token 失效的更多相关文章
- k8s踩坑记第1篇--rc无法创建
六一快乐!!! 什么是k8s,我不想解释,百度资料有很多,本系列只踩坑,不科普. 问题描述: 做Hello World的例子,结果get pods一直显示没有资源? 应用配置代码: apiVersio ...
- k8s踩坑记第2篇--3个IP折磨人的故事
例子来源于<Kubernetes实践指南>一书.问题依然没有解决,求助大神. 测试环境 Centos 7.0 docker 1.13.1 kubectl v1.5.2 etcd 3.2.1 ...
- djangorestframework+vue-cli+axios,为axios添加token作为headers踩坑记
情况是这样的,项目用的restful规范,后端用的django+djangorestframework,前端用的vue-cli框架+webpack,前端与后端交互用的axios,然后再用户登录之后,a ...
- IdentityServer 部署踩坑记
IdentityServer 部署踩坑记 Intro 周末终于部署了 IdentityServer 以及 IdentityServerAdmin 项目,踩了几个坑,在此记录分享一下. 部署架构 项目是 ...
- Spark踩坑记——从RDD看集群调度
[TOC] 前言 在Spark的使用中,性能的调优配置过程中,查阅了很多资料,之前自己总结过两篇小博文Spark踩坑记--初试和Spark踩坑记--数据库(Hbase+Mysql),第一篇概况的归纳了 ...
- vue踩坑记
vue踩坑记 易错点 语法好难啊qwq 不要把'data'写成'date' 在v-html/v-bind中使用vue变量时不需要加变量名 在非vue事件中使用vue中变量时需要加变量名 正确 < ...
- EOS踩坑记
[EOS踩坑记] 1.每个account只能更新自己的contract,即使两个account的秘钥相同,也不允许. 如下,使用alice的权限来更新james的contract.会返回 Missin ...
- Vue + TypeScript + Element 搭建简洁时尚的博客网站及踩坑记
前言 本文讲解如何在 Vue 项目中使用 TypeScript 来搭建并开发项目,并在此过程中踩过的坑 . TypeScript 具有类型系统,且是 JavaScript 的超集,TypeScript ...
- k8s采坑记 - 解决二进制安装环境下证书过期问题
前言 上一篇k8s采坑记 - 证书过期之kubeadm重新生成证书阐述了如何使用kubeadm解决k8s证书过期问题. 本篇阐述使用二进制安装的kubernetes环境,如何升级过期证书? k8s配置 ...
随机推荐
- clumsy模拟客户端网络差的场景的使用
1.为什么需要模拟客户端网络差的情况? a. 研发环境的网络配置一般较高,网络响应快,不容易出现网络故障,但是客户使用的网络环境千差万别,不排除使用过程中遇到网络故障的情况. b.程序有些时候是多线程 ...
- 强烈推荐!!!Fiddler抓取https设置详解(图文)
很多实用fiddler抓包,对于http来说不需太多纠结,随便设置下就能用,但是抓取https就死活抓不了, 诸如以下问题: creation of the root certificate was ...
- nvm配置
多版本安装方式 卸载已有的Node.js 下载nvm 在C盘创建目录dev 在dev目中中创建两个子目录nvm和nodejs 并且把nvm包解压进去nvm目录中 在install.cmd文件上面右键选 ...
- Java基础学习笔记四 Java基础语法
数组 数组的需求 现在需要统计某公司员工的工资情况,例如计算平均工资.最高工资等.假设该公司有50名员工,用前面所学的知识完成,那么程序首先需要声明50个变量来分别记住每位员工的工资,这样做会显得很麻 ...
- JavaScript(第十七天)【浏览器检测】
由于每个浏览器都具有自己独到的扩展,所以在开发阶段来判断浏览器是一个非常重要的步骤.虽然浏览器开发商在公共接口方面投入了很多精力,努力的去支持最常用的公共功能:但在现实中,浏览器之间的差异,以及不同浏 ...
- 用Python满足满足自己的“小虚荣”
首先声明,学习这个只是为了好玩,只是为了好玩,并不是想用这个弄虚作假,做一些不好的事情!一心想做技术人,自制自治! 我们有时候发布一篇日志,或者是一篇博文,总希望自己的浏览量能高点,这样看起来也倍有面 ...
- Beta冲刺NO.5
Beta冲刺 第五天 1. 昨天的困难 1.昨天的困难主要是在类的整理上,一些逻辑理不清,也有一些类写的太绝对了,扩展性就不那么好了,所以,昨天的困难就是在重构上. 页面结构太凌乱,之前没有统筹好具体 ...
- Archlinux无线联网教程
本人是学生党,故对于有线方式不甚了解,学校里一般使用mentohust用动态IP方式联网,或者直接连接wifi,这里介绍无线联网的一些方式,主要包括公共wifi和带有WEP或者WPA或者WPA2PSK ...
- Exception in thread "main" expected '<document start>', but found BlockMappingStart in 'reader', line 23, column 2: nimbus.host: "master"
平台:centos-6.3-i386 jdk-7u51 storm 0.9.1 python 2.6.6 hadoop 1.2.1 启动storm的时候,遇到这个问题,百度之后,看到大家的解决方案 ...
- 关于mule中使用jdbc时报No Suitable Driver found错误的问题
错误大概信息: Exception in thread "main" org.mule.module.launcher.DeploymentStartException: SQLE ...