Kubeadm: рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдХреНрдпреВрдмрд▓реЗрдЯ рд╕реЗрд╡рд╛рд░рдд рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 9 рдирд╡ре░ 2018  ┬╖  38рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: kubernetes/kubeadm

рдХреНрдпрд╛ рдпрд╣ рдмрдЧ рд░рд┐рдкреЛрд░реНрдЯ рдпрд╛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ?

/ рддрд░рд╣ рдмрдЧ

рдореИрдЯреНрд░рд┐рдХреНрд╕-рд╕рд░реНрд╡рд░ рдкрд░ рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рд▓рд┐рдП kubeadm рдкрдХреНрд╖ рдЦреЛрд▓рдирд╛

рд╕рдВрд╕реНрдХрд░рдгреЛрдВ

$ kubeadm version
kubeadm version: &version.Info{Major:"1", Minor:"12", GitVersion:"v1.12.1", GitCommit:"4ed3216f3ec431b140b1d899130a69fc671678f4", GitTreeState:"clean", BuildDate:"2018-10-05T16:43:08Z", GoVersion:"go1.10.4", Compiler:"gc", Platform:"linux/amd64"}

рдкрд░реНрдпрд╛рд╡рд░рдг :

  • рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рд╕рдВрд╕реНрдХрд░рдг ( kubectl version ):
$ kubectl version
Client Version: version.Info{Major:"1", Minor:"12", GitVersion:"v1.12.1", GitCommit:"4ed3216f3ec431b140b1d899130a69fc671678f4", GitTreeState:"clean", BuildDate:"2018-10-05T16:46:06Z", GoVersion:"go1.10.4", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"12", GitVersion:"v1.12.1", GitCommit:"4ed3216f3ec431b140b1d899130a69fc671678f4", GitTreeState:"clean", BuildDate:"2018-10-05T16:36:14Z", GoVersion:"go1.10.4", Compiler:"gc", Platform:"linux/amd64"}
  • рдХреНрд▓рд╛рдЙрдб рдкреНрд░рджрд╛рддрд╛ рдпрд╛ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди :
    рдХреЛрдИ рднреА
  • OS (рдЙрджрд╛ / etc / os-release):
    рдХреЛрдИ рднреА
  • рдХрд░реНрдиреЗрд▓ (рдЬреИрд╕реЗ uname -a ):
$ uname -a
Linux ip-172-31-1-118 4.15.0-1023-aws #23-Ubuntu SMP Mon Sep 24 16:31:06 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
  • рдЕрдиреНрдп :

рдХреНрдпрд╛ рд╣реБрдЖ?

kubeadm рдХреЗ рддрд╣рдд рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдмрдирд╛рддрд╛ рд╣реИ /var/lib/kubelet/pki/kubelet.* рдХреЗ рддрд╣рдд рдПрдХ рд╕реЗ рдПрдХ рдЕрд▓рдЧ рд╕реАрдП рдХреЗ рд╕рд╛рде рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд┐рдП /etc/kubernetes/pki/ca.pem

рдХреНрдпрд╛ рд╣реЛрдиреЗ рдХреА рдЙрдореНрдореАрдж рдереА?

рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдореЗрдЯреНрд░рд┐рдХреНрд╕-рд╕рд░реНрд╡рд░ рдЬреИрд╕реЗ рдХреБрдЫ рдРрдк рдПрдХ рд╕реБрд░рдХреНрд╖рд┐рдд рдХреНрдпреВрдмрд▓реЗрдЯ рд╕реЗ рдЖрдВрдХрдбрд╝реЗ рдПрдХрддреНрд░ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдХреНрдпреВрд▓реЗрдЯ рдореЗрдВ рдХреЗ 8 рдорд╛рд╕реНрдЯрд░ (рдПрд╕) рдХреЗ рдПрдХ рдЕрд▓рдЧ рд╕реАрдП рджреНрд╡рд╛рд░рд╛ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд┐рдП рдЧрдП рд╕реАрдЯреНрд╕ рд╣реИрдВред

рддреНрд░реБрдЯрд┐ рдирдореВрдирд╛:

E1108 23:49:32.090084       1 manager.go:102] unable to fully collect metrics: [unable to fully scrape metrics from source kubelet_summary:ip-x-x-x-x: unable to fetch metrics from Kubelet ip-x-x-x-x (ip-x-x-x-x): Get https://ip-x-x-x-x:10250/stats/summary/: x509: certificate signed by unknown authority, unable to fully scrape metrics from source kubelet_summary:ip-x-x-x-x: unable to fetch metrics from Kubelet ip-x-x-x-x (ip-x-x-x-x): Get https://ip-x-x-x-x:10250/stats/summary/: x509: certificate is valid for x.x.x.x not ip-x-x-x-x]

рдЗрд╕реЗ рдХреИрд╕реЗ рдкреБрди: рдкреЗрд╢ рдХрд░реЗрдВ (рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдиреНрдпреВрдирддрдо рдФрд░ рдареАрдХ рд╣реИ)?

рдЪрд▓рд╛рдиреЗ рдкрд░ рдореИрдЯреНрд░рд┐рдХреНрд╕-рд╕рд░реНрд╡рд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ:

$ kubectl -n kube- рд╕рд┐рд╕реНрдЯрдо рд▓реЙрдЧ

рд╣рдореЗрдВ рдХреБрдЫ рдФрд░ рдЬрд╛рдирдирд╛ рдЪрд╛рд╣рд┐рдП?

рдХреБрдЫ рдФрд░ рдкреГрд╖реНрдарднреВрдорд┐ рдпрд╣рд╛рдБ

рд╡рд╣рд╛рдБ рднреА рдХрджрдо рд╣реИ рдХрд┐ рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреАрдЫрд╛ рдХрд┐рдпрд╛ред


рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: neolit123

рдпрд╣рд╛рдБ рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рд╕рд░реНрд╡рд┐рдВрдЧ рд╕рд░реНрдЯрд┐рдлрд┐рдХреЗрдЯ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕реНрд╡-рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рд╣реИ:
рдкреНрд░рд▓реЗрдЦрди рдЕрджреНрдпрддрди рдХреЗ рд▓рд┐рдП https://github.com/kubernetes/website/pull/27071 рджреЗрдЦреЗрдВред

aresecurity help wanted kinbug kinfeature lifecyclfrozen prioritimportant-longterm

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╕рд╛рд░рд╛рдВрд╢рд┐рдд рдХрд░рдиреЗ рджреЗрддрд╛ рд╣реИ:

рдЬреИрд╕рд╛ рдХрд┐ @anitgandhi рджреНрд╡рд╛рд░рд╛ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рд╣реИ:
https://github.com/kubernetes/kubeadm/issues/1223#issuecomment -4545725777

рдпрд╣рд╛рдБ kubeadm рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рд╣рдо рдХреНрдпреВрдмрд▓реЗрдЯ рдореЗрдВ рдЭрдВрдбреЗ рдХреЗ рдПрдХ рдЬреЛрдбрд╝реЗ рдХреЛ рдкрд╛рд░рд┐рдд рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ:

--tls-cert-file=<some-path>/kubelet.crt
--tls-private-key-file=<some-path>/kubelet.key

рдЗрди рдЭрдВрдбреЛрдВ рдХреЗ рдмрд┐рдирд╛ рдпрд╣ рдХреНрдпреВрдмрд▓реЗрдЯ рд╕реНрд╡-рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЪреВрдХ рдЬрд╛рддрд╛ рд╣реИ, рдЬрдм рдпрд╣ рдкрд╣рд▓реА рдмрд╛рд░ рдЪрд▓рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рд╕реЗрд╡рд╛ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рд╣реИ, рдЬрд┐рд╕реЗ рдЗрд╕рдХреЗ рд╕рд╛рде рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

sudo openssl verify -verbose -CAfile /var/lib/kubelet/pki/kubelet.crt /var/lib/kubelet/pki/kubelet.crt

рдХреНрд▓рд╕реНрдЯрд░ CA ( /etc/kubernetes/ca.crt ) рджреНрд╡рд╛рд░рд╛ рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХреЗ рдмрдЬрд╛рдп рдПрдХ рд╕реНрд╡-рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдХреЗ рд╕рд╛рде, рдореИрдЯреНрд░рд┐рдХреНрд╕ рд╕рд░реНрд╡рд░ рдХреА рддрд░рд╣ рддреИрдирд╛рддреА рдХреНрдпреВрдмрд▓реЗрдЯ рдХреЛ рдкрд░рд┐рдорд╛рд░реНрдЬрди рдирд╣реАрдВ рдХрд░ рд╕рдХрддреА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╕реНрд╡-рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдкреНрд░рдорд╛рдгрдкрддреНрд░ SAN рдореЗрдВ рдХреЗрд╡рд▓ DNS:hostname ред

рд╕рдВрднрд╡ рд╕рдорд╛рдзрд╛рди:
рдП) рдПрдХ рдирдП kubelet.crt/key рдЬреЛрдбрд╝реА рдХреЗ рдЧрд╛рдпрди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ, рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ /var/lib/kubelet/pki рддрд╣рдд рдФрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рдХреНрдпреВрдмрд▓реЗрдЯ рдЭрдВрдбреЗ --tls-cert-file , --tls-private-key-file ред

рдмреА) рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЗрд╕реЗ рдЗрд╕реА рддрд░рд╣ рд╕реЗ рдбрд┐рдорд╛рдВрдб рдкрд░ рд╕рдХреНрд╖рдо рдХрд┐рдпрд╛ рдЬрд╛рдП @ raravena80 рдиреЗ рдЗрд╕реЗ рдпрд╣рд╛рдВ рдХреИрд╕реЗ рдХрд┐рдпрд╛: https://stackoverflow.com/questions/53212149/x509-certificate-signed-by-unknown-authority-kubeadm/53218524#53218524
рд╕рд┐рд╡рд╛рдп Kubernetes CSRs / kubeadm рдХрдорд╛рдВрдб рдХреЗ рдЙрдкрдпреЛрдЧ рд╕реЗред

рдЧ) @alexbrand рджреНрд╡рд╛рд░рд╛ рдЯрд┐рдкреНрдкрдгреА рдХреЗ рд░реВрдк рдореЗрдВ

рдпрджрд┐ рд╕рдВрднрд╡ рд╣реЛ рддреЛ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рд╕рд░реНрд╡рд┐рдВрдЧ рд╕рд░реНрдЯрд┐рдлрд┐рдХреЗрдЯ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз / рдШреБрдорд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрдпреВрдмреНрд▓реЗрдЯ рдореЗрдВ рдирд┐рд░реНрдорд┐рдд рдЯреАрдПрд▓рдПрд╕ рдмреВрдЯрд╕реНрдЯреНрд░реИрдкрд┐рдВрдЧ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдбреА)?

@ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ / рд╕рд┐рдЧ-рдХреНрд▓рд╕реНрдЯрд░-рдЬреАрд╡рдирдЪрдХреНрд░
рдореБрдЭреЗ рдпрд╣ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдЧ / рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рдмреАрдЪ рдЕрдВрддрд░рд┐рдХреНрд╖ рдореЗрдВ рд▓рдЧрддрд╛ рд╣реИред

рдпрд╣ рднреА рджреЗрдЦреЗрдВ:
https://github.com/kubernetes/community/pull/602/files

рд╕рднреА 38 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

@ raravena80 рдореИрдВ /var/lib/kubelet/pki/ рддрд╣рдд kubeadm рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдП рдЧрдП рдХрд┐рд╕реА рднреА рдкреНрд░рдорд╛рдг рдкрддреНрд░ рд╕реЗ рдЕрд╡рдЧрдд рдирд╣реАрдВ рд╣реВрдВред рдХреНрдпрд╛ рдЖрдк рдХреГрдкрдпрд╛ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдЬреИрд╕реЗ kubeadm config рдлрд╛рдЗрд▓, рдХреНрд▓рд╕реНрдЯрд░ рдмрдирд╛рдиреЗ рдХреЗ рдЪрд░рдг

@fabriziopandini рдореБрдЭреЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЕрдЧрд░ рд╕реАрдЯреНрд╕ рдХреБрдмреЗрджрдо рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдИ рдЧрдИ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдпрд╣рд╛рдВ рд╡рд░реНрдгрд┐рдд

рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреА рд╕рд╛рдордЧреНрд░реА рдЗрд╕ рдкреНрд░рдХрд╛рд░ рджрд┐рдЦрддреА рд╣реИ:

root@ip-172-31-1-118:/var/lib/kubelet/pki# pwd
/var/lib/kubelet/pki
root@ip-172-31-1-118:/var/lib/kubelet/pki# ls -al
total 24
drwxr-xr-x 2 root root 4096 Jul 23 21:10 .
drwxr-xr-x 7 root root 4096 Nov 12 04:52 ..
-rw------- 1 root root 2810 Jul 23 21:09 kubelet-client-2018-07-23-21-09-53.pem
-rw------- 1 root root 1159 Jul 23 21:10 kubelet-client-2018-07-23-21-10-43.pem
lrwxrwxrwx 1 root root   59 Jul 23 21:10 kubelet-client-current.pem -> /var/lib/kubelet/pki/kubelet-client-2018-07-23-21-10-43.pem
-rw-r--r-- 1 root root 1501 Nov  8 23:53 kubelet.crt
-rw------- 1 root root 1679 Nov  8 23:53 kubelet.key
root@ip-172-31-1-118:/var/lib/kubelet/pki#

рдХреНрдпрд╛ рд╡реЗ kubelet.crt рдФрд░ kubelet.key рдлрд╝рд╛рдЗрд▓реЗрдВ рдХреНрдпреВрдмрд▓реЗрдЯ рджреНрд╡рд╛рд░рд╛ рдкрд╣рд▓реА рдмрд╛рд░ рд▓реЛрдб рдХреА рдЧрдИ рд╣реИрдВ?

@ raravena80 рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж
рд╕рдВрднрд╡рддрдГ рдореЗрд░реЗ рдкрд╛рд╕ рдпрд╣рд╛рдВ рдкреВрд░рд╛ рд╕рдВрджрд░реНрдн рдирд╣реАрдВ рд╣реИ рдЗрд╕рд▓рд┐рдП рдореИрдВ рджреВрд╕рд░реЛрдВ рдХреЛ рдЬрд╡рд╛рдм рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдХрдорд░реЗ рдореЗрдВ рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реВрдВред

рдХреЗрд╡рд▓ рдПрдХ рдкрдХреНрд╖ рдиреЛрдЯ (рдпрд╣ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ)
рдХреБрдмреЗрджрдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рд╕рд░реНрдЯрд┐рдлрд┐рдХреЗрдЯ рдмрдирд╛рддрд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдирд╛рдо apiserver-kubelet-client рддрд╛рдХрд┐ рдПрдк рд╕рд░реНрд╡рд░ рдХреЛ рдХреНрдпреВрдмрд▓реЗрдЯреНрд╕ рдХреЗ рд╕рд╛рде рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдмрд╛рдд рдХрд░ рд╕рдХреЗрдВ; рдпрд╣ рд╕реАрдП рджреНрд╡рд╛рд░рд╛ рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рд╣реИ рдФрд░ рдЖрд╡рд╢реНрдпрдХ рдЖрд░рдмреАрдПрд╕реА рдирд┐рдпрдореЛрдВ рдХреЗ рд▓рд┐рдП рдмрд╛рдзреНрдп рд╣реИред

/ рдЕрд╕рд╛рдЗрди рдХрд░реЗрдВ @liztio

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХреНрдпреВрдмрд▓реЗрдЯ рдХреЗ рд╕рд░реНрд╡рд░ рд╕реЗрдЯрд░ рдХреЛ рдкреНрд░реА-рдЬреЗрдирд░реЗрдЯ рдХрд░рдирд╛ рд╣реИред рдореИрдВ рдЯреАрдПрд▓рдПрд╕ рд╕рд░реНрд╡рд░ рдмреВрдЯрд╕реНрдЯреНрд░реИрдк рдХреЗ рд▓рд┐рдП рдХреНрдпреВрдмрд▓реЗрдЯ рдЭрдВрдбреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рд╕рд░реНрд╡рд░ рд╕реЗрд░реНрдЯреНрд╕ рдХреЛ рдШреБрдорд╛рддрд╛ рд╣реВрдВ, рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдореИрдВ рдмреВрдЯрд╕реНрдЯреНрд░реИрдк рдЯреЛрдХрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рд░реНрд╡рд░ рд╕рд░реНрдЯрд┐рдлрд┐рдХреЗрдЯ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрдпреВрдмрд▓реЗрдЯ рдирд╣реАрдВ рдорд┐рд▓рд╛ред рдХреНрдпреВрдмрд▓реЗрдЯ рд╕рд░реНрд╡рд░ рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╡реНрдпрд╡рд╣рд╛рд░ рдкрд░ рд╡рд╛рдкрд╕ рдЧрд┐рд░рддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ рдПрдХ рд╕реНрд╡-рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдЙрддреНрдкрдиреНрди рдХрд░рдирд╛ рд╣реИред

рдореЗрд░реЗ рдЬреНрдЮрд╛рди рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрд╕ рд╕рдордп рдХреЗрд╡рд▓ рдПрдХ рд╣реА рд░рд╛рд╕реНрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпреВрдмрд▓реЗрдЯ рдХреЗ рд╕рд░реНрд╡рд░ рд╕реЗрд░-рдмреИрдВрдб рдХреЛ рдЙрддреНрдкрдиреНрди рдХрд┐рдпрд╛ рдЬрд╛рдП рдФрд░ рдЙрдиреНрд╣реЗрдВ рдПрдХ рдирд┐рдпрдд рдкрде рдкрд░ рд░рдЦрд╛ рдЬрд╛рдП рдФрд░ рдХреНрдпреВрдмрд▓реЗрдЯ (рдХреБрдмреЗрджрдо рджреНрд╡рд╛рд░рд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛) рдЗрд╕реЗ рдЙрдард╛рдПрдЧрд╛, рдФрд░ рддрджрдиреБрд╕рд╛рд░ рдХреБрдЫ рдХреНрдпреВрдмрд▓реЗрдЯ рдЭрдВрдбреЗ рд╕реЗрдЯ рдХрд░реЗрдЧрд╛ред ; рд╕рдВрджрд░реНрдн: https://kubernetes.io/docs/reference/command-line-tools-reference/kubelet-tls-bootstrapping/#client -and- рд╕рд░реНрд╡рд┐рдВрдЧ-рд╕рд░реНрдЯрд┐рдлрд┐рдХреЗрдЯ

apiserver-kubelet-client рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рд░реНрдЯрд┐рдлрд┐рдХреЗрдЯ рд╣реИ рдХрд┐ рдПрдкреАрдЖрдИ рд╕рд░реНрд╡рд░ рдПрдХ рдХреНрдпреВрдмрд▓реЗрдЯ рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░реЗрдЧрд╛, рд▓реЗрдХрд┐рди рдХреНрдпреВрд▓реЗрдЯ рдХреЛ рдЙрди рдЧреНрд░рд╛рд╣рдХреЛрдВ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЬреЛ k8s CA рджреНрд╡рд╛рд░рд╛ рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рд╣реИрдВ:

# cat /var/lib/kubelet/config.yaml 
address: 0.0.0.0
apiVersion: kubelet.config.k8s.io/v1beta1
authentication:
  anonymous:
    enabled: false
  webhook:
    cacheTTL: 2m0s
    enabled: true
  x509:
    clientCAFile: /etc/kubernetes/pki/ca.crt

рдпрд╣ рдПрдХ рд╕рд░реНрд╡рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХреНрдпреВрдмрд▓реЗрдЯ рдХреА рдкрд╣рдЪрд╛рди рд╣реИ рдЬрд┐рд╕реЗ k8s CA рджреНрд╡рд╛рд░рд╛ рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬреЛ рдореВрд▓ рдкреНрд░рд╢реНрди рдХреЗ рдЖрд╕рдкрд╛рд╕ рдЖрддрд╛ рд╣реИред

рдЗрд╕ рд╕реВрддреНрд░ рдХреЗ рдЕрдВрдд рдореЗрдВ рдХреБрдЫ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдЪрд░реНрдЪрд╛ рднреА рд╣реИ: https://github.com/kubernetes/kubeadm/issues/118

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ kubeadm рдХреЛ рдПрдХ рд╡реИрдз рдмреВрдЯрд╕реНрдЯреНрд░реИрдк рдЯреЛрдХрди рдХреЗ рд╕рд╛рде рд╕рд░реНрд╡рд░ рд╕рд░реНрдЯрд┐рдлрд┐рдХреЗрдЯ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд▓рд┐рдП CSR рдЕрдкреНрд░реВрд╡рд▓ рдЬреЛрдбрд╝рдирд╛ рдкрдбрд╝ рд╕рдХрддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рд░реНрдЯрд┐рдлрд┐рдХреЗрдЯ рд░рд┐рдХреНрд╡реЗрд╕реНрдЯ рдХреЗ рд▓рд┐рдП рд╣реЛрддрд╛ рд╣реИ?

