kubeadm join原理

前言《举例》

  • join:将node加入集群

join的命令

$  kubeadm join xxxxxx:6443 --token a5gkfo.f1p9gsu68rxi14vx --discovery-token-ca-cert-hash sha256:9b826ab9655ae79c6398625b2cd52315d4f07bdae23d9d61604f29551757f328

join前检查

  • discovery-token-ca-cert-hash : 用于Node验证Master身份

  • 根据CA的公钥证书数据来计算出hash
$ openssl x509 -in /etc/kubernetes/pki/ca.crt -noout -pubkey | openssl rsa -pubin -outform DER 2>/dev/null | sha256sum | cut -d' ' -f1

这里的计算结果,跟join加入的discovery-token-ca-cert-hash后面接的结果是一样的,一致就可以说加入正确

  • token:用于Master验证Node身份

主要是在/etc/kubernetes/manifests/kube-apiserver.yaml中的--enable-bootstrap-token-auth=true设置了为true

  • token格式由两段组成,token-id.token-serect,查看有前缀的secret对象
$ kubectl get secret -n kube-system | grep bootstrap
----------------------
bootstrap-token-a5gkfo                           bootstrap.kubernetes.io/token         7         11d

  • 查看secret对象的具体内容
$ kubectl get secret/bootstrap-token-a5gkfo -n kube-system -o yaml
-----------------------
apiVersion: v1
data:
  auth-extra-groups: c3lzdGVtOmJvb3RzdHJhcHBlcnM6a3ViZWFkbTpkZWZhdWx0LW5vZGUtdG9rZW4=
  description: VGhlIGRlZmF1bHQgYm9vdHN0cmFwIHRva2VuIGdlbmVyYXRlZCBieSAna3ViZWFkbSBpbml0Jy4=
  expiration: MjAxOC0xMC0xM1QxMToxOToxOSswODowMA==
  token-id: YTVna2Zv
  token-secret: ZjFwOWdzdTY4cnhpMTR2eA==
  usage-bootstrap-authentication: dHJ1ZQ==
  usage-bootstrap-signing: dHJ1ZQ==
kind: Secret
metadata:
  creationTimestamp: 2018-10-12T03:19:19Z
  name: bootstrap-token-a5gkfo
  namespace: kube-system
  resourceVersion: "181"
  selfLink: /api/v1/namespaces/kube-system/secrets/bootstrap-token-a5gkfo
  uid: 9b3d556f-cdcd-11e8-9354-fa163e47331c
type: bootstrap.kubernetes.io/token

可以看到token-secret是一个base64编码的字符串,我们解码

$ echo ZjFwOWdzdTY4cnhpMTR2eA== | base64 -d
---------------------
f1p9gsu68rxi14vx

Bingo!

ParadigmSDKv3.init('f31e45e6e4a54a2ba32539ef6053b7ad',{ isDisableArticleFetch: true });ParadigmSDKv3.renderArticle('paradigm_render_content_append_id_1038',548,1038);

本文作者为olei,转载请注明。

kubernetes

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Python

使用python的email、smtplib、poplib模块收发邮件

https://blog.csdn.net/weixin_35955795/article/details/52881044

8200
来自专栏安恒信息

Hacking Team分析(二) 沙箱对抗分析

0x00背景 在Hacking Team泄露的文件中含有不少后门、木马的源码,其中就包含有一些反虚拟机反沙箱的代码, 如scout-win-master中就涉及...

53440
来自专栏黑泽君的专栏

day59_BOS项目_11

第一步:创建一个流程实例管理ProcessInstanceAction,提供list()方法,查询流程实例列表数据

13230
来自专栏小鄧子的技术博客专栏

【译】使用RxJava从多个数据源获取数据

试想,需要一些动态数据的时候,只要每次都请求网络就可以了。但是,更有效率的做法是,把联网得到的数据,缓存到磁盘或内存。

18320
来自专栏芋道源码1024

熔断器 Hystrix 源码解析 —— 执行结果缓存

本文主要基于 Hystrix 1.5.X 版本 1. 概述 2. 好处 3. Observable#defer(...) 4. AbstractCommand#...

39970
来自专栏FreeBuf

浅谈拒绝服务攻击的原理与防御(3)| 反射DDOS攻击利用代码

0×01 前言 之前发了一篇关于反射DDOS攻击原理以及反射资源扫描的文章,本来今天的这个应该并到那篇文章里,共称为反射DDOS攻击扫描与利用,但是我怕这样做会...

30790
来自专栏学习力

《Java从入门到放弃》框架入门篇:Struts2的拦截器基本语法

262110
来自专栏JackieZheng

RabbitMQ入门-从HelloWorld开始

从读者的反馈谈RabbitMQ 昨天发完《RabbitMQ入门-初识RabbitMQ》,我陆陆续续收到一些反馈。鉴于部分读者希望结合实例来讲 期待下篇详细,最好...

21590
来自专栏菩提树下的杨过

ZooKeeper 笔记(5) ACL(Access Control List)访问控制列表

zk做为分布式架构中的重要中间件,通常会在上面以节点的方式存储一些关键信息,默认情况下,所有应用都可以读写任何节点,在复杂的应用中,这不太安全,ZK通过ACL机...

88060
来自专栏十月梦想

原生node加密模块(crypto)

前面简单描述了第三方模块md5的加密,今天来了解一下,node原生API加密模块crypto

9720

扫码关注云+社区

领取腾讯云代金券