抛砖引玉

环境

  • 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,嘿嘿

过一会儿,又过一会,再过一会儿 ...... ,可是

西天取经,历经九九八十一难

然后,开启重试模式,发扬程序员不掘不挠的传统精神:

  1. kubectl reset
  2. kubectl join ......
  3. 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 driverdocker cgroup driver 一模一样,刚刚,kubelet 日志里面不是。。。明明。。。却。。。,淡定,这可能是幻觉,好吧。到底什么是真的,什么是假的,能不能给一个准确的提示信息,既然也不是kubelet的问题,又是最新的版本,也没有资料可查,当下实在没辙了,那就去 kubernets#62776Issues吧,于是乎,就这样下班了。。。。

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

哎,和昨天预料的结果一眼,好像有点诸葛了吧,嘿嘿,那还是靠自己吧,又想了又想,看了又看,真的是没有一点点防备啊,期间检查了 kubeadmkubectlkubelet,也查看来了各种配置;也想过是不是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 失效的更多相关文章

  1. k8s踩坑记第1篇--rc无法创建

    六一快乐!!! 什么是k8s,我不想解释,百度资料有很多,本系列只踩坑,不科普. 问题描述: 做Hello World的例子,结果get pods一直显示没有资源? 应用配置代码: apiVersio ...

  2. k8s踩坑记第2篇--3个IP折磨人的故事

    例子来源于<Kubernetes实践指南>一书.问题依然没有解决,求助大神. 测试环境 Centos 7.0 docker 1.13.1 kubectl v1.5.2 etcd 3.2.1 ...

  3. djangorestframework+vue-cli+axios,为axios添加token作为headers踩坑记

    情况是这样的,项目用的restful规范,后端用的django+djangorestframework,前端用的vue-cli框架+webpack,前端与后端交互用的axios,然后再用户登录之后,a ...

  4. IdentityServer 部署踩坑记

    IdentityServer 部署踩坑记 Intro 周末终于部署了 IdentityServer 以及 IdentityServerAdmin 项目,踩了几个坑,在此记录分享一下. 部署架构 项目是 ...

  5. Spark踩坑记——从RDD看集群调度

    [TOC] 前言 在Spark的使用中,性能的调优配置过程中,查阅了很多资料,之前自己总结过两篇小博文Spark踩坑记--初试和Spark踩坑记--数据库(Hbase+Mysql),第一篇概况的归纳了 ...

  6. vue踩坑记

    vue踩坑记 易错点 语法好难啊qwq 不要把'data'写成'date' 在v-html/v-bind中使用vue变量时不需要加变量名 在非vue事件中使用vue中变量时需要加变量名 正确 < ...

  7. EOS踩坑记

    [EOS踩坑记] 1.每个account只能更新自己的contract,即使两个account的秘钥相同,也不允许. 如下,使用alice的权限来更新james的contract.会返回 Missin ...

  8. Vue + TypeScript + Element 搭建简洁时尚的博客网站及踩坑记

    前言 本文讲解如何在 Vue 项目中使用 TypeScript 来搭建并开发项目,并在此过程中踩过的坑 . TypeScript 具有类型系统,且是 JavaScript 的超集,TypeScript ...

  9. k8s采坑记 - 解决二进制安装环境下证书过期问题

    前言 上一篇k8s采坑记 - 证书过期之kubeadm重新生成证书阐述了如何使用kubeadm解决k8s证书过期问题. 本篇阐述使用二进制安装的kubernetes环境,如何升级过期证书? k8s配置 ...

随机推荐

  1. android中shape属性大全

    出处:http://kofi1122.blog.51cto.com/2815761/521605

  2. 微信公众号支付JSAPI网页,total_fee错误不正确,header重定向参数丢失,无法获取订单号和金额解决

    微信公众号支付官方demo错误, 公众号支付只能用在微信里,也就是微信内部浏览器. 1.到WxPayHubHelper.php文件 JsApi_pub()类下createOauthUrlForCode ...

  3. webSocket通讯

    1.使用facebook第三方SRWebSocket进行websocket通讯. pod 'SocketRocket' 2.通讯地址: ws://192.168.1.128:18882/ws 注意:s ...

  4. 笔试常考--浏览器输入一个URL点击回车之后发生了什么

    解析URL:浏览器首先对拿到的URL进行识别,抽取出域名字段. DNS解析: 查询浏览器缓存(浏览器会缓存之前拿到的DNS 2-30分钟时间),如果没有找到, 检查系统缓存,检查hosts文件,这个文 ...

  5. C语言-第一次作业

    题目6-1 计算两数的和与差 1.设计思路 (1)主要描述题目算法 第一步:看主函数知道程序输入浮点型变量a,b,通过函数计算输出和与差. 第二步:函数部分将a赋值op1,b赋值op2,&su ...

  6. HTML5的新的结构元素介绍

    HTML5的新的结构元素介绍 一.HTML5与HTML4的区别 1. 取消了一些过时的HTML4的标签 其中包括纯粹显示效果的标记,如<font>和<center>,它们已经被 ...

  7. Django 分类标签查找

    from django.conf.urls import url from django.contrib import admin from blog.views import index,stude ...

  8. Raid 5数据恢复原理以及raid 5数据恢复实际操作案例

    Raid 5数据恢复算法原理 要理解 raid 5数据恢复原理首先要先认识raid5,"分布式奇偶校验的独立磁盘结构"也就是我们称之为的raid 5数据恢复有一个概念需要理解,也就 ...

  9. 15-TypeScript策略模式

    在前面的简单工厂模式中,通常将每个类.接口定义到不同的文件中.在面向对象开发思想中有一个重要的原则就是封装变化点,在实际操作过程中, 通常被调用方的代码不要去更改,而是增加,这是面向对象的开闭原则.在 ...

  10. Linux - IDA - 安装 ( 带F5功能 )

    Linux - IDA - 安装 ( 带F5功能 ) 0x00 前言 最近在熟悉deepin系统,想着把逆向的一些软件也迁移过去,但像ida,Ollydbg这些工具一般都是在windows下使用,所以 ...