рдХреНрдпреВрдмрд▓реЗрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рдХрд╣реАрдВ рд╕реЗ рдПрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░рдореИрдк рдкрд░ рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рд╕реАрдП рдЕрдкрд▓реЛрдб рдХрд░рдирд╛ рд╣реИ? nodeadmission рдкреНрд▓рдЧрдЗрди рдЗрд╕реЗ рдХреЗрд╡рд▓ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдореИрдЯреНрд░рд┐рдХреНрд╕-рд╕рд░реНрд╡рд░ рдиреЛрдб рд╕реЗ рд╕рдВрдкрд░реНрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рдЙрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдИ рд╡рд┐рдЪрд╛рд░?

рдпрджрд┐ рд╕рдВрднрд╡ рд╣реЛ рддреЛ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рд╕рд░реНрд╡рд┐рдВрдЧ рд╕рд░реНрдЯрд┐рдлрд┐рдХреЗрдЯ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз / рдШреБрдорд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрдпреВрдмреНрд▓реЗрдЯ рдореЗрдВ рдирд┐рд░реНрдорд┐рдд рдЯреАрдПрд▓рдПрд╕ рдмреВрдЯрд╕реНрдЯреНрд░реИрдкрд┐рдВрдЧ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

@alexbrand рдореИрдВ рдЙрд╕ рдкрд░ рд╕рд╣рдордд рд╣реВрдВ

рдХреНрдпреВрдмрд▓реЗрдЯ рдЯреАрдПрд▓рдПрд╕ рдмреВрдЯрд╕реНрдЯреНрд░реИрдкрд┐рдВрдЧ рдХреЗрд╡рд▓ рдЧреНрд░рд╛рд╣рдХ рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ рдЬреЛ рднреА рдХрд╛рд░рдг рд╣реЛ:
--bootstrap-kubeconfig string
Path to a kubeconfig file that will be used to get client certificate for kubelet. If the file specified by --kubeconfig does not exist, the bootstrap kubeconfig is used to request a client certificate from the API server. On success, a kubeconfig file referencing the generated client certificate and key is written to the path specified by --kubeconfig. The client certificate and key file will be stored in the directory pointed by --cert-dir.

рдФрд░ kubeadm рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдРрд╕рд╛ рдХрд░рддрд╛ рд╣реИред рд╢рд╛рдпрдж рдпрд╣ рдПрдХ рдХреНрдпреВрдмрд▓реЗрдЯ рд╕реБрд╡рд┐рдзрд╛ рдЕрдиреБрд░реЛрдз рд╣реИ?

рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╕рд╛рд░рд╛рдВрд╢рд┐рдд рдХрд░рдиреЗ рджреЗрддрд╛ рд╣реИ:

рдЬреИрд╕рд╛ рдХрд┐ @anitgandhi рджреНрд╡рд╛рд░рд╛ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рд╣реИ:
https://github.com/kubernetes/kubeadm/issues/1223#issuecomment -4545725777

рдпрд╣рд╛рдБ kubeadm рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рд╣рдо рдХреНрдпреВрдмрд▓реЗрдЯ рдореЗрдВ рдЭрдВрдбреЗ рдХреЗ рдПрдХ рдЬреЛрдбрд╝реЗ рдХреЛ рдкрд╛рд░рд┐рдд рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ:

--tls-cert-file=<some-path>/kubelet.crt
--tls-private-key-file=<some-path>/kubelet.key

рдЗрди рдЭрдВрдбреЛрдВ рдХреЗ рдмрд┐рдирд╛ рдпрд╣ рдХреНрдпреВрдмрд▓реЗрдЯ рд╕реНрд╡-рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЪреВрдХ рдЬрд╛рддрд╛ рд╣реИ, рдЬрдм рдпрд╣ рдкрд╣рд▓реА рдмрд╛рд░ рдЪрд▓рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рд╕реЗрд╡рд╛ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рд╣реИ, рдЬрд┐рд╕реЗ рдЗрд╕рдХреЗ рд╕рд╛рде рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

sudo openssl verify -verbose -CAfile /var/lib/kubelet/pki/kubelet.crt /var/lib/kubelet/pki/kubelet.crt

рдХреНрд▓рд╕реНрдЯрд░ CA ( /etc/kubernetes/ca.crt ) рджреНрд╡рд╛рд░рд╛ рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХреЗ рдмрдЬрд╛рдп рдПрдХ рд╕реНрд╡-рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдХреЗ рд╕рд╛рде, рдореИрдЯреНрд░рд┐рдХреНрд╕ рд╕рд░реНрд╡рд░ рдХреА рддрд░рд╣ рддреИрдирд╛рддреА рдХреНрдпреВрдмрд▓реЗрдЯ рдХреЛ рдкрд░рд┐рдорд╛рд░реНрдЬрди рдирд╣реАрдВ рдХрд░ рд╕рдХрддреА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╕реНрд╡-рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдкреНрд░рдорд╛рдгрдкрддреНрд░ SAN рдореЗрдВ рдХреЗрд╡рд▓ DNS:hostname ред

рд╕рдВрднрд╡ рд╕рдорд╛рдзрд╛рди:
рдП) рдПрдХ рдирдП kubelet.crt/key рдЬреЛрдбрд╝реА рдХреЗ рдЧрд╛рдпрди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ, рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ /var/lib/kubelet/pki рддрд╣рдд рдФрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рдХреНрдпреВрдмрд▓реЗрдЯ рдЭрдВрдбреЗ --tls-cert-file , --tls-private-key-file ред

рдмреА) рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЗрд╕реЗ рдЗрд╕реА рддрд░рд╣ рд╕реЗ рдбрд┐рдорд╛рдВрдб рдкрд░ рд╕рдХреНрд╖рдо рдХрд┐рдпрд╛ рдЬрд╛рдП @ raravena80 рдиреЗ рдЗрд╕реЗ рдпрд╣рд╛рдВ рдХреИрд╕реЗ рдХрд┐рдпрд╛: https://stackoverflow.com/questions/53212149/x509-certificate-signed-by-unknown-authority-kubeadm/53218524#53218524
рд╕рд┐рд╡рд╛рдп Kubernetes CSRs / kubeadm рдХрдорд╛рдВрдб рдХреЗ рдЙрдкрдпреЛрдЧ рд╕реЗред

рдЧ) @alexbrand рджреНрд╡рд╛рд░рд╛ рдЯрд┐рдкреНрдкрдгреА рдХреЗ рд░реВрдк рдореЗрдВ

рдпрджрд┐ рд╕рдВрднрд╡ рд╣реЛ рддреЛ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рд╕рд░реНрд╡рд┐рдВрдЧ рд╕рд░реНрдЯрд┐рдлрд┐рдХреЗрдЯ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз / рдШреБрдорд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрдпреВрдмреНрд▓реЗрдЯ рдореЗрдВ рдирд┐рд░реНрдорд┐рдд рдЯреАрдПрд▓рдПрд╕ рдмреВрдЯрд╕реНрдЯреНрд░реИрдкрд┐рдВрдЧ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдбреА)?

@ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ / рд╕рд┐рдЧ-рдХреНрд▓рд╕реНрдЯрд░-рдЬреАрд╡рдирдЪрдХреНрд░
рдореБрдЭреЗ рдпрд╣ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдЧ / рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рдмреАрдЪ рдЕрдВрддрд░рд┐рдХреНрд╖ рдореЗрдВ рд▓рдЧрддрд╛ рд╣реИред

рдпрд╣ рднреА рджреЗрдЦреЗрдВ:
https://github.com/kubernetes/community/pull/602/files

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡рд┐рдХрд▓реНрдк B + C рдХреЗ рдмреАрдЪ рдХреБрдЫ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХреНрдпреЛрдВрдХрд┐ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдмреВрдЯрд╕реНрдЯреНрд░реИрдк рдЯреЛрдХрди рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рд░реНрдЯрд┐рдлрд┐рдХреЗрдЯ / CSR рд▓реЙрдЬрд┐рдХ рдХреНрдпреВрдмрд▓реЗрдЯ + kubeadm рдХреЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдп рддрд░реНрдХ рд╣реЛрдЧрд╛ред

рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╕рд╛рд░рд╛рдВрд╢рд┐рдд рдХрд░рдиреЗ рджреЗрддрд╛ рд╣реИ:

рдЬреИрд╕рд╛ рдХрд┐ @anitgandhi рджреНрд╡рд╛рд░рд╛ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рд╣реИ:
# 1223 (рдЯрд┐рдкреНрдкрдгреА)

рдпрд╣рд╛рдБ kubeadm рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рд╣рдо рдХреНрдпреВрдмрд▓реЗрдЯ рдореЗрдВ рдЭрдВрдбреЗ рдХреЗ рдПрдХ рдЬреЛрдбрд╝реЗ рдХреЛ рдкрд╛рд░рд┐рдд рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ:

--tls-cert-file=<some-path>/kubelet.crt
--tls-private-key-file=<some-path>/kubelet.key

рдЗрди рдЭрдВрдбреЛрдВ рдХреЗ рдмрд┐рдирд╛ рдпрд╣ рдХреНрдпреВрдмрд▓реЗрдЯ рд╕реНрд╡-рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЪреВрдХ рдЬрд╛рддрд╛ рд╣реИ, рдЬрдм рдпрд╣ рдкрд╣рд▓реА рдмрд╛рд░ рдЪрд▓рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рд╕реЗрд╡рд╛ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рд╣реИ, рдЬрд┐рд╕реЗ рдЗрд╕рдХреЗ рд╕рд╛рде рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

sudo openssl verify -verbose -CAfile /var/lib/kubelet/pki/kubelet.crt /var/lib/kubelet/pki/kubelet.crt

рдХреНрд▓рд╕реНрдЯрд░ CA ( /etc/kubernetes/ca.crt ) рджреНрд╡рд╛рд░рд╛ рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХреЗ рдмрдЬрд╛рдп рдПрдХ рд╕реНрд╡-рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдХреЗ рд╕рд╛рде, рдореИрдЯреНрд░рд┐рдХреНрд╕ рд╕рд░реНрд╡рд░ рдХреА рддрд░рд╣ рддреИрдирд╛рддреА рдХреНрдпреВрдмрд▓реЗрдЯ рдХреЛ рдкрд░рд┐рдорд╛рд░реНрдЬрди рдирд╣реАрдВ рдХрд░ рд╕рдХрддреА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╕реНрд╡-рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдкреНрд░рдорд╛рдгрдкрддреНрд░ SAN рдореЗрдВ рдХреЗрд╡рд▓ DNS:hostname ред

