• (2022版)一套教程搞定k8s安装到实战 | TLS Bootstrap初始化流程


    视频来源: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字段进行解密:

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

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

    1. [root@k8s-node02 kubernetes]# openssl x509 -in /tmp/1 -noout -dates
    2. notBefore=Jun 21 12:58:00 2022 GMT
    3. notAfter=May 28 12:58:00 2122 GMT
    4. You have new mail in /var/spool/mail/root
    5. [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:主机名
  • 相关阅读:
    通过Forcebot压测实践简述“并发模式”与“RPS模式”两种模式的区别
    一文了解“字符集”
    c# 字符串格式化日期时间
    抖音获得抖音商品详情 API
    小满nestjs(第七章 RESTful 风格设计)
    Roson的Qt之旅#104 QML Image控件
    【Unity实战100例】Unity读取加载Gif动图的两种方式
    MS35774,高精度、低噪声的两相步进电机驱动芯片
    vue中的虚拟dom
    Python工程师Java之路(p)Module和Package
  • 原文地址:https://blog.csdn.net/guolianggsta/article/details/125452193