视频来源:B站《(2022版)最新、最全、最详细的Kubernetes(K8s)教程,从K8s安装到实战一套搞定》

一边学习一边整理老师的课程内容及试验笔记,并与大家分享,侵权即删,谢谢支持!

附上汇总贴:(2022版)一套教程搞定k8s安装到实战 | 汇总_COCOgsta的博客-CSDN博客


Kubelet启动过程

  1. 查找kubecofig文件,文件一般位于/etc/kubernetes/kubelet.kubeconfig
  1. 从kubeconfig文件中检索APIServer的URL和证书
  1. 然后去和APIServer进行交互

查看kubelet.kubeconfig证书有效期:

首先对kubelet.kubeconfig的
certificate-authority-data字段进行解密:

[root@k8s-node02 kubernetes]# echo "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUQ1RENDQXN5Z0F3SUJBZ0lVZUhHZEYwT2xMZC9qNTl0NVRYUm4zdE5GcEFBd0RRWUpLb1pJaHZjTkFRRUwKQlFBd2R6RUxNQWtHQTFVRUJoTUNRMDR4RURBT0JnTlZCQWdUQjBKbGFXcHBibWN4RURBT0JnTlZCQWNUQjBKbAphV3BwYm1jeEV6QVJCZ05WQkFvVENrdDFZbVZ5Ym1WMFpYTXhHakFZQmdOVkJBc1RFVXQxWW1WeWJtVjBaWE10CmJXRnVkV0ZzTVJNd0VRWURWUVFERXdwcmRXSmxjbTVsZEdWek1DQVhEVEl5TURZeU1URXlOVGd3TUZvWUR6SXgKTWpJd05USTRNVEkxT0RBd1dqQjNNUXN3Q1FZRFZRUUdFd0pEVGpFUU1BNEdBMVVFQ0JNSFFtVnBhbWx1WnpFUQpNQTRHQTFVRUJ4TUhRbVZwYW1sdVp6RVRNQkVHQTFVRUNoTUtTM1ZpWlhKdVpYUmxjekVhTUJnR0ExVUVDeE1SClMzVmlaWEp1WlhSbGN5MXRZVzUxWVd3eEV6QVJCZ05WQkFNVENtdDFZbVZ5Ym1WMFpYTXdnZ0VpTUEwR0NTcUcKU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRQy9kWDV6a3RLcmhXU2xhcVZxRTZDbWVhWXJ2ZVlwbUNUYQpnL21RSGxrRmcwNGlIUnBZazd4eGhHNEtsTDFrSk44VmpzYnN1Rkl0eTVGSHVWbnJOU2tiMlN2dWtxU2ZTdW56Ck96aEp5ZkNydlB5QnNiK3EvUWRRYUR3eFQvbExmRmExREJjZGhlRUxneWRGcTIxRkR4OVJqcnZYQnVWSWlsc2YKN3pIaHBITEd2SWhoVnRZVEFHa1BRZCtJdWovaVJiK2IwMGlJWllNWDFwV2RzcXhlQXM3QXJodWtnMUZwVE4zVApvR2xmVVFyYk1uSXh1cHBSTHliSWQ3dTNiUlJuNk5pOEFwcU9lTnFid2g5SWhyQjQreVg0dFdCejdmRWRXT1VSClE4b1Jwb2VzcGpmOGFxTWFHN0VZalV2Qm11eTJBTnZSMjJaR3dvUmJsbEk1VDBpMHBOTlpBZ01CQUFHalpqQmsKTUE0R0ExVWREd0VCL3dRRUF3SUJCakFTQmdOVkhSTUJBZjhFQ0RBR0FRSC9BZ0VDTUIwR0ExVWREZ1FXQkJRZgpXU1VEVHlBUHZrejNzVHR6enQ3OWJYYXlVVEFmQmdOVkhTTUVHREFXZ0JRZldTVURUeUFQdmt6M3NUdHp6dDc5CmJYYXlVVEFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBbU5SMkxSZHB3ZDlKZHpFL0NUT3JRc2Q2VnVuaDU5U1IKMG9LMkJNZ3NpaXZoNlFjaEJyQmNFTE5TZ29UdWpUcUVDWXZnR2c3NERjTCs0cC9XN3h4TTZ4cU5GbzUzNUpQegpYMWRaa3N2c0lFSUpKVmVXSVhrbHF3VlE4czRkdHVVeW41RTVsTnRJQ2QxT00zbHBXbFovNCtYYWxRMGxYR0JwCm52cW91WGxGL01jNUliUFdUZEEwaUNyL0tPaDZJb2FBVlh3Ry8vOU5sRXJWdWRJcmdSOFB5QUtrODJncGtEeVEKSW1JUHkyZ1Z1NkZRT0w4cjhkK1hLb2tVQ0YvSDJVVmZqT2VvYm1EVE53cGR3M0x0RVFkTysveU0wZ21ZWFVGQgo1QzVJNHBhVzc4dGIzNmU3YnRrS3paMEtJQnhxUk8zZy9FdmpFeEtMczI4T3RxNWUya2ZwOWc9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==" | base64 --decode >/tmp/1
[root@k8s-node02 kubernetes]# 

然后使用OpenSSL即可查看证书过期时间:

[root@k8s-node02 kubernetes]# openssl x509 -in /tmp/1 -noout -dates
notBefore=Jun 21 12:58:00 2022 GMT
notAfter=May 28 12:58:00 2122 GMT
You have new mail in /var/spool/mail/root
[root@k8s-node02 kubernetes]# 

TLS Bootstrapping初始化流程

TLS Bootstrapping官网文档:
https://kubernetes.io/docs/reference/command-line-tools-reference/kubelet-tls-bootstrapping/#initialization-process

  1. Kubelet自启动
  1. Kubelet查看kubelet.kubeconfig文件,假设没有这个文件
  1. Kubelet会查看本地的bootstrap-kubelet.kubeconfig
  1. Kubelet读取bootstrap-kubelet.kubeconfig文件,检索apiserver的url和一个token
  1. Kubelet连接apiserver,使用这个token进行认证ApiServer会识别token,apiserver会查看该tokenid对于的bootstrap的一个secret找到这个secret的一个字段,apiserver把这个token识别成一个username,名称是system:bootstrap:<token-id>,属于system:bootstrappers这个组,这个组具有申请csr的权限,该组的权限绑定在一个叫system:node-bootstrapper的clusterroleCSR:相当于一个申请表,可以拿着这个申请表去申请我们的证书
  1. 经过上面的认证,kubelet就有了一个创建和检索CSR的权限
  1. Kubelet为自己创建一个CSR,名称为kubernetes.io/kube-apiserver-client-kubelet
  1. CSR被允许有两种方式:K8s管理员使用kubectl手动的颁发证书如果配置了相关权限,kube-controller-manager会自动同意
  1. CSR被同意后,controller-manager创建kubelet的证书文件
  1. Controller-manager将证书更新至csr的status字段
  1. Kubelet从apiserver获取证书
  1. Kubelet从获取到的key和证书文件创建kubelet.kubeconfig
  1. Kubelet启动完成并正常工作
  1. 可选:如果配置了自动续期,kubelet会在证书文件过期的时候利用之前的kubeconfig文件去申请一个新的证书,相当于续约。
  1. 新的证书被同意或签发,取决于我们的配置Kubelet创建的CSR是属于一个O:system:nodesCN:system:nodes:主机名
Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