рд╕рдВрднрд╡ рд╕рдорд╛рдзрд╛рди:
рдП) рдПрдХ рдирдП kubelet.crt/key рдЬреЛрдбрд╝реА рдХреЗ рдЧрд╛рдпрди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ, рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ /var/lib/kubelet/pki рддрд╣рдд рдФрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рдХреНрдпреВрдмрд▓реЗрдЯ рдЭрдВрдбреЗ --tls-cert-file , --tls-private-key-file ред

рдмреА) рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЗрд╕реЗ рдЗрд╕реА рддрд░рд╣ рд╕реЗ рдбрд┐рдорд╛рдВрдб рдкрд░ рд╕рдХреНрд╖рдо рдХрд┐рдпрд╛ рдЬрд╛рдП @ raravena80 рдиреЗ рдЗрд╕реЗ рдпрд╣рд╛рдВ рдХреИрд╕реЗ рдХрд┐рдпрд╛: https://stackoverflow.com/questions/53212149/x509-certificate-signed-by-unknown-authority-kubeadm/53218524#53218524
рд╕рд┐рд╡рд╛рдп Kubernetes CSRs / kubeadm рдХрдорд╛рдВрдб рдХреЗ рдЙрдкрдпреЛрдЧ рд╕реЗред

рдЧ) @alexbrand рджреНрд╡рд╛рд░рд╛ рдЯрд┐рдкреНрдкрдгреА рдХреЗ рд░реВрдк рдореЗрдВ

рдпрджрд┐ рд╕рдВрднрд╡ рд╣реЛ рддреЛ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рд╕рд░реНрд╡рд┐рдВрдЧ рд╕рд░реНрдЯрд┐рдлрд┐рдХреЗрдЯ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз / рдШреБрдорд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрдпреВрдмреНрд▓реЗрдЯ рдореЗрдВ рдирд┐рд░реНрдорд┐рдд рдЯреАрдПрд▓рдПрд╕ рдмреВрдЯрд╕реНрдЯреНрд░реИрдкрд┐рдВрдЧ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдбреА)?

@ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ / рд╕рд┐рдЧ-рдХреНрд▓рд╕реНрдЯрд░-рдЬреАрд╡рдирдЪрдХреНрд░
рдореБрдЭреЗ рдпрд╣ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдЧ / рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рдмреАрдЪ рдЕрдВрддрд░рд┐рдХреНрд╖ рдореЗрдВ рд▓рдЧрддрд╛ рд╣реИред

рдпрд╣ рднреА рджреЗрдЦреЗрдВ:
https://github.com/kubernetes/community/pull/602/files

рдорд╣рд╛рди рд╕рд╛рд░рд╛рдВрд╢ @ neolit123 ред рдХреНрдпрд╛ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдЕрдЧрд▓реЗ рдЪрдХреНрд░ рдкрд░ рдлрд┐рд╕рд▓ рдЬрд╛рдПрдЧрд╛ рдпрд╛ рдкреНрд░рдЧрддрд┐ рдореЗрдВ рдХрд╛рдо рдХрд░реЗрдЧрд╛ рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рдмреЛрд▓рддреЗ рд╣реИрдВ? рдореЗрдЯреНрд░рд┐рдХреНрд╕-рд╕рд░реНрд╡рд░ рдХреЗ рдХрд╛рд░рдг рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдкреВрдЫрдирд╛ рдЬреЛ рд╣рд░ рддреИрдирд╛рддреА рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ;)

@randomvariable рдиреЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдХрд┐ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рд╕рдорд╛рдзрд╛рди рд╣реИред
рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреА рдЪрд░реНрдЪрд╛рдУрдВ рд╕реЗ, рд╣рдо рдХреНрд▓рд╕реНрдЯрд░ CA рдХреЗ рд╕рд╛рде рдХреНрдпреВрдмрд▓реЗрдЯ-рд╕рд░реНрд╡рд┐рдВрдЧ рд╕рд░реНрдЯрд┐рдлрд┐рдХреЗрдЯ рдкрд░ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд░рдиреЗ рдореЗрдВ рд╕рдВрдХреЛрдЪ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдФрд░ рдЪрд░реНрдЪрд╛ рдХреА рдЬрд░реВрд░рдд рд╣реИред

/ рд╣рдЯрд╛рдиреЗ-рдорджрдж

рдХреНрдпреЛрдВрдХрд┐ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рд╕рдорд╛рдзрд╛рди рдЕрднреА рддрдХ рдЪреБрдирд╛ рдирд╣реАрдВ рдЧрдпрд╛ рд╣реИред

рдЗрд╕ рдкрд░ рдХреЛрдИ рдЖрдВрджреЛрд▓рди? рдореИрдВ рдПрдХ kubeadm рддреИрдирд╛рдд рдХреНрд▓рд╕реНрдЯрд░ рдХреЗ рднреАрддрд░ рдСрдЯреЛрд╕реНрдХреЛрд▓рд┐рдВрдЧ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХреЗ рдЦрд┐рд▓рд╛рдл рдЪрд▓ рд░рд╣рд╛ рд╣реВрдВред

рдХреНрдпреВрдмрд▓реЗрдЯ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХреЗ рд╕реАрдП рдЪреЗрдХрд┐рдВрдЧ рдХреЛ рдЪрд╛рд▓реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд░реНрддрдорд╛рди рд╕рдорд╛рдзрд╛рди рд╣реИред

helm install --set 'args={--kubelet-insecure-tls}' --namespace kube-system metrics stable/metrics-serve

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ рдбрд┐рдЬрд╛рдЗрди рдкреНрд░рд╕реНрддрд╛рд╡реЛрдВ рдкрд░ рдЕрд╡рд░реБрджреНрдз рд╣реИред
рдХрдИ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЙрди рдХрд╛рдореЛрдВ рдХреЛ рд░реЛрдХрдиреЗ рдХрд╛ рдХрд╛рдо рд╣реИ:
https://github.com/kubernetes/kubeadm/issues/1602

- рдХреНрдпреВрдмрд▓реЗрдЯ-рдЕрд╕реБрд░рдХреНрд╖рд┐рдд- tls

рдпрд╣ рд╕рднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЖрджрд░реНрд╢ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

90 рдбреА рдирд┐рд╖реНрдХреНрд░рд┐рдпрддрд╛ рдХреЗ рдмрд╛рдж рдореБрджреНрджреЗ рдмрд╛рд╕реА рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред
/remove-lifecycle stale рд╕рд╛рде рддрд╛рдЬрд╝рд╛ рдЕрдВрдХ рдХреЛ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░реЗрдВред
рдЕрддрд┐рд░рд┐рдХреНрдд 30 рдбреА рдирд┐рд╖реНрдХреНрд░рд┐рдпрддрд╛ рдХреЗ рдмрд╛рдж рдмрд╛рд╕реА рдореБрджреНрджреЗ рд╕рдбрд╝ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдЕрдВрддрддрдГ рдмрдВрдж рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред

рдпрджрд┐ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдЕрдм рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИ, рддреЛ рдХреГрдкрдпрд╛ /close рд╕рд╛рде рдРрд╕рд╛ рдХрд░реЗрдВред

рд╕рд┐рдЧ-рдЯреЗрд╕реНрдЯрд┐рдВрдЧ, рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ / рдЯреЗрд╕реНрдЯ-рдЗрдиреНрдлреНрд░рд╛ рдФрд░ / рдпрд╛ рдлреЗрдЬреНрдЯрд╛ рдХреЛ рдлреАрдбрдмреИрдХ рднреЗрдЬреЗрдВ ред
/ рдЬреАрд╡рдирдЪрдХреНрд░ рдмрд╛рд╕реА

/ рдЬреАрд╡рди рдЪрдХреНрд░ рдЬрдореЗ рд╣реБрдП

Kubeadm рдХреЗ рд╕рд╛рде v1.18.2 рдХреНрд▓рд╕реНрдЯрд░ рдмрдирд╛рдиреЗ рд╡рд╛рд▓реЗ рдЗрд╕ рд╕рдЯреАрдХ рдореБрджреНрджреЗ рдореЗрдВ рдЪрд▓ рд░рд╣рд╛ рд╣реИред

рдореЗрдЯреНрд░рд┐рдХреНрд╕-рд╕рд░реНрд╡рд░ рд╕реЗрдЯ рдХрд░рддреЗ рд╕рдордп рдпрд╣ рдмрд┐рдирд╛ kubelet-insecure-tls рдлреНрд▓реИрдЧ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рдмрд┐рдирд╛ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдпрд╛ "рдмреИрдВрдб рд╕реЗ рдмрд╛рд╣рд░", рдЗрд╕реЗ kubernetes CA рдХреЗ рд╕рд╛рде рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдЬрд╛рд░реА рдХрд░рддрд╛ рд╣реИред

рдореИрдВрдиреЗ рдХреНрдпреВрдмрд▓реЗрдЯ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рд░реНрдЯрд┐рдлрд┐рдХреЗрдЯ рдХрд╛ рдлрд┐рд░ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрд╛ рдерд╛ рд▓реЗрдХрд┐рди рдпрд╣ CN = system:node:nodename рдФрд░ рдиреЛ SANs рдХреЛ рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдФрд░ рдореИрдВрдиреЗ рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдерд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╡рд┐рдЪрдХреЛрд░реЗ рдиреЗ рдпрд╣ рд╕рдВрдХреЗрдд рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рддреНрд░реБрдЯрд┐ рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛ред рдПрдХ рд╣реА рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдХреЛ рд╕рд░реНрд╡рд░ / рдХреНрд▓рд╛рдЗрдВрдЯ рджреЛрдиреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЕрдЧрд░ рдЙрд╕рдХрд╛ рдирд╛рдо рд╡реИрдХрд▓реНрдкрд┐рдХ рд╡рд┐рд╖рдп рдХреЗ рд░реВрдк рдореЗрдВ рд╣реЛрддрд╛ рд╣реИ? рд▓реЗрдХрд┐рди рдореИрдВ рдпрд╣ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рд╕рд░реНрд╡рд░ / рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ рд╕реЗрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЕрдзрд┐рдХ рдЙрдЪрд┐рдд рд╣реЛрдЧрд╛?

/ рд╣рдЯрд╛рдиреЗ-рдЬреАрд╡рди рдЪрдХреНрд░ рдЬрдореЗ рд╣реБрдП

/ рдЬреАрд╡рди рдЪрдХреНрд░ рдЬрдореЗ рд╣реБрдП

рдпрд╣ рдЬрдореЗ рд╣реБрдП рд╣реИ рддрд╛рдХрд┐ рдмреЙрдЯреНрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдмрдВрдж рди рдХрд░реЗрдВред

