{"id":8560,"date":"2022-05-24T11:55:08","date_gmt":"2022-05-24T03:55:08","guid":{"rendered":"https:\/\/blog.ywdevops.cn\/?p=8560"},"modified":"2022-05-24T16:31:15","modified_gmt":"2022-05-24T08:31:15","slug":"kubelet","status":"publish","type":"post","link":"https:\/\/blog.ywdevops.cn\/index.php\/2022\/05\/24\/kubelet\/","title":{"rendered":"kubelet\u521d\u59cb\u5316\u8fc7\u7a0b"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">\u5f53kubelet\u542f\u52a8\u540e\uff0c\u4f1a\u6267\u884c\u5982\u4e0b\u64cd\u4f5c\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>\u5bfb\u627ekubelet.kubeconfig\u6587\u4ef6<\/li><li>\u4ecekubelet.kubeconfig\u6587\u4ef6\u68c0\u7d22 API \u670d\u52a1\u5668\u7684 URL \u548c\u51ed\u636e\uff0c\u901a\u5e38\u662f TLS \u5bc6\u94a5\u548c\u7b7e\u540d\u8bc1\u4e66<\/li><li>\u5c1d\u8bd5\u4f7f\u7528\u51ed\u636e\u4e0e API \u670d\u52a1\u5668\u901a\u4fe1<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u5982\u679ckube-apiserver \u6210\u529f\u9a8c\u8bc1 kubelet \u7684\u51ed\u636e\uff0c\u4f1a\u5c06\u00a0kubelet \u89c6\u4e3a\u6709\u6548\u8282\u70b9\uff0c\u5e76\u5f00\u59cb\u4e3a\u5176\u5206\u914d pod\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u6ce8\uff1a\u4e0a\u8ff0\u7684\u524d\u63d0\u662f\u4e3b\u673a\u4e0a\u5df2\u7ecf\u5b58\u5728kubelet.kubeconfig\u6587\u4ef6\uff0c\u5e76\u4e14\u8bc1\u4e66\u5df2\u7531 kube-apiserver \u4fe1\u4efb\u7684\u8bc1\u4e66\u9881\u53d1\u673a\u6784 (CA) \u7b7e\u540d<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u4ee5\u4e8c\u8fdb\u5236\u5b89\u88c5k8s\u4e3a\u4f8b\u5b50<\/strong>\uff0c\u5982\u679c\u662f\u7b2c\u4e00\u6b21\u542f\u52a8kubelet\uff0c\u521d\u59cb\u5316\u6d41\u7a0b\u5982\u4e0b\uff1a<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">1\u3001kubelet\u542f\u52a8<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">2\u3001kubelet\u53d1\u73b0\u627e\u4e0d\u5230kubelet.kubeconfig\u6587\u4ef6<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">3\u3001kubelet\u641c\u7d22\u5e76\u627e\u5230bootstrap.kubeconfig\u6587\u4ef6<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">4\u3001\u8bfb\u53d6bootstrap.kubeconfig\u6587\u4ef6\uff0c\u68c0\u7d22apiserver\u670d\u52a1\u5668\u7684URL\u548ctoken\uff0c\u5982\u56fe\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"708\" height=\"407\" src=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/05\/3-8.png\" alt=\"\" class=\"wp-image-8562\" srcset=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/05\/3-8.png 708w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/05\/3-8-300x172.png 300w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/05\/3-8-600x345.png 600w\" sizes=\"auto, (max-width: 708px) 100vw, 708px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">5\u3001kubelet \u8fde\u63a5\u5230 API \u670d\u52a1\u5668\uff0c\u4f7f\u7528\u4ee4\u724c\u8fdb\u884c\u8eab\u4efd\u9a8c\u8bc1<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">6\u3001kube-apiserver\u63a5\u6536\u5230\u8bf7\u6c42\u7684\u7528\u6237\u540d\u548ctoken\u540e \uff0c\u4e0e\u81ea\u8eab\u542f\u52a8\u65f6\u6307\u5b9a\u7684token\u6587\u4ef6\u505a\u6bd4\u5bf9(&#8211;token-auth-file=\/opt\/kubernetes\/cfg\/token.csv)\uff0c\u901a\u8fc7\u67e5\u770b\u7528\u6237kubelet-bootstrap\u662f\u5426\u88ab\u6388\u6743\u8bf7\u6c42\u8bc1\u4e66<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5728\u4e8c\u8fdb\u5236\u5b89\u88c5\u7ae0\u8282\uff0c\u6267\u884c\u8fc7\u4e00\u6761\u6388\u6743\u547d\u4ee4\uff0c\u5982\u4e0b\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>kubectl create clusterrolebinding kubelet-bootstrap --clusterrole=system:node-bootstrapper --user=kubelet-bootstrap<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u6b64\u547d\u4ee4\u662f\u521b\u5efa\u4e00\u4e2a\u96c6\u7fa4\u89d2\u8272\u7ed1\u5b9a\u6587\u4ef6kubelet-bootstrap\uff0c\u5e76\u5c06\u96c6\u7fa4\u89d2\u8272system:node-bootstrapper\u7ed1\u5b9a\u5230\u7528\u6237kubelet-bootstrap\uff0c\u6b64\u7528\u6237\u4e5f\u5177\u5907\u4e86system:node-bootstrapper\u7684\u6743\u9650<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u67e5\u770b\u96c6\u7fa4\u89d2\u8272system:node-bootstrapper\u53ef\u4ee5\u770b\u5230\u6b64\u89d2\u8272\u5177\u5907\u8bc1\u4e66\u7533\u8bf7\u7b49\u6743\u9650\uff0c\u5982\u56fe\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"709\" height=\"579\" src=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/05\/4-5.png\" alt=\"\" class=\"wp-image-8566\" srcset=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/05\/4-5.png 709w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/05\/4-5-300x245.png 300w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/05\/4-5-600x490.png 600w\" sizes=\"auto, (max-width: 709px) 100vw, 709px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">7\u3001kubelet \u73b0\u5728\u62e5\u6709\u6709\u9650\u7684\u51ed\u636e\u6765\u521b\u5efa\u548c\u68c0\u7d22\u8bc1\u4e66\u7b7e\u540d\u8bf7\u6c42 (CSR)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">8\u3001kubelet \u4e3a\u81ea\u5df1\u521b\u5efa\u4e00\u4e2a CSR\uff0c\u5e76\u5c06 signerName \u8bbe\u7f6e\u4e3a<code>kubernetes.io\/kube-apiserver-client-kubelet<\/code>\uff0c\u5982\u56fe\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"707\" height=\"295\" src=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/05\/8-3.png\" alt=\"\" class=\"wp-image-8569\" srcset=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/05\/8-3.png 707w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/05\/8-3-300x125.png 300w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/05\/8-3-600x250.png 600w\" sizes=\"auto, (max-width: 707px) 100vw, 707px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">9\u3001CSR \u901a\u8fc7\u4ee5\u4e0b\u4e24\u79cd\u65b9\u5f0f\u4e4b\u4e00\u83b7\u5f97\u6279\u51c6\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>\u5982\u679c\u914d\u7f6e\u4e86\u81ea\u52a8\u6279\u51c6\uff0c\u90a3\u4e48kube-controller-manager\u4f1a\u81ea\u52a8\u6279\u51c6CSR<\/li><li>\u5982\u679c\u6ca1\u6709\u914d\u7f6e\uff0c\u9700\u8981\u624b\u52a8\u6267\u884c\u547d\u4ee4\u6279\u51c6(kubectl certificate approve)<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">10\u3001\u4e3a kubelet \u521b\u5efa\u8bc1\u4e66\uff0c\u9881\u53d1\u7ed9kubelet<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">11\u3001kubelet \u83b7\u5f97\u8be5\u8bc1\u4e66\uff0c\u521b\u5efa\u4e00\u4e2a\u5408\u9002\u7684\u00a0<code>kubeconfig<\/code>\uff0c\u5176\u4e2d\u5305\u542b\u5bc6\u94a5\u548c\u5df2\u7b7e\u540d\u7684\u8bc1\u4e66<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">12\u3001kubelet \u5f00\u59cb\u6b63\u5e38\u64cd\u4f5c<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5f53\u6210\u529f\u7b7e\u53d1\u8bc1\u4e66\u540e\uff0c\u76ee\u6807\u8282\u70b9\u7684 kubelet \u4f1a\u5c06\u8bc1\u4e66\u5199\u5165\u5230 &#8211;cert-dir= \u9009\u9879\u6307\u5b9a\u7684\u76ee\u5f55\u4e2d\uff0c\u5982\u679c\u4e0d\u505a\u5176\u4f59\u8bbe\u7f6e\uff0c\u6b64\u76ee\u5f55\u4e0b\u5e94\u8be5\u751f\u62104\u4e2a\u6587\u4ef6\uff0c\u5982\u56fe\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"706\" height=\"218\" src=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/05\/10-2.png\" alt=\"\" class=\"wp-image-8573\" srcset=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/05\/10-2.png 706w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/05\/10-2-300x93.png 300w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/05\/10-2-600x185.png 600w\" sizes=\"auto, (max-width: 706px) 100vw, 706px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\"><li>kubelet.client\uff1a\u4e0eapiserver\u901a\u4fe1\u4f7f\u7528\u4f7f\u7528\u7684\u8bc1\u4e66<\/li><li>kubelet.crt\uff1akubelet\u670d\u52a1\u7aef\u7684\u81ea\u7b7eCA\u8bc1\u4e66\uff0c\u72ec\u7acb\u4e8eapiserver CA\u4e4b\u5916\uff0c\u88ab\u7528\u4e8ekubelet server(10250)\u505a\u9274\u6743\u4f7f\u7528\uff0c\u6b64\u8bc1\u4e66\u5220\u9664\u540e\u5c06\u4f1a\u91cd\u65b0\u751f\u6210\uff0c\u968f\u7740kubelet\u7684\u542f\u52a8\u81ea\u52a8\u751f\u6210\uff0c\u4e0eapiserver\u65e0\u5173<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u6279\u51c6CSR\u8bf7\u6c42\uff1a<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e0a\u8ff0\u7b2c9\u6b65\uff0c\u6279\u51c6CSR\u8bf7\u6c42\u5206\u4e3a\u624b\u52a8\u6279\u51c6\u548c\u81ea\u52a8\u6279\u51c6\uff0c\u81ea\u52a8\u6279\u51c6\u9700\u8981\u901a\u8fc7RBAC\u6388\u6743\u65b9\u5f0f\u5b8c\u6210\uff0c\u5176\u4e2d\u6709\u4e24\u7ec4\u4e0d\u540c\u6743\u9650\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>nodeclient\uff1a\u4e3b\u8981\u7528\u6765\u7b2c\u4e00\u6b21\u8bf7\u6c42api-server\u7533\u8bf7\u8bc1\u4e66<\/li><li>selfnodeclient\uff1a\u9002\u7528\u4e8e\u5df2\u7ecf\u5728\u96c6\u7fa4\u4e2d\u7684\u8282\u70b9\uff0c\u4f46\u9700\u8981\u66f4\u65b0\u8282\u70b9\u81ea\u8eab\u7684\u5ba2\u6237\u7aef\u8bc1\u4e66<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">1\u3001\u9996\u6b21\u542f\u52a8kubelet\uff0c\u9700\u8981\u53d1\u8d77CSR\u8bf7\u6c42\uff0c\u5e76\u63a5\u6536\u65b0\u8bc1\u4e66\uff0c\u9700\u8981\u521b\u5efa\u4e00\u4e2aclusterrolebinding \uff0c\u5c06\u8282\u70b9\u6240\u5c5e\u7684\u7ec4\u7ed1\u5b9a\u5230\u96c6\u7fa4\u89d2\u8272system:certificates.k8s.io:certificatesigningrequests:nodeclient(1.18\u7248\u672c\u540e\u81ea\u5e26)\uff0c\u547d\u4ee4\u5982\u4e0b\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>kubectl create clusterrolebinding node-client-auto-approve-csr  --clusterrole=system:certificates.k8s.io:certificatesigningrequests:nodeclient  --group=system:kubelet-bootstrap<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u6267\u884c\u5b8c\u6210\u540e\uff0c\u5f53\u6709\u65b0\u7684kubelet\u542f\u52a8\u540e\uff0c\u5c06\u4f1a\u81ea\u52a8\u6279\u51c6\u52a0\u5165\u96c6\u7fa4\uff0c\u5e76\u9881\u53d1\u8bc1\u4e66<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">2\u3001\u8981\u4f7f kubelet \u80fd\u591f\u66f4\u65b0\u5176\u81ea\u5df1\u7684\u5ba2\u6237\u7aef\u8bc1\u4e66\uff0c\u9700\u521b\u5efa\u4e00\u4e2aClusterRoleBinding\uff0c\u5c06\u529f\u80fd\u9f50\u5168\u7684\u8282\u70b9\u6240\u5c5e\u7684\u7ec4system:nodes\u7ed1\u5b9a\u5230ClusterRole\u540dsystem:certificates.k8s.io:certificatesigningrequests:selfnodeclient\uff0c\u5982\u4e0b\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>kubectl create clusterrolebinding auto-approve-renewals-for-nodes  --clusterrole=system:certificates.k8s.io:certificatesigningrequests:selfnodeclient --group=system:nodes<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">kubelet.client\u8bc1\u4e66\u7684\u6709\u6548\u671f\u4e3a5\u5e74\uff0c\u53ef\u901a\u8fc7\u5982\u4e0b\u547d\u4ee4\u67e5\u770b\uff0c\u5982\u56fe\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"706\" height=\"93\" src=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/05\/11-1.png\" alt=\"\" class=\"wp-image-8584\" srcset=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/05\/11-1.png 706w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/05\/11-1-300x40.png 300w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/05\/11-1-600x79.png 600w\" sizes=\"auto, (max-width: 706px) 100vw, 706px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">kubelet.crt\u8bc1\u4e66\u6709\u6548\u671f\u4e3a1\u5e74\uff0c\u5982\u56fe\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"705\" height=\"78\" src=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/05\/1-7.png\" alt=\"\" class=\"wp-image-8587\" srcset=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/05\/1-7.png 705w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/05\/1-7-300x33.png 300w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/05\/1-7-600x66.png 600w\" sizes=\"auto, (max-width: 705px) 100vw, 705px\" \/><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>\u5f53kubelet\u542f\u52a8\u540e\uff0c\u4f1a\u6267\u884c\u5982\u4e0b\u64cd\u4f5c\uff1a \u5bfb\u627ekubelet.kubeconfig\u6587\u4ef6 \u4ecekubelet.ku [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":8571,"comment_status":"open","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[93,23],"tags":[],"class_list":["post-8560","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-kubernetes","category-rong"],"blocksy_meta":{"styles_descriptor":{"styles":{"desktop":"","tablet":"","mobile":""},"google_fonts":[],"version":8}},"_links":{"self":[{"href":"https:\/\/blog.ywdevops.cn\/index.php\/wp-json\/wp\/v2\/posts\/8560","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.ywdevops.cn\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.ywdevops.cn\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.ywdevops.cn\/index.php\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.ywdevops.cn\/index.php\/wp-json\/wp\/v2\/comments?post=8560"}],"version-history":[{"count":21,"href":"https:\/\/blog.ywdevops.cn\/index.php\/wp-json\/wp\/v2\/posts\/8560\/revisions"}],"predecessor-version":[{"id":8588,"href":"https:\/\/blog.ywdevops.cn\/index.php\/wp-json\/wp\/v2\/posts\/8560\/revisions\/8588"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.ywdevops.cn\/index.php\/wp-json\/wp\/v2\/media\/8571"}],"wp:attachment":[{"href":"https:\/\/blog.ywdevops.cn\/index.php\/wp-json\/wp\/v2\/media?parent=8560"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.ywdevops.cn\/index.php\/wp-json\/wp\/v2\/categories?post=8560"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.ywdevops.cn\/index.php\/wp-json\/wp\/v2\/tags?post=8560"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}