рдПрдХ рд╣реА рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдХреЛ рд╕рд░реНрд╡рд░ / рдХреНрд▓рд╛рдЗрдВрдЯ рджреЛрдиреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЕрдЧрд░ рдЙрд╕рдХрд╛ рдирд╛рдо рд╡реИрдХрд▓реНрдкрд┐рдХ рд╡рд┐рд╖рдп рдХреЗ рд░реВрдк рдореЗрдВ рд╣реЛрддрд╛ рд╣реИ?

рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ рдФрд░ рдЬрдм рддрдХ рдХрд┐ рдХреНрдпреВрдмрд▓реЗрдЯ рдЙрдиреНрд╣реЗрдВ рдорд╛рдиреНрдп рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ - рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП "рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рд░реНрдЯрд┐рдлрд┐рдХреЗрдЯ рдореЗрдВ SANs рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП"ред

рд▓реЗрдХрд┐рди рдореИрдВ рдпрд╣ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рд╕рд░реНрд╡рд░ / рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ рд╕реЗрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЕрдзрд┐рдХ рдЙрдЪрд┐рдд рд╣реЛрдЧрд╛?

рдпрд╣ рдЙрди рдорд╛рдорд▓реЛрдВ рдореЗрдВ рднреА рдЕрд▓рдЧ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдп рдЕрднреНрдпрд╛рд╕ рд╣реИ рдЬрд╣рд╛рдВ рдпрд╣ рдкрд░рд┐рд╣рд╛рд░реНрдп рд▓рдЧрддрд╛ рд╣реИред рдпрд╣ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреНрдпреВрдмрд▓реЗрдЯ / рдСрд░реНрдЯрд░реА {z | n} рдмрдирд╛рдП рд░рдЦрдиреЗ рд╡рд╛рд▓реЗ рдЗрд╕ рд╡рд┐рд╡рд░рдг рдХреЛ рдмрджрд▓ рджреЗрдВрдЧреЗред

рдЕрд░реЗред рдереЛрдбрд╝рд╛ рдФрд░ рдкрдЪрд╛рдпрд╛ред рдХреНрдпреВрдмрд▓реЗрдЯ рд╡рд┐рдиреНрдпрд╛рд╕ рд╡рд┐рдХрд▓реНрдк serverTLSBootstrap: true рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕реЗрд╡рд╛рд░рдд рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реАрдПрд╕рдЖрд░ рдмрдирд╛ рд╕рдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рдЗрд╕реЗ рдЕрдкреНрд░рд╛рдкреНрдд рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИред рдЬреЛ рдареАрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ?

рджреЛрдиреЛрдВ rotateCertificates: true рдФрд░ serverTLSBootsrap: true рдФрд░ рдлрд┐рд░ рд╕рд░реНрд╡рд┐рдВрдЧ рд╕рд░реНрдЯрд┐рдлрд┐рдХреЗрдЯ рдХреЗ рд▓рд┐рдП CSR рдХреЛ рдордВрдЬреВрд░реА рджреЗрдирд╛ рдпрд╣рд╛рдВ рдЬрд╛рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рд▓рдЧрддрд╛ рд╣реИред рд╕реЗрд╡рд╛рд░рдд / рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рдкреНрд░рдорд╛рдг рдкрддреНрд░ O = system:nodes, CN = system:node:<nodename> рдХреЗ рд▓рд┐рдП рд╡рд┐рд╖рдп рд╡реИрдХрд▓реНрдкрд┐рдХ рдирд╛рдореЛрдВ рдХреЗ рд╕рд╛рде DNS: <nodename>, IP Address: <node IP address>

Kubeadm рдХреЛ рдХрдо рд╕реЗ рдХрдо рд╕рд░реНрд╡рд░рдЯреВрдЯреНрд╕рдмреБрдЯрд╕реНрдЯреНрд░реИрдк рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╡рд┐рдХрд▓реНрдк рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рддрд╛рдХрд┐ рд╕рд░реНрд╡рд░ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХрд╛ рдЕрдиреБрдореЛрджрди рдХрд░рдирд╛ рдПрдХ рдЖрд╕рд╛рди рдмрд╛рдд рд╣реЛ? рдпрд╛ рдХреБрдмреЗрджрдо рднреА рдЕрдиреБрдореЛрджрди рдХрд░ рд╕рдХрддрд╛ рд╣реИ?

рдЕрд░реЗред рдереЛрдбрд╝рд╛ рдФрд░ рдкрдЪрд╛рдпрд╛ред рдХреНрдпреВрдмрд▓реЗрдЯ рд╡рд┐рдиреНрдпрд╛рд╕ рд╡рд┐рдХрд▓реНрдк serverTLSBootstrap: true рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕реЗрд╡рд╛рд░рдд рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реАрдПрд╕рдЖрд░ рдмрдирд╛ рд╕рдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рдЗрд╕реЗ рдЕрдкреНрд░рд╛рдкреНрдд рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИред рдЬреЛ рдареАрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ?

рджреЛрдиреЛрдВ rotateCertificates: true рдФрд░ serverTLSBootsrap: true рдФрд░ рдлрд┐рд░ рд╕рд░реНрд╡рд┐рдВрдЧ рд╕рд░реНрдЯрд┐рдлрд┐рдХреЗрдЯ рдХреЗ рд▓рд┐рдП CSR рдХреЛ рдордВрдЬреВрд░реА рджреЗрдирд╛ рдпрд╣рд╛рдВ рдЬрд╛рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рд▓рдЧрддрд╛ рд╣реИред рд╕реЗрд╡рд╛рд░рдд / рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рдкреНрд░рдорд╛рдг рдкрддреНрд░ O = system:nodes, CN = system:node:<nodename> рдХреЗ рд▓рд┐рдП рд╡рд┐рд╖рдп рд╡реИрдХрд▓реНрдкрд┐рдХ рдирд╛рдореЛрдВ рдХреЗ рд╕рд╛рде DNS: <nodename>, IP Address: <node IP address>

Kubeadm рдХреЛ рдХрдо рд╕реЗ рдХрдо рд╕рд░реНрд╡рд░рдЯреВрдЯреНрд╕рдмреБрдЯрд╕реНрдЯреНрд░реИрдк рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╡рд┐рдХрд▓реНрдк рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рддрд╛рдХрд┐ рд╕рд░реНрд╡рд░ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХрд╛ рдЕрдиреБрдореЛрджрди рдХрд░рдирд╛ рдПрдХ рдЖрд╕рд╛рди рдмрд╛рдд рд╣реЛ? рдпрд╛ рдХреБрдмреЗрджрдо рднреА рдЕрдиреБрдореЛрджрди рдХрд░ рд╕рдХрддрд╛ рд╣реИ?

рд╕реБрд░рдХреНрд╖рд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдк CSRs рдХреЛ https://github.com/kontena/kubelet-rubber-stamp рдХреЛ рдСрдЯреЛ-рдПрдкреНрд░реВрд╡ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдСрдкрд░реЗрдЯрд░ рдХреЗ рд╕рд╛рде serverTLSBootstrap рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред

Kubeadm рдХреЛ рдХрдо рд╕реЗ рдХрдо рд╕рд░реНрд╡рд░рдЯреВрдЯреНрд╕рдмреБрдЯрд╕реНрдЯреНрд░реИрдк рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╡рд┐рдХрд▓реНрдк рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рддрд╛рдХрд┐ рд╕рд░реНрд╡рд░ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХрд╛ рдЕрдиреБрдореЛрджрди рдХрд░рдирд╛ рдПрдХ рдЖрд╕рд╛рди рдмрд╛рдд рд╣реЛ? рдпрд╛ рдХреБрдмреЗрджрдо рднреА рдЕрдиреБрдореЛрджрди рдХрд░ рд╕рдХрддрд╛ рд╣реИ?

kubeadm рдЕрдиреБрдореЛрджрди рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рдХреНрдпреЛрдВрдХрд┐ kubeadm рдбреЗрдореЙрди рдирд╣реАрдВ рд╣реИред рдЗрд╕реЗ рдПрдХ рдирд┐рдпрдВрддреНрд░рдХ / рдСрдкрд░реЗрдЯрд░ рдХреЛ рддреИрдирд╛рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рддрд╛ рд╣реИред рднрд╡рд┐рд╖реНрдп рдореЗрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдПрдкреАрдЖрдИ рдЬрд▓реНрдж рд╣реА рдЬреАрдП рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рд╣рдо рдЗрд╕реЗ k8 рдореЗрдВ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдмреЗрд╣рддрд░ рддрд░реАрдХрд╛ рд╣реЛрдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВред рдХреГрдкрдпрд╛ рджреЗрдЦреЗрдВ:
https://github.com/kubernetes/enhancements/issues/267
(рдЕрднреА рддрдХ рдореБрдЭреЗ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╣рдо рдХреНрдпрд╛ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ ...)

рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╡рд┐рдЪрд╛рд░ рднреА рд╣реИрдВред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдпрд╣ рд╕рдм рдореАрдЯреНрд░рд┐рдХ-рд╕рд░реНрд╡рд░ рдХреЗ рдореБрджреНрджреЗ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реИ, рддреЛ рдЖрдк рдмрд╕ https://github.com/brancz/kube-rbac-proxy рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ kubelet рдХреЗ рд▓рд┐рдП MS рдЕрдиреБрд░реЛрдзреЛрдВ рдкрд░ SAR рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рджреБрдЦ рдХреА рдмрд╛рдд рд╣реИ рдХрд┐ рдпрд╣ рдЕрднреА рддрдХ рд╣рдорд╛рд░реА рдУрд░ рд╕реЗ рдкреНрд░рд▓реЗрдЦрд┐рдд рдирд╣реАрдВ рд╣реИ:
https://github.com/kubernetes/kubeadm/issues/1602

@ neolit123 рдореИрдВрдиреЗ рдХрдо рд╕реЗ рдХрдо рдЗрд╕реЗ --kubelet-insecure-tls рд╕рд╛рде MS рдХреЛ рдлрд╝реНрд▓реИрдЧ рдХрд░рдиреЗ рдХрд╛ рдХреЛрд░реНрд╕, рд▓реЗрдХрд┐рди рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдХрд┐ рдЗрд╕реЗ рд╕реБрд░рдХреНрд╖рд┐рдд рддрд░реАрдХреЗ рд╕реЗ рдХреИрд╕реЗ рдареАрдХ рдХрд┐рдпрд╛ рдЬрд╛рдП рдФрд░ рдлрд┐рд░ рдмрд╕ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реБрдИред ЁЯЩВ

рдЕрднреА рдХреЗ рд▓рд┐рдП рдореЗрд░реЗ рд▓рд┐рдП serverTLSbootstrap рдзреНрд╡рдЬ рдХреЛ рдХреНрдпреВрдмрд▓реЗрдЯ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рдЖрд╕рд╛рди рд╣реИ рдФрд░ рдкреНрд░рдорд╛рдгрдкрддреНрд░реЛрдВ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЕрдиреБрдореЛрджрд┐рдд рдХрд░рддрд╛ рд╣реИред рдореИрдВрдиреЗ рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЗрд╕рдХрд╛ рдПрдХ рдкрд╣рд▓реВ рджреЗрдЦрд╛ рд╣реИ, рдЬреЛ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк рдиреЛрдб рдкрд░ рдкреЙрдбреНрд╕ рдХреЗ рд╕рд╛рде рддрдм рддрдХ рдмрд╛рддрдЪреАрдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рдЬрдм рддрдХ рдХрд┐ рдЖрдк рд╕рд░реНрдЯрд┐рдлрд┐рдХреЗрдЯ рдХреЛ рдордВрдЬреВрд░реА рдирд╣реАрдВ рджреЗрддреЗред (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЕрдиреБрдореЛрджрди рд╕реЗ рдкрд╣рд▓реЗ рдиреЛрдб рдкрд░ рдЪрд▓рдиреЗ рд╡рд╛рд▓реЗ рдкреЙрдбреНрд╕ рдкрд░ kubectl рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИ)

рдореИрдВ рд╕рдВрд╡рд░реНрджреНрдзрди рдореБрджреНрджреЗ рдХреЗ рд╕рд╛рде рднреА рдкрд╛рд▓рди рдХрд░реВрдБрдЧрд╛ред рдзрдиреНрдпрд╡рд╛рджред

рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рджреБрдЦрдж рд╣реИ рдХрд┐ рдХреБрдмреЗрджрд╛рдо рдХреЗ рд╕рд╛рде рдЬреЛ рдХрд╛рдлреА рд╣рдж рддрдХ рдкрд░рд┐рдкрдХреНрд╡ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдХреНрдпреВрдмрд▓реЗрдЯ рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдХреЗ рд▓рд┐рдП рдкрд░рд┐рдгрд╛рдо рд╕реНрд╡рдпрдВ рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рд╣реИрдВ рдФрд░ рдмрд╣реБрдд рд╕реЗ рд▓реЛрдЧ рдЪреАрдЬреЛрдВ рдХреЛ рдареАрдХ рд╕реЗ рдХрд░рдиреЗ рдФрд░ рдЖрджрд┐ рдХреЗ рдмрдЬрд╛рдп рдореИрдЯреНрд░рд┐рдХреНрд╕ рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП kubelet-insecure-tls рдЪреБрдирддреЗ рд╣реИрдВ :(

рдпрд╣ рдПрдХ рдЬрдЯрд┐рд▓ рд╕рдорд╕реНрдпрд╛ рд╣реИред

рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ:
https://github.com/kontena/kubelet-rubber-stamp
рдпрд╛
https://github.com/brancz/kube-rbac-proxy
workarounds рдХреЗ рд░реВрдк рдореЗрдВ

рдпрд╣ рдПрдХ рдЬрдЯрд┐рд▓ рд╕рдорд╕реНрдпрд╛ рд╣реИред

рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ:
https://github.com/kontena/kubelet-rubber-stamp
рдпрд╛
https://github.com/brancz/kube-rbac-proxy
workarounds рдХреЗ рд░реВрдк рдореЗрдВ

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ https://github.com/kontena/kubelet-rubber-stamp рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрдореЛрдЬреА рдкреНрд░реЙрдХреНрд╕реА рдХреЗ рдмрдЬрд╛рдп рдЕрдзрд┐рдХ рд╕рд╣реА рд╕рдорд╛рдзрд╛рди рд▓рдЧрддрд╛ рд╣реИред

рдЪрд░рдг 1:
рдЬреЛрдбрд╝рдирд╛
serverTLSBootstrap: true рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рдЕрдВрдд рдореЗрдВ /var/lib/kubelet/config.yaml рдХреНрдпреВрдмрд▓реЗрдЯреНрд╕ рдкреБрдирд░реНрдирд┐рдзрд╛рд░рдг рдХреЗ рд▓рд┐рдП /var/lib/kubelet/config.yaml

рдЪрд░рдг рджреЛ:
рдХреНрдпреВрдмрд▓реЗрдЯ-рд░рдмрд░-рд╕реНрдЯреИрдореНрдк рдХреА рддреИрдирд╛рддреА рдХрд░реЗрдВ

service_account.yaml
role.yaml
role_binding.yaml
operator.yaml

рдЪрд░рдг 3:
рдореИрдЯреНрд░рд┐рдХреНрд╕-рд╕рд░реНрд╡рд░ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ рдФрд░ --kubelet-insecure-tls рдирд┐рдХрд╛рд▓реЗрдВ

рдкрд░рд┐рдгрд╛рдо:

kubectl get csr
NAME        AGE   SIGNERNAME                      REQUESTOR          CONDITION
csr-7dvsx   31m   kubernetes.io/kubelet-serving   system:node:u-02   Approved,Issued
csr-d6rvm   31m   kubernetes.io/kubelet-serving   system:node:u-03   Approved,Issued
csr-szblz   31m   kubernetes.io/kubelet-serving   system:node:u-01   Approved,Issued
csr-zjfgj   31m   kubernetes.io/kubelet-serving   system:node:u-04   Approved,Issued

рдЕрд░реЗ, рдмрд╕ рдЙрд╕ @vainkop рдХреЛ рдЬреЛрдбрд╝рдирд╛ рд╣реИ
рдЕрдкрдиреЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ kubeadm init рдХреЗ рджреМрд░рд╛рди рдХреНрд▓рд╕реНрдЯрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ serverTLSBootstrap рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП KubeletConfiguration API рдСрдмреНрдЬреЗрдХреНрдЯ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкрд╛рд╕ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

`` `kubeadm-config.yaml
apiVersion: kubeadm.k8s.io/v1beta2
рддрд░рд╣: рдХреНрд▓рд╕реНрдЯрд░рд╕реНрдЯрд░рдлрд┐рдЧрд░реЗрд╢рди

...

apiVersion: kubelet.config.k8s.io/v1beta1
рддрд░рд╣: KubeletConfiguration
serverTLSBootstrap: рд╕рдЪ рд╣реИ

`kubeadm init --config=kubeadm-config.yaml`

Then all kubelet's will automatically be set up using the `serverTLSBootstrap` flag.

To get the CSRs

kubectl рдХреЛ csr рдорд┐рд▓рддрд╛ рд╣реИ
NAME AGE SIGNERNAME REQUESTOR CONDITION
csr-2qkdw 2m1s kubernetes.io/kube-apiserver-client-kubelet рд╕рд┐рд╕реНрдЯрдо: рдмреВрдЯрд╕реНрдЯреНрд░реИрдк : fcufbo рд╕реНрд╡реАрдХреГрдд, рдЬрд╛рд░реА рдХрд┐рдП рдЧрдП
рд╕реАрдПрд╕рдЖрд░ -9wvgt 114s kubernetes.io/kubelet-serves рд╕рд┐рд╕реНрдЯрдо: рдиреЛрдб : рд╡рд░реНрдХрд░ -1
рд╕реАрдПрд╕рдЖрд░-lz97v 4m58s kubernetes.io/kubelet-serving рд╕рд┐рд╕реНрдЯрдо: рдиреЛрдб : рдЧреБрд░реБ-1 рд╡рд┐рдЪрд╛рд░рд╛рдзреАрди
рд╕реАрдПрд╕рдЖрд░- rsdsp 4m59s kubernetes.io/kube-apiserver-client-kubelet рд╕рд┐рд╕реНрдЯрдо: рдиреЛрдб : рдорд╛рд╕реНрдЯрд░ -1 рд╕реНрд╡реАрдХреГрдд, рдЬрд╛рд░реА
рд╕реАрдПрд╕рдЖрд░-wgxqs 4m49s kubernetes.io/kubelet-serving рд╕рд┐рд╕реНрдЯрдо: рдиреЛрдб : рдЧреБрд░реБ-1 рд╡рд┐рдЪрд╛рд░рд╛рдзреАрди

Then either approve them manually or deploy https://github.com/kontena/kubelet-rubber-stamp which approves them automatically. I just tried it with kubelet-rubber-stamp and it works great.

Also I did not seem to need to restart the kubelet's this way, they picked up their certificates as soon as I approvde the CSR, but a caveat is that the kublet's have NO cert until the CSR is approved, it does not get a self signed certificate first.

kubectl рдкреНрд░рдорд╛рдгрдкрддреНрд░ csr-ab123 # рдпрд╛ рд░рдмрд░-рд╕реНрдЯреИрдореНрдк рдХреА рддреИрдирд╛рддреА рдХреЛ рдордВрдЬреВрд░реА рджреЗрддрд╛ рд╣реИ!

kubectl рдХреЛ csr рдорд┐рд▓рддрд╛ рд╣реИ
NAME AGE SIGNERNAME REQUESTOR CONDITION
рд╕реАрдПрд╕рдЖрд░-9wvgt 3m kubernetes.io/kubelet-serving рд╕рд┐рд╕реНрдЯрдо: рдиреЛрдб : рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ -1 рд╕реНрд╡реАрдХреГрдд, рдЬрд╛рд░реА рдХрд┐рдП рдЧрдП
...
`` `

рдПрдХ рдФрд░ рд╡рд┐рдЪрд┐рддреНрд░ рдмрд╛рдд рдпрд╣рд╛рдБ рдкреНрд░рддреАрдд рд╣реЛрддреА рд╣реИ btw, рдЬреЛ рдпрд╣ рд╣реИ рдХрд┐ рдорд╛рд╕реНрдЯрд░ рдиреЛрдб рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рджреЛ рдмрд╛рд░ рд╕реАрдПрд╕рдЖрд░ рд╣реИред (рдХрдо рд╕реЗ рдХрдо рджреЛ рдмрд╛рд░ рдореИрдВрдиреЗ рдпрд╣ рдХреЛрд╢рд┐рд╢ рдХреА)

рд▓реЗрдХрд┐рди рдЬреИрд╕рд╛ рдХрд┐ @nijave рдКрдкрд░ рдХреА рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ рдХрд╣рддрд╛ рд╣реИ, рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рд░рдмрд░-рд╕реНрдЯреИрдкрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд╕реБрд░рдХреНрд╖рд╛ рдирд┐рд╣рд┐рддрд╛рд░реНрде рдХреНрдпрд╛ рд╣реИрдВред

@allir , @vainkop рдЬрд╣рд╛рдБ рддрдХ рд╣реИ, рдореИрдВ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдБ рдХрд┐ рдХреНрдпреВрдмрд▓реЗрдЯ-рд░рдмрд░-рд╕реНрдЯреИрдореНрдк рдХреЗрд╡рд▓ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ CSR рдХрд╛ рд╕рд╛рдорд╛рдиреНрдп рдирд╛рдо рдЖрд╡рд╢реНрдпрдХ рдирд╛рдо рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╕рддреНрдпрд╛рдкрд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпреВрдмрд▓реЗрдЯ рджреНрд╡рд╛рд░рд╛ рдЕрдиреБрд░реЛрдзрд┐рдд рдЕрддрд┐рд░рд┐рдХреНрдд рд╣реЛрд╕реНрдЯрдирд╛рдо рдФрд░ IP рдкрддреЗ рдорд╛рдиреНрдп рд╣реИрдВ рдпрд╛ рдирд╣реАрдВред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдПрдХ рд╣рдорд▓рд╛рд╡рд░ рдЬрд┐рд╕рдХреЗ рдкрд╛рд╕ рдХреНрдпреВрдмрд▓реЗрдЯ рдХреНрд▓рд╛рдЗрдВрдЯ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рддрдХ рдкрд╣реБрдВрдЪ рд╣реИ, рд╡рд╣ рдореВрд▓ рд░реВрдк рд╕реЗ рдХрд┐рд╕реА рднреА рдбреЛрдореЗрди рдирд╛рдо рдпрд╛ рдЖрдИрдкреА рдкрддреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдмрдирд╛ рд╕рдХрддрд╛ рд╣реИред рд╕рднреА рдХреНрд▓рд╛рдЗрдВрдЯ рдЬреЛ рд░реВрдЯ CA рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдП рдЧрдП рд╣реИрдВ, рдлрд┐рд░ рдЗрд╕ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░реЗрдВрдЧреЗред
рдмреЗрд╢рдХ рд╣реЛрд╕реНрдЯрдирд╛рдо рдФрд░ рдЖрдИрдкреА рдкрддреЗ рдЬреЛ рдХрд┐рд╕реА рджрд┐рдП рдЧрдП рдХреНрдпреВрдмрд▓реЗрдЯ рдХреЗ рд▓рд┐рдП рдорд╛рдиреНрдп рд╣реИрдВ, рдХрдард┐рди рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдХреЛрдИ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдирд╣реАрдВ рд╣реИ рдЬреЛ рдкреБрд╖реНрдЯрд┐ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпреВрдмрд▓реЗрдЯ рдХреЛ рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рд╣реИ рдпрд╛ рдирд╣реАрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдПрдкреАрдЖрдИ рд╕рд░реНрд╡рд░ рдкрд░ рдиреЛрдб рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдХреНрдпреВрдмрд▓реЗрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдмрд┐рдирд╛ рд╕реАрдорд╛ рдХреЗ рдЕрдкрдбреЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЕрд░реЗ, рдмрд╕ рдЙрд╕ @vainkop рдХреЛ рдЬреЛрдбрд╝рдирд╛ рд╣реИ
рдЕрдкрдиреЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ kubeadm init рдХреЗ рджреМрд░рд╛рди рдХреНрд▓рд╕реНрдЯрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ serverTLSBootstrap рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП KubeletConfiguration API рдСрдмреНрдЬреЗрдХреНрдЯ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкрд╛рд╕ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
kubeadm init --config=kubeadm-config.yaml
рддрдм рд╕рднреА рдХреНрдпреВрдмрд▓реЗрдЯ рд╕реНрд╡рддрдГ serverTLSBootstrap рдзреНрд╡рдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реЗрдЯ рд╣реЛ рдЬрд╛рдПрдВрдЧреЗред

рдпрд╛ рдПрдХ рдореМрдЬреВрджрд╛ K8s рдХреЗ рд▓рд┐рдП рд╕реЗрдЯрдЕрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ:

  tasks:
    - name: Insert a line at the end of /var/lib/kubelet/config.yaml
      lineinfile:
        path: /var/lib/kubelet/config.yaml
        line: 'serverTLSBootstrap: true'

+ рдХреНрдпреВрдмрд▓реЗрдЯреНрд╕ рдХреЛ рдкреБрдирдГ рдЖрд░рдВрдн рдХрд░реЗрдВ

рд╡рд╛рд╣ рдореИрдВ рдмрд╣реБрдд рдЦреБрд╢ рд╣реВрдВ рдХрд┐ рдореБрдЭреЗ рдпрд╣ рдореБрджреНрджрд╛ рдорд┐рд▓рд╛, рдФрд░ рдореИрдВ рдЕрдХреЗрд▓рд╛ рдирд╣реАрдВ рд╣реВрдВ рдЬреЛ рдЗрд╕ рдЙрдЪрд┐рдд рддрд░реАрдХреЗ рд╕реЗ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред :)

рдЕрдм рдореБрдЭреЗ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдЕрдкрдиреЗ рд╡рд┐рдЪрд╛рд░ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рджреЗрдВ (рдХреГрдкрдпрд╛ рдореБрдЭреЗ рд╕рд╣реА рдХрд░реЗрдВ рдЕрдЧрд░ рдореИрдВ рдХрд╣реАрдВ рдЧрд▓рдд рд╣реВрдВ) :

рдореВрд▓ рд╕рдорд╕реНрдпрд╛ рдХреА рдкрд╣рд▓реА рджреГрд╖реНрдЯрд┐:
рд╡рд░реНрддрдорд╛рди рдореЗрдВ kubeadm рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕рднреА рдХреНрдпреВрдмрд▓реЗрдЯреНрд╕ рдХреЗ рд▓рд┐рдП рд╡реЗрдмрд╣реВрдХ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рд╕рдХреНрд╖рдо рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХреНрдпреВрдмрд▓реЗрдЯ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдХрдиреЗрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдХреНрд▓рд╛рдЗрдВрдЯ рдкреНрд░рдорд╛рдгрдкрддреНрд░реЛрдВ рдХреЛ рдорд╛рдиреНрдп рдХрд░ рд░рд╣рд╛ рд╣реИ, рднрд▓реЗ рд╣реА --kubelet-insecure-tls рд╡рд┐рдХрд▓реНрдк рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реЛред
рджреВрд╕рд░реА рддрд░рдл рд╕реЗ рдореЗрдЯреНрд░рд┐рдХреНрд╕-рд╕рд░реНрд╡рд░ рдХреЗ рдкрд╛рд╕ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХреНрдпреВрдмрд▓реЗрдЯ рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЕрдкрд╛рд░рджрд░реНрд╢рд┐рддрд╛ рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдиреЛрдб рдкрд░ рд╕реНрд╡-рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рд╣реИред

рдореИрдЯреНрд░рд┐рдХреНрд╕-рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП --kubelet-insecure-tls рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд╕рдВрднрд╛рд╡рд┐рдд рдЬреЛрдЦрд┐рдо:
рдЬрдмрдХрд┐ рдХреНрдпреВрдмрд▓реЗрдЯ рдбреЗрдЯрд╛ рдХреБрдЫ рд╣рдж рддрдХ рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИ рдФрд░ рдХрднреА рднреА рд╕рдлрд▓ webhook рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреЗ рдмрд┐рдирд╛ рдореИрдЯреНрд░рд┐рдХреНрд╕-рд╕рд░реНрд╡рд░ рдХреЛ рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ рдХреЛрдИ рд╡реНрдпрдХреНрддрд┐ рд╕рд░реНрд╡рд░ рдЖрдИрдкреА рдпрд╛ рд╣реЛрд╕реНрдЯрдирд╛рдо рд╕реЗ рд╕рдордЭреМрддрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЧрд▓рдд рдЖрдБрдХрдбрд╝реЗ рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдХрдиреЗрдХреНрд╢рди рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореАрдЯреНрд░рд┐рдХ рдЖрдИрдкреА-рдПрдбреНрд░реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИ рдФрд░ рдХреНрдпреВрдм-рдЕрдкреАрдЬрд╝рд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдиреЛрдб рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╣реЛрд╕реНрдЯрдирд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдорд▓рд╛рд╡рд░ рдХреЛ рдПрдкреАрдЖрдИ-рд╕рд░реНрд╡рд░, рдбреАрдПрдирдПрд╕ рдпрд╛ рдиреЛрдб рдЖрдИрдкреА-рдПрдбреНрд░реЗрд╕ рдХреЛ рдкрд╣рд▓реЗ рд╣реИрдХ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рдереЛрдбрд╝рд╛ рдЕрд╡рд▓реЛрдХрди:
рдореЗрдЯреНрд░рд┐рдХреНрд╕-рд╕рд░реНрд╡рд░ рдПрдХрд▓ рд╕реЗрд╡рд╛ рдирд╣реАрдВ рд╣реИ рдЬреЛ рд╕реАрдзреЗ рдХреНрдпреВрдмрд▓реЗрдЯреНрд╕ рддрдХ рдкрд╣реБрдВрдЪ рд░рд╣реА рд╣реИред рдХрдВрдЯреЗрдирд░ рд▓реЙрдЧ рдХреЛ рдкрдврд╝рдиреЗ рдпрд╛ рдЙрди рдкрд░ рд╢реЗрд▓ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреВрдм-рдЕрдкреАрдЬрд╝рд░ рднреА рдРрд╕рд╛ рдХрд░ рд░рд╣рд╛ рд╣реИред рдЕрдЪреНрдЫрд╛ рд╕рд╡рд╛рд▓ рдпрд╣ рд╣реИ рдХрд┐ рдХреНрдпреВрдм-рдЕрдкреАрдЬрд╝рд░ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХреНрдпреВрдмрд▓реЗрдЯ рдХреЗ рд╕рд╛рде рд╕рдВрдмрдВрдз рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реИ рдЬрдмрдХрд┐ рд╕реАрдП рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдИ рдЬрд╛рдирдХрд╛рд░реА рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдЬрд╛рд░реА рдХрд┐рдпрд╛ рд╣реИ?
рдХреНрдпрд╛ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ --kubelet-insecure-tls рд╡рд┐рдХрд▓реНрдк рдХреЗ рд╕рд╛рде рдореИрдЯреНрд░рд┐рдХреНрд╕ рд╕рд░реНрд╡рд░ рдХреЗ рд╕рдорд╛рди рд╡реНрдпрд╡рд╣рд╛рд░ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ?

рд╕рдВрднрд╛рд╡рд┐рдд рд╕реНрдерд┐рддрд┐:
рдЖрдЬрдХрд▓ рд╡реЗрдмрдмреБрдХ рдФрд░ рдПрдкреАрдЖрдИ рдПрдХрддреНрд░реАрдХрд░рдг рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдореЗрдВ рдХрд╛рдлреА рд▓реЛрдХрдкреНрд░рд┐рдп рд╣реИрдВред рдпрд╣ рд╕рднреА рдПрдХ рд╣реА рддрд░рд╣ рд╕реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддреЗ рд╣реИрдВ, рдпрд╣ рд╕реНрд╡рдпрдВ рдХреЗ рд╕реАрдП рдФрд░ рд╕реАрдЖрд░рдЯреА / рдХреБрдВрдЬреА рдЬреЛрдбрд╝реА рдЙрддреНрдкрдиреНрди рдХрд░рдХреЗ рд╣реИред рд╕реАрдП рд╣реИрд╢ рдХреЛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдВрд╕рд╛рдзрди рдореЗрдВ рднреА рд╕рдВрдЧреНрд░рд╣рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдХреНрдпреВрдм-рдЕрдкреАрдЬрд╝рд░ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╡рд╣ рдХрд┐рд╕ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:

  • APIServices рдЕрдкрдиреЗ apiservices.apiregistration.k8s.io рд╕рдВрд╕рд╛рдзрди рдореЗрдВ рд╕рдВрдмрдВрдзрд┐рдд CA рд╣реИрд╢ рдХрд╛ рднрдВрдбрд╛рд░рдг рдХрд░ рд░рд╣реЗ рд╣реИрдВ:

    spec:
    caBundle: <ca-hash>
    
  • Webhooks рдЕрдкрдиреЗ validatingwebhookconfigurations.admissionregistration.k8s.io рдФрд░ mutatingwebhookconfigurations.admissionregistration.k8s.io рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдореЗрдВ рд╕рдВрдмрдВрдзрд┐рдд CA рд╣реИрд╢ рдХрд╛ рднрдВрдбрд╛рд░рдг рдХрд░ рд░рд╣реЗ рд╣реИрдВ:

    webhooks:
    - clientConfig:
      caBundle: <ca-hash>
    

рдореЗрд░реЗ рд▓рд┐рдП рдпрд╣ рдмрд╣реБрдд рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдиреЛрдб рд╕рдВрд╕рд╛рдзрди рдХреЗ рд╕рдорд╛рди caBundle рдЙрдирдХреЗ spec , рдЬрд╣рд╛рдВ рдХреНрдпреВрдмрд▓реЗрдЯ рдЕрдкрдиреЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реЗрд╡рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд╕реАрдП рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

spec:
  caBundle: <ca-hash>

рдореЗрдЯреНрд░рд┐рд╕-рд╕рд░реНрд╡рд░ рдФрд░ рдХреНрдпреВрдм-рдЕрдкреАрдЬрд╝рд░ рджреЛрдиреЛрдВ рдХреЛ рдХреНрдпреВрдмрд▓реЗрдЯреНрд╕ рдХреЗ рдХрдиреЗрдХреНрд╢рди рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдФрд░ рднрд░реЛрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрди рдкреНрд░рдорд╛рдгрдкрддреНрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

@ kfox1111 рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдкрд╣рд▓реЗ рдПрдХ рд╕рдорд╛рди рд╡рд┐рдЪрд╛рд░ рд╡реНрдпрдХреНрдд рдХрд┐рдпрд╛ рдерд╛ https://github.com/kubernetes/kubeadm/issues/1223#issuecomment -460854312

рдЕрдЪреНрдЫрд╛ рд╕рд╡рд╛рд▓ рдпрд╣ рд╣реИ рдХрд┐ рдХреНрдпреВрдм-рдЕрдкреАрдЬрд╝рд░ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХреНрдпреВрдмрд▓реЗрдЯ рдХреЗ рд╕рд╛рде рд╕рдВрдмрдВрдз рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реИ рдЬрдмрдХрд┐ рд╕реАрдП рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдИ рдЬрд╛рдирдХрд╛рд░реА рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдЬрд╛рд░реА рдХрд┐рдпрд╛ рд╣реИ?
рдХреНрдпрд╛ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ --kubelet-insecure-tls рд╡рд┐рдХрд▓реНрдк рдХреЗ рд╕рд╛рде рдореИрдЯреНрд░рд┐рдХреНрд╕ рд╕рд░реНрд╡рд░ рдХреЗ рд╕рдорд╛рди рд╡реНрдпрд╡рд╣рд╛рд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ?

рдЗрд╕ рдкреНрд░рд╢реНрди рдХрд╛ рдЙрддреНрддрд░ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдореИрдВ рдпрд╣рд╛рдВ @luxas рдЙрджреНрдзрд░рдг

рджрд╛рдИрдВ рдУрд░, рд╣рдо рдПрдкреА рд╕рд░реНрд╡рд░ рд╕реЗ рдХреНрдпреВрдмрд▓реЗрдЯ рд╕рд░реНрд╡рд░реЛрдВ рд╕реЗ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд┐рдП рдЧрдП рдХрдиреЗрдХреНрд╢рди рдирд╣реАрдВ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдХреНрдпреВрдмрд▓реЗрдЯ рдХрд╛ рдЕрдкрдирд╛ рд╕реНрд╡-рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдкреНрд░рдорд╛рдг рдкрддреНрд░ рд╣реИред рд╣рдо рднрд╡рд┐рд╖реНрдп рдореЗрдВ рд╕реЗрд╡рд╛рд░рдд рд╡рд░реНрдЧреЛрдВ рдХреЛ рд╕реЗрд╡рд╛рд░рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдореИрдиреБрдЕрд▓ рдЕрдиреБрдореЛрджрди рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕реБрд░рдХреНрд╖рд┐рдд рдирд╣реАрдВ рд╣реИред

https://github.com/kubernetes/kubeadm/issues/118#issuecomment -4049492929 рд╕реЗ

рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдХрд┐рд╕реА рджрд┐рди рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ

[root<strong i="6">@jenkins</strong> metrics-server]# kubectl -n kube-system logs -f metrics-server-6955d88db9-lftlz
I1120 08:23:09.094132       1 requestheader_controller.go:169] Starting RequestHeaderAuthRequestController
I1120 08:23:09.094234       1 shared_informer.go:240] Waiting for caches to sync for RequestHeaderAuthRequestController
I1120 08:23:09.094270       1 configmap_cafile_content.go:202] Starting client-ca::kube-system::extension-apiserver-authentication::client-ca-file
I1120 08:23:09.094279       1 shared_informer.go:240] Waiting for caches to sync for client-ca::kube-system::extension-apiserver-authentication::client-ca-file
I1120 08:23:09.094307       1 configmap_cafile_content.go:202] Starting client-ca::kube-system::extension-apiserver-authentication::requestheader-client-ca-file
I1120 08:23:09.094315       1 shared_informer.go:240] Waiting for caches to sync for client-ca::kube-system::extension-apiserver-authentication::requestheader-client-ca-file
I1120 08:23:09.095064       1 dynamic_serving_content.go:130] Starting serving-cert::/tmp/apiserver.crt::/tmp/apiserver.key
I1120 08:23:09.095207       1 secure_serving.go:197] Serving securely on [::]:4443
I1120 08:23:09.095259       1 tlsconfig.go:240] Starting DynamicServingCertificateController
I1120 08:23:09.194453       1 shared_informer.go:247] Caches are synced for client-ca::kube-system::extension-apiserver-authentication::requestheader-client-ca-file 
I1120 08:23:09.194660       1 shared_informer.go:247] Caches are synced for client-ca::kube-system::extension-apiserver-authentication::client-ca-file 
I1120 08:23:09.194455       1 shared_informer.go:247] Caches are synced for RequestHeaderAuthRequestController 
E1120 08:23:10.420643       1 server.go:132] unable to fully scrape metrics: [unable to fully scrape metrics from node k8s-master3: unable to fetch metrics from node k8s-master3: Get "https://10.39.140.250:10250/stats/summary?only_cpu_and_memory=true": x509: cannot validate certificate for 10.39.140.250 because it doesn't contain any IP SANs, unable to fully scrape metrics from node k8s-master1: unable to fetch metrics from node k8s-master1: Get "https://10.39.140.248:10250/stats/summary?only_cpu_and_memory=true": x509: cannot validate certificate for 10.39.140.248 because it doesn't contain any IP SANs, unable to fully scrape metrics from node k8s-master2: unable to fetch metrics from node k8s-master2: Get "https://10.39.140.249:10250/stats/summary?only_cpu_and_memory=true": x509: cannot validate certificate for 10.39.140.249 because it doesn't contain any IP SANs, unable to fully scrape metrics from node k8s-node1: unable to fetch metrics from node k8s-node1: Get "https://10.39.140.251:10250/stats/summary?only_cpu_and_memory=true": x509: cannot validate certificate for 10.39.140.251 because it doesn't contain any IP SANs]
I1120 08:23:33.874949       1 requestheader_controller.go:183] Shutting down RequestHeaderAuthRequestController
I1120 08:23:33.874978       1 configmap_cafile_content.go:223] Shutting down client-ca::kube-system::extension-apiserver-authentication::client-ca-file
I1120 08:23:33.874993       1 configmap_cafile_content.go:223] Shutting down client-ca::kube-system::extension-apiserver-authentication::requestheader-client-ca-file
I1120 08:23:33.875019       1 tlsconfig.go:255] Shutting down DynamicServingCertificateController
I1120 08:23:33.875026       1 dynamic_serving_content.go:145] Shutting down serving-cert::/tmp/apiserver.crt::/tmp/apiserver.key
I1120 08:23:33.875041       1 secure_serving.go:241] Stopped listening on [::]:4443

рдЗрд╕ рдореБрджреНрджреЗ рд╕реЗ рдХреЛрдИ рдЦрдмрд░ рдирд╣реАрдВ? рдореИрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдорд╛рдзрд╛рди рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реЛрдЧреАред

рд╣рдо рдпрд╣рд╛рдВ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХрд╛ рджрд╕реНрддрд╛рд╡реЗрдЬреАрдХрд░рдг рдХрд░ рд░рд╣реЗ рд╣реИрдВ:
https://github.com/kubernetes/website/pull/27071
https://github.com/kubernetes/kubeadm/issues/1602

рд╣рдо рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдЦреБрд▓рд╛ рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдХреБрдмреЗрджрдо рдХреЗ рд╕рд╛рде рд╣рд╕реНрддрд╛рдХреНрд╖рд░рдХрд░реНрддрд╛ рдХреЛ рддреИрдирд╛рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреА рдЬрдЯрд┐рд▓рддрд╛рдУрдВ рдХреЗ рдХрд╛рд░рдг, рдпрд╣ рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╣рдо рдЬрд▓реНрдж рд╣реА рдпрд╣ рдмрджрд▓рд╛рд╡ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

shenshouer picture shenshouer  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

jessfraz picture jessfraz  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

kvaps picture kvaps  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

mattmoyer picture mattmoyer  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

tmjd picture tmjd  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