<p>kubeadm init рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ configmaps рдХреЗ рд▓рд┐рдП RBAC рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ</p>

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

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

рдмрдЧ рд░рд┐рдкреЛрд░реНрдЯ

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

рдХреБрдмреЗрджрдо рд╕рдВрд╕реНрдХрд░рдг ( kubeadm version ): "v1.12.0-alp.0.957 + 1235adac3802fd-dirty"

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

рдореИрдВрдиреЗ kubeadm init рд╕рд╛рде рдПрдХ рдХрдВрдЯреНрд░реЛрд▓ рдкреНрд▓реЗрди рдиреЛрдб рдмрдирд╛рдпрд╛ред рдореИрдВрдиреЗ рдЕрд▓рдЧ рдиреЛрдб рдкрд░ kubeadm join рднрд╛рдЧрд╛ рдФрд░ рдпрд╣ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдорд┐рд▓рд╛:

[kubelet] Downloading configuration for the kubelet from the "kubelet-config-1.12" ConfigMap in the kube-system namespace                                                                        
configmaps "kubelet-config-1.12" is forbidden: User "system:bootstrap:4ipkdk" cannot get configmaps in the namespace "kube-system"                                                               

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

рдореИрдВ kubeadm join рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рдХреА рдЙрдореНрдореАрдж рдХрд░рддрд╛ рдерд╛

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

рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛрдореИрдВ рдмрддрд╛ рд╕рдХрддрд╛ рд╣реВрдВ, рджреВрд╕рд░реЗ рдиреЛрдб рдкрд░ kubeadm init рдФрд░ kubeadm join рдЪрд▓рд╛рдПрдВред рдореЗрд░реЗ рдкрд╛рд╕ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдХреЛрдб / yaml рд╣реИрдВ рдЬреЛ рдХреЙрдиреНрдлрд┐рдЧрд░ рдореИрдк (рдЦреБрд╢ aws рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ) рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░рдиреЗ рдЪрд╛рд╣рд┐рдПред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдпрд╣ рдкреБрдирд░реБрддреНрдкрд╛рджрди рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╣реЛрдЧрд╛, рддреЛ рдореИрдВ рдЕрдзрд┐рдХ рд╕реНрдкрд╖реНрдЯ рдирд┐рд░реНрджреЗрд╢ рджреВрдВрдЧрд╛ред

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

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ kubeadm join рдФрд░ kubeadm init рдХреЙрдиреНрдлрд┐рдЧрд░ рдирдХреНрд╢реЗ рдХреЛ рдЕрд╕рдВрдЧрдд рд░реВрдк рд╕реЗ рдирд╛рдо рджреЗ рд░рд╣реЗ рд╣реИрдВред init рдХрдорд╛рдВрдб рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ kubernetesVersion рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИ рдФрд░ join рдХрдорд╛рдВрдб рдХреЙрдореНрдмреИрдЯ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЙрдиреНрдлрд┐рдЧрд░ рдореИрдк рдХреЗ рдирд╛рдо рдХреЗ рд▓рд┐рдП рдХрд░рддреА рд╣реИ (рдЬреИрд╕реЗ kubelet-config-1.1)ред рдпрд╣ рдареАрдХ рд╣реИ рдЬрдм рддрдХ рдЖрдкрдХреЗ рдкрд╛рд╕ рдмреЗрдореЗрд▓ рд╕рдВрд╕реНрдХрд░рдг рдирд╣реАрдВ рд╣реИрдВ рддрдм рддрдХ рдпрд╣ рдареАрдХ рдирд╣реАрдВ рд╣реИред

init рдХрдорд╛рдВрдб kube-public рдиреЗрдорд╕реНрдкреЗрд╕ рдореЗрдВ рдорд╛рдирдЪрд┐рддреНрд░реЛрдВ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдирд╛рдо рдкрд╣реБрдБрдЪ рдХреЗ рд▓рд┐рдП RBAC рдирд┐рдпрдо рдмрдирд╛рддреА рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдирд╛рдорд╕реНрдерд╛рди рдореЗрдВ рдХреНрдпреВрдмрд▓реЗрдЯ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддреАрдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдиреЛрдб рдЬреЙрдЗрдирд┐рдВрдЧ рдХреА рдХреЛрдИ рдкрд╣реБрдБрдЪ рдирд╣реАрдВ рд╣реИ рдпрд╣ред

kinbug prioritimportant-longterm

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

рдпрд╣ рдареАрдХ рд╣реИ рдЬрдм рддрдХ рдЖрдкрдХреЗ рдкрд╛рд╕ рдмреЗрдореЗрд▓ рд╕рдВрд╕реНрдХрд░рдг рдирд╣реАрдВ рд╣реИрдВ рддрдм рддрдХ рдпрд╣ рдареАрдХ рдирд╣реАрдВ рд╣реИред

text

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

рдпрд╣ рдареАрдХ рд╣реИ рдЬрдм рддрдХ рдЖрдкрдХреЗ рдкрд╛рд╕ рдмреЗрдореЗрд▓ рд╕рдВрд╕реНрдХрд░рдг рдирд╣реАрдВ рд╣реИрдВ рддрдм рддрдХ рдпрд╣ рдареАрдХ рдирд╣реАрдВ рд╣реИред

text

@chuckha рдЕрдЧрд░ рдореБрдЭреЗ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдпрд╛рдж рд╣реИ kubelet-* рдХреЙрдиреНрдлрд┐рдЧрд░ рдирдХреНрд╢реЗ kube-system рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдП рдФрд░ kubeadm рдмреВрдЯрд╕реНрдЯреНрд░реИрдк рдЯреЛрдХрди рдФрд░ рдиреЛрдбреНрд╕ рддрдХ рдкрд╣реБрдВрдЪ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдпрдо рдмрдирд╛рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдореИрдВ рдЕрдВрддрд┐рдо рджреМрд░ рдХреЗ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рдмрд╛рдж рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдЬрд╛рдБрдЪрдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдБ

@chuckha рдореИрдВрдиреЗ рдПрдХ рдХреНрд▓рд╕реНрдЯрд░ рдкрд░ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдкреВрд░рд╛ рдХрд┐рдпрд╛ рдЬреЛ рд╕рднреА рдШрдЯрдХреЛрдВ рдХреЗ рд╕рд╛рде рдорд╛рд╕реНрдЯрд░ + рд░рд┐рд▓реАрдЬрд╝ рд╕рдВрдЦреНрдпрд╛ рд╕реЗ v1.11.0 рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рд╣реИ

  • kubelet-config-1.11 kube-system рдореЗрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛
  • рднреВрдорд┐рдХрд╛ kubeadm:kubelet-config-1.11 рдХрд╛ рд╡рд┐рдиреНрдпрд╛рд╕ рдорд╛рдирдЪрд┐рддреНрд░ рдкрд░ рдЕрдиреБрдорддрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде kube-system рдореЗрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛
  • рд░реЛрд▓рдмрд╛рдЗрдВрдбрд┐рдВрдЧ kubeadm:kubelet-config-1.11 kube-system system:nodes рдФрд░ system:bootstrappers:kubeadm:default-node-token рд▓рд┐рдП рдмрдирд╛рдИ рдЧрдИ рдереА

рддреЛ IMO:

  • RBAC рдмрдирд╛рдП рдЬрд╛рддреЗ рд╣реИрдВ
  • рдпрджрд┐ рд╣рдо "рд╕рдВрд╕реНрдХрд░рдг рд╕реБрд╕рдВрдЧрдд" рдкрд░рд┐рджреГрд╢реНрдп рдореЗрдВ рд╣реИрдВ, рддреЛ рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ

рдЕрднреА рднреА рдЬрд╛рдВрдЪ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ

Init рдХрдорд╛рдВрдб рдХреЙрдиреНрдлрд┐рдЧрд░ рдлрд╛рдЗрд▓ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ kubernetesVersion рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЬреНрд╡рд╛рдЗрди рдХрдорд╛рдВрдб рдХреЙрдореНрдмреИрдЯ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЙрдиреНрдлрд┐рдЧрд░ рдореИрдк рдХреЗ рдирд╛рдо рдХреЗ рд▓рд┐рдП рдХрд░рддрд╛ рд╣реИ (рдЬреИрд╕реЗ kubelet-config-1.1)

рд╣рд╛рдВ, рдпрд╣ рдПрдХ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдореБрджреНрджрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЬрдм рдореИрдВрдиреЗ рдмрд╛рдпрдиреЗрд░рд┐рдЬрд╝ рдмрдирд╛рдпрд╛ рддреЛ рдореИрдВрдиреЗ рд╕рдВрд╕реНрдХрд░рдг рд╕реЗрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдерд╛, рд╕рднреА рд╕реЛрдЪрддреЗ рд╣реИрдВ рдХрд┐ рд╡реЗ рез.резреи.реж+ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ v1.11 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП kubeadm рд╕реНрдерд╛рдкрд┐рдд рдФрд░ рдордЬрдмреВрд░ рдХрд┐рдпрд╛ред

рдЗрд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рд╣реБрдЖ

root@ip-10-0-0-7:~# k get cm -n kube-system
NAME                                 DATA      AGE
...
kubelet-config-1.11                  1         32m

рдФрд░ рдлрд┐рд░ рдЬрдм рд╢рд╛рдорд┐рд▓ рд╣реЛ:

[kubelet] Downloading configuration for the kubelet from the "kubelet-config-1.12" ConfigMap in the kube-system namespace                                                                        
configmaps "kubelet-config-1.12" is forbidden: User "system:bootstrap:u3ns6m" cannot get configmaps in the namespace "kube-system"                                                               

рдореИрдВ рдмрд╛рдпрдиреЗрд░рд┐рдЬрд╝ рдХрд╛ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдХрд░реВрдБрдЧрд╛ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╕рд╣реА рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░реВрдБрдЧрд╛ рдФрд░ рдлрд┐рд░ рд╕реЗ рдХреЛрд╢рд┐рд╢ рдХрд░реВрдБрдЧрд╛ред

рдХреНрдпреВрдмрд▓реЗрдЯ рдФрд░ рдХреБрдмреЗрджрдо рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдореЗрд▓ рд╣реЛрдиреЗ рдкрд░ рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реИред рд╡рд┐рдиреНрдпрд╛рд╕ рдорд╛рдирдЪрд┐рддреНрд░ рд▓рд┐рдЦрдиреЗ рдФрд░ рд╡рд┐рдиреНрдпрд╛рд╕ рд▓рд╛рдиреЗ рдХреЗ рдмреАрдЪ рдЕрд╕рдВрдЧрддрд┐ (рд╢рд╛рдпрдж рдЬрд╛рдирдмреВрдЭрдХрд░) рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдХрдо рддрддреНрдХрд╛рд▓ рддрдп рдХрд░рдиреЗ рдХреЗ рдкрдХреНрд╖ рдореЗрдВ рдмрдВрдж рдХрд░рдирд╛ред

рдореИрдВ kubeadm init рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдЪрд░рдгреЛрдВ рдХреЛ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдмреБрд▓рд╛ рд░рд╣рд╛ рд╣реВрдВред рдХреНрдпреВрдм-рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдХреЛрдИ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░рдореИрдк рдирд╣реАрдВ рд╣реИ рдФрд░ рди рд╣реА рдЗрд╕реЗ рдареАрдХ рд╕реЗ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рд╣реИред рдпрд╣ рдХрд┐рд╕ рдЪрд░рдг рдореЗрдВ рд╣реИ?

@drewwells рдореИрдВрдиреЗ рд╡рд╣реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд┐рдпрд╛ рд╣реИ рдЬреЛ рдЖрдкрдиреЗ рдХрд┐рдпрд╛ рдерд╛ред рдореИрдВ рдЪрд░рдгреЛрдВ рдХреЛ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдЪрд▓рд╛ рд░рд╣рд╛ рд╣реВрдВ, рдФрд░ рдХреЛрдИ рднреА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдирд╣реАрдВ рд╣реИ mpasред

sudo kubectl get cm -n kube-system --kubeconfig=/etc/kubernetes/admin.conf
NAME                                 DATA   AGE
calico-config                        2      11m
coredns                              1      15m
extension-apiserver-authentication   6      15m
kube-proxy                           2      15m

рдХреНрдпрд╛ рдЖрдкрдиреЗ рдЗрд╕рдХрд╛ рд╣рд▓ рдвреВрдВрдв рд▓рд┐рдпрд╛ рд╣реИ?

рдореБрдЭреЗ рднреА рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рд╕рднреА рдШрдЯрдХ 1.11.4 рд╣реИрдВ

рдпрд╣ рдФрд░ рдЖрдЧреЗ рдЬрд╛рддрд╛ рд╣реИред рдореИрдВ kubeadm init рдХреЗ рд╕рд╛рде рдПрдХ рдХреНрд▓рд╕реНрдЯрд░ рдмреВрдЯрд╕реНрдЯреНрд░реИрдк рдХрд░рддрд╛ рд╣реВрдВ, рдФрд░ рдореЗрд░реЗ рдкрд╛рд╕ рдЕрдм рд╕рд╣реА рдХреЙрдиреНрдлрд┐рдЧрд░ рдореИрдк рд╣реИ:

ubuntu@master-1-test2:~$ sudo kubectl get cm -n kube-system --kubeconfig=/etc/kubernetes/admin.conf
NAME                                 DATA      AGE
coredns                              1         41m
extension-apiserver-authentication   6         41m
kube-proxy                           2         41m
kubeadm-config                       1         41m
kubelet-config-1.11                  1         41m
ubuntu@master-1-test2:~$ kubeadm version
kubeadm version: &version.Info{Major:"1", Minor:"11", GitVersion:"v1.11.4", GitCommit:"bf9a868e8ea3d3a8fa53cbb22f566771b3f8068b", GitTreeState:"clean", BuildDate:"2018-10-25T19:13:39Z", GoVersion:"go1.10.3", Compiler:"gc", Platform:"linux/amd64"}

рдиреЛрдб рдкрд░:

$ sudo kubeadm -v=10 join k8s.oz.noris.de:6443 --token 36etul.nv5lz6hjfifdd4c9 --discovery-token-unsafe-skip-ca-verification                                                                                             I1107 12:57:01.340638    3631 join.go:226] [join] found NodeName empty
I1107 12:57:01.340816    3631 join.go:227] [join] considered OS hostname as NodeName
[preflight] running pre-flight checks
I1107 12:57:01.341152    3631 join.go:238] [preflight] running various checks on all nodes
I1107 12:57:01.341265    3631 checks.go:253] validating the existence and emptiness of directory /etc/kubernetes/manifests
I1107 12:57:01.341677    3631 checks.go:291] validating the existence of file /etc/kubernetes/pki/ca.crt
I1107 12:57:01.341774    3631 checks.go:291] validating the existence of file /etc/kubernetes/kubelet.conf
I1107 12:57:01.341857    3631 checks.go:291] validating the existence of file /etc/kubernetes/bootstrap-kubelet.conf
I1107 12:57:01.341947    3631 kernelcheck_linux.go:45] validating the kernel module IPVS required exists in machine or not
        [WARNING RequiredIPVSKernelModulesAvailable]: the IPVS proxier will not be used, because the following required kernel modules are not loaded: [ip_vs_sh ip_vs ip_vs_rr ip_vs_wrr] or no builtin kernel ipvs support: map[ip_vs:{} ip_
vs_rr:{} ip_vs_wrr:{} ip_vs_sh:{} nf_conntrack_ipv4:{}]
you can solve this problem with following methods:
 1. Run 'modprobe -- ' to load missing kernel modules;
2. Provide the missing builtin kernel ipvs support

I1107 12:57:01.349448    3631 checks.go:138] validating if the service is enabled and active
I1107 12:57:01.361957    3631 checks.go:340] validating the contents of file /proc/sys/net/bridge/bridge-nf-call-iptables
I1107 12:57:01.362034    3631 checks.go:340] validating the contents of file /proc/sys/net/ipv4/ip_forward
I1107 12:57:01.362076    3631 checks.go:653] validating whether swap is enabled or not
I1107 12:57:01.362134    3631 checks.go:381] validating the presence of executable crictl
I1107 12:57:01.362204    3631 checks.go:381] validating the presence of executable ip
I1107 12:57:01.362244    3631 checks.go:381] validating the presence of executable iptables
I1107 12:57:01.362281    3631 checks.go:381] validating the presence of executable mount
I1107 12:57:01.362320    3631 checks.go:381] validating the presence of executable nsenter
...
[discovery] Trying to connect to API Server "mycluster.example.com:6443"
[discovery] Created cluster-info discovery client, requesting info from "https://mycluster.example.com:6443"
I1107 12:57:01.487256    3631 round_trippers.go:386] curl -k -v -XGET  -H "Accept: application/json, */*" -H "User-Agent: kubeadm/v1.11.4 (linux/amd64) kubernetes/bf9a868" 'https://mycluster.example.com:6443/api/v1/namespaces/kube-public/config
maps/cluster-info'
I1107 12:57:01.504539    3631 round_trippers.go:405] GET https://mycluster.example.com:6443/api/v1/namespaces/kube-public/configmaps/cluster-info 200 OK in 17 milliseconds
I1107 12:57:01.504720    3631 round_trippers.go:411] Response Headers:
I1107 12:57:01.504818    3631 round_trippers.go:414]     Content-Type: application/json
I1107 12:57:01.504914    3631 round_trippers.go:414]     Content-Length: 2217
I1107 12:57:01.505003    3631 round_trippers.go:414]     Date: Wed, 07 Nov 2018 12:57:01 GMT
I1107 12:57:01.505174    3631 request.go:942] Response Body: {"kind":"ConfigMap","apiVersion":"v1","metadata":{"name":"cluster-info","namespace":"kube-public","selfLink":"/api/v1/namespaces/kube-public/configmaps/cluster-info","uid":"97e9
a3d1-e286-11e8-9272-fa163ef9e3af","resourceVersion":"425","creationTimestamp":"2018-11-07T12:13:53Z"},"data":{"jws-kubeconfig-36etul":"eyJhbGciOiJIUzI1NiIsImtpZCI6IjM2ZXR1bCJ9..zRgexonkjOpLJS0q3IignURwTcpBuQy7gv35Qhhsl_k","jws-kubeconfig-
eth6o8":"eyJhbGciOiJIUzI1NiIsImtpZCI6ImV0aDZvOCJ9..kWj4cI2j1WgKfNG07IGiIij4CSb9kWUbaM2mixlYThY","jws-kubeconfig-rbxd02":"eyJhbGciOiJIUzI1NiIsImtpZCI6InJieGQwMiJ9..HwIWDwfIbAjNM1EGbWdXYOhC8z1MxgwuzhjlJRaZ_pc","kubeconfig":"apiVersion: v1\n
clusters:\n- cluster:\n    certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUN5RENDQWJDZ0F3SUJBZ0lCQURBTkJna3Foa2lHOXcwQkFRc0ZBREFWTVJNd0VRWURWUVFERXdwcmRXSmwKY201bGRHVnpNQjRYRFRFNE1URXdNekEwTlRrME4xb1hEVEk0TVRBek1UQTB
OVGswTjFvd0ZURVRNQkVHQTFVRQpBeE1LYTNWaVpYSnVaWFJsY3pDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTU9BCkNHQU5jUjVRQWV3MlljY2V0eWVyYktiODd4RWRPVlp2aUdneElrbkpKTTZwZFVBbzMwSWVxckRqSnlFaTFVeDcKU0c5NS9sRlBqU1htdHhhNHMvc1g1KzNTVW4zZ
EtFRWw5TFhXa0lzeTRJYzRFUTMwWE9WcnNuYTYwN1UzNmQyaAp3NHdTK1dveE5QR3dqZDM2bXQzMFR4bUluYk54ZVl5d2NnVU1tMlZFZXM4dGhVaVhZMXB1N1Y2SUNCY243cE9NCkdoT2xlRXg4SmlEVnhuSGlpSm9oYytCbGNIdHdLU1pzK2cvZUhwdGdlSDdaQlZNRC8zZVFvZXVsUGVvTEkwamEKc09jTENMTkpEVVB
LUWJqRnRNbkFZSXVvOENHSXpFTzBDaDZNeW5vb1pTL0E0bEs1MXJmTVdkTkZ4N0dVdnQxYQo5KzZzMHo2NEpHeVFBdmtBcWhVQ0F3RUFBYU1qTUNFd0RnWURWUjBQQVFIL0JBUURBZ0trTUE4R0ExVWRFd0VCCi93UUZNQU1CQWY4d0RRWUpLb1pJaHZjTkFRRUxCUUFEZ2dFQkFEbWs1NEYzZ1BqOS91NzlRbTg2V1Mzc
k5YaFoKZG16Wmt3TXRDajRuTXdsSndGQy9iZUU4ZUdsWnFxWDcrdEpYUDVaY0xLNE1pSnM1U2JTMjd5NDF3WTRRTFFWaQpVWmRocEFHUTBOSlpHSGhWMTVDczlVQTA1ZTFNajNCaHZ6SG5VV2t1ZUhYbW84VmI4SkI5RGloeGdiUW5GY2FQCjRWcVhWY0pBemxVQ0V5aXhreVRGendZTklJbzJHdGtCdlI1YkxCM0doT2R
sQURmQzEwdzgvTmQveFFmRnRWdmYKL3lHaktpbW8rT2xERkV5YittcHVKMVdiN3Y3bnJJSzlSSy9WbVhUWENiOWZLQ3BmQ0hMU0hpa0lEWklZK0wxTQpwbWpXYXZFcjFLSlE5UEJIYmdZSHkxK1F0bkpXRDNjNnJrOUtoNU1zMFhTVmpBc2Z1RWdXaG9CYnlVdz0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=\n   
 server: https://k8s.oz.noris.de:6443\n  name: \"\"\ncontexts: []\ncurrent-context: \"\"\nkind: Config\npreferences: {}\nusers: []\n"}}
[discovery] Cluster info signature and contents are valid and no TLS pinning was specified, will use API Server "k8s.oz.noris.de:6443"
[discovery] Successfully established connection with API Server "mycluster.example.com:6443"
I1107 12:57:01.509945    3631 join.go:260] [join] writing bootstrap kubelet config file at /etc/kubernetes/bootstrap-kubelet.conf
I1107 12:57:01.617006    3631 loader.go:359] Config loaded from file /etc/kubernetes/bootstrap-kubelet.conf
I1107 12:57:01.617871    3631 join.go:283] Stopping the kubelet
[kubelet] Downloading configuration for the kubelet from the "kubelet-config-1.12" ConfigMap in the kube-system namespace
I1107 12:57:01.627838    3631 round_trippers.go:386] curl -k -v -XGET  -H "Accept: application/json, */*" -H "User-Agent: kubeadm/v1.11.4 (linux/amd64) kubernetes/bf9a868" -H "Authorization: Bearer 36etul.nv5lz6hjfifdd4c9" 'https://mycluster.example.com:6443/api/v1/namespaces/kube-system/configmaps/kubelet-config-1.12'
I1107 12:57:01.639396    3631 round_trippers.go:405] GET https://mycluster.example.com:6443/api/v1/namespaces/kube-system/configmaps/kubelet-config-1.12 403 Forbidden in 11 milliseconds
I1107 12:57:01.639427    3631 round_trippers.go:411] Response Headers:
I1107 12:57:01.639443    3631 round_trippers.go:414]     Content-Length: 311
I1107 12:57:01.639464    3631 round_trippers.go:414]     Date: Wed, 07 Nov 2018 12:57:01 GMT
I1107 12:57:01.639477    3631 round_trippers.go:414]     Content-Type: application/json
I1107 12:57:01.639492    3631 round_trippers.go:414]     X-Content-Type-Options: nosniff
I1107 12:57:01.639525    3631 request.go:942] Response Body: {"kind":"Status","apiVersion":"v1","metadata":{},"status":"Failure","message":"configmaps \"kubelet-config-1.12\" is forbidden: User \"system:bootstrap:36etul\" cannot get confi
gmaps in the namespace \"kube-system\"","reason":"Forbidden","details":{"name":"kubelet-config-1.12","kind":"configmaps"},"code":403}
configmaps "kubelet-config-1.12" is forbidden: User "system:bootstrap:36etul" cannot get configmaps in the namespace "kube-system"

рдЦрд░рдкрддрд╡рд╛рд░ рд╕рд╛рдорд╛рди рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ?

рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдпрд╣ рд╕рдм рддрдм рд╕реЗ рд╣реИ, рдЕрдЧрд░ рдЖрдк рдХреНрдпреВрдмрд▓реЗрдЯ рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреА рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВ! рдореЗрд░реЗ рдкрд╛рд╕ рдХреНрдпреВрдмрд▓реЗрдЯ рд╕рдВрд╕реНрдХрд░рдг 1.12.2 рд╣реИред
рдореБрдЭреЗ рдХреЛрдб рд╕реЗ рд╕рдВрдХреЗрдд рдорд┐рд▓рд╛

рдореИрдВ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдПрдХ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдЫреЛрдбрд╝рдХрд░ рдирдпрд╛ред

рдЧреБрд░реБ рдкрд░:

$ lsb_release -d
Description:    Ubuntu 16.04.5 LTS
$ dpkg -l | grep kub
ii  kubeadm                          1.12.1-00                                  amd64        Kubernetes Cluster Bootstrapping Tool
ii  kubectl                          1.12.1-00                                  amd64        Kubernetes Command Line Tool
ii  kubelet                          1.12.1-00                                  amd64        Kubernetes Node Agent
ii  kubernetes-cni                   0.6.0-00                                   amd64        Kubernetes CNI
$ 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:"13", GitVersion:"v1.13.0", GitCommit:"ddf47ac13c1a9483ea035a79cd7c10005ff21a6d", GitTreeState:"clean", BuildDate:"2018-12-03T20:56:12Z", GoVersion:"go1.11.2", Compiler:"gc", Platform:"linux/amd64"}

рдХреНрдпрд╛, рдЙрд╕ рд╕рд░реНрд╡рд░ рд╕рдВрд╕реНрдХрд░рдг 1.13.0 рдХрд╣рд╛рдБ рд╕реЗ рдЖрдпрд╛ рдерд╛? рдореИрдВрдиреЗ рд╡рд╣ рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ред

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

$ kubeadm join --token blahblah 10.138.0.3:6443 --discovery-token-ca-cert-hash sha256:deadbeefdeadbeefetc 
[preflight] running pre-flight checks
        [WARNING RequiredIPVSKernelModulesAvailable]: the IPVS proxier will not be used, because the following required kernel modules are not loaded: [ip_vs ip_vs_rr ip_vs_wrr ip_vs_sh] or no builtin kernel ipvs support: map[ip_vs_sh:{} nf_conntrack_ipv4:{} ip_vs:{} ip_vs_rr:{} ip_vs_wrr:{}]
you can solve this problem with following methods:
 1. Run 'modprobe -- ' to load missing kernel modules;
2. Provide the missing builtin kernel ipvs support
[discovery] Trying to connect to API Server "10.138.0.3:6443"
[discovery] Created cluster-info discovery client, requesting info from "https://10.138.0.3:6443"
[discovery] Requesting info from "https://10.138.0.3:6443" again to validate TLS against the pinned public key
[discovery] Cluster info signature and contents are valid and TLS certificate validates against pinned roots, will 
use API Server "10.138.0.3:6443"
[discovery] Successfully established connection with API Server "10.138.0.3:6443"
[kubelet] Downloading configuration for the kubelet from the "kubelet-config-1.12" ConfigMap in the kube-system namespace configmaps "kubelet-config-1.12" is forbidden: User "system:bootstrap:3ai26q" cannot get resource "configmaps" in API group "" in the namespace "kube-system"

рдФрд░ рдпрд╣ рдХреНрдпреВрдмрд▓реЗрдЯ-рдХреЙрдиреНрдлрд┐рдЧ-1.12 рдХреЙрдиреНрдлрдореИрдк рдХреНрдпреЛрдВ рдирд╣реАрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ? 'рдХреНрдпреЛрдВрдХрд┐ рд╡рд╣рд╛рдБ рдПрдХ рдирд╣реАрдВ рд╣реИред рдЧреБрд░реБ рдкрд░ рд╡рд╛рдкрд╕:

$ sudo kubectl get cm -n kube-system --kubeconfig=/etc/kubernetes/admin.conf
NAME                                 DATA   AGE
calico-config                        4      26m
coredns                              1      29m
extension-apiserver-authentication   6      29m
kube-proxy                           2      29m
kubeadm-config                       2      29m
kubelet-config-1.13                  1      29m

@ рдмреНрд░рд╛рдпрдирдХреНрд░рд┐рд╕реНрдХрд╛ : рдмрд┐рд▓реНрдХреБрд▓ рдЖрдкрдХреА рддрд░рд╣ рд╣реА рдореБрджреНрджреЗ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ ... рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╕рдорд╛рдзрд╛рди ..

рдорд╛рд╕реНрдЯрд░: рд░рд╛рдо @ k8master1 : ~ $ kubeadm рд╕рдВрд╕реНрдХрд░рдг
kubeadm рд╕рдВрд╕реНрдХрд░рдг: & version.Info {рдореЗрдЬрд░: "1", рдорд╛рдЗрдирд░: "12", GitVersion: "v1.12.1", GitCommit: "4ed3216f3ec431b140b140bd899130a69fc671678f4", GitTreeState: "Clean, BuildD" 08Z ", GoVersion:" go1.10.4 ", рд╕рдВрдХрд▓рдХ:" gc ", рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо:" linux / am6464 "}
ram @ k8master1 : ~ $ dpkg -l | grep kub
ii kubeadm 1.12.1-00 amd64 рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдХреНрд▓рд╕реНрдЯрд░ рдмреВрдЯрд╕реНрдЯреНрд░реИрдкрд┐рдВрдЧ рдЯреВрд▓
ii kubectl 1.12.1-00 amd64 рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдЯреВрд▓
ii рдХреНрдпреВрдмрд▓реЗрдЯ 1.12.1-00 amd64 рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдиреЛрдб рдПрдЬреЗрдВрдЯ
ii рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕-cni 0.6.0-00 amd64 рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ CNI
ram @ k8master1 : ~ $ kubectl рд╕рдВрд╕реНрдХрд░рдг
рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рдВрд╕реНрдХрд░рдг: version.Info {рдореЗрдЬрд░: "1", рдорд╛рдЗрдирд░: "12", GitVersion: "v1.12.1", GitCommit: "4ed3216f3ec431b140b1d8993030a69fc671678f4", GitTreeState: "clean", рдмрд┐рд▓реНрдб: 2018 06Z ", GoVersion:" go1.10.4 ", рд╕рдВрдХрд▓рдХ:" gc ", рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо:" linux / am6464 "}
рд╕рд░реНрд╡рд░ рд╕рдВрд╕реНрдХрд░рдг: version.Info {рдкреНрд░рдореБрдЦ: "1", рдорд╛рдЗрдирд░: "13", GitVersion: "v1.13.0", GitCommit: "ddf47ac13c1a9483ea035a797c10005ff21a6d", GitTreeState: "clean", 2018-12-12: 12Z ", GoVersion:" go1.11.2 ", рд╕рдВрдХрд▓рдХ:" gc ", рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо:" linux / am6464 "}

ram @ k8master1 : ~ $ kubectl рдХреЛ рдиреЛрдб рдорд┐рд▓рддрд╛ рд╣реИ
NAME STATUS рд░реЛрд▓ рдРрд╕ рд╕рдВрд╕реНрдХрд░рдг
k8master1.example.com рддреИрдпрд╛рд░ рдорд╛рд╕реНрдЯрд░ 101 рдореАрдЯрд░ v1.12.1
ram @ k8master1 : ~ $ kubectl рдХреЛ рдкреЙрдб --all-namespaces рдорд┐рд▓рддреЗ рд╣реИрдВ
NAMESPACE рдХреЗ рдирд╛рдо рд╕реЗ рддреИрдпрд╛рд░ рдХрд┐рдП рдЧрдП рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рд░реЗрд╕реНрддрд░рд╛рдВ
рдХреНрдпреВрдм-рд╕рд┐рд╕реНрдЯрдо рдХреИрд▓рд┐рдХреЛ-рдиреЛрдб-рдЖрд░ 248 рд╡реА 2/2 рд░рдирд┐рдВрдЧ 0 99 рдПрдо
рдХреНрдпреВрдм-рд╕рд┐рд╕реНрдЯрдо рдХреЛрд░рдбрдиреНрд╕-869 рдПрдл 847 рдбреА 58-72 рдПрд▓рдХреНрдпреВрдбреА 1/1 рд░рдирд┐рдВрдЧ 0 101 рдПрдо
рдХреНрдпреВрдм-рд╕рд┐рд╕реНрдЯрдо рдХреЛрд░рдбрдиреНрд╕-869f847d58-P2zzs 1/1 рд░рдирд┐рдВрдЧ 0 101 рдореА
рдХреНрдпреВрдм-рд╕рд┐рд╕реНрдЯрдо etcd-k8master1.example.com 1/1 рд░рдирд┐рдВрдЧ 0 100 рдореА
kube- рд╕рд┐рд╕реНрдЯрдо kube-apiserver-k8master1.example.com 1/1 рд░рдирд┐рдВрдЧ 0 100 рдореА
kube- рд╕рд┐рд╕реНрдЯрдо kube-controller-manager-k8master1.example.com 1/1 рд░рдирд┐рдВрдЧ 0 100 рдореА
рдХреНрдпреВрдм-рд╕рд┐рд╕реНрдЯрдо рдХреНрдпреВрдм-рдкреНрд░реЙрдХреНрд╕реА -77qbx 1/1 рд░рдирд┐рдВрдЧ 0 101 рдореА
kube- рд╕рд┐рд╕реНрдЯрдо kube-scheduler-k8master1.example.com 1/1 рд░рдирд┐рдВрдЧ 0 100 рдореА

рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдиреЛрдбреНрд╕:
root @ k8worker1 : ~ # dpkg -l | grep -i kub
ii kubeadm 1.12.1-00 amd64 рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдХреНрд▓рд╕реНрдЯрд░ рдмреВрдЯрд╕реНрдЯреНрд░реИрдкрд┐рдВрдЧ рдЯреВрд▓
ii kubectl 1.12.1-00 amd64 рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдЯреВрд▓
ii рдХреНрдпреВрдмрд▓реЗрдЯ 1.12.1-00 amd64 рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдиреЛрдб рдПрдЬреЗрдВрдЯ
ii рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕-cni 0.6.0-00 amd64 рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ CNI
рд░реВрдЯ @ k8worker1 : ~ # kubectl рд╕рдВрд╕реНрдХрд░рдг
рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рдВрд╕реНрдХрд░рдг: version.Info {рдореЗрдЬрд░: "1", рдорд╛рдЗрдирд░: "12", GitVersion: "v1.12.1", GitCommit: "4ed3216f3ec431b140b1d8993030a69fc671678f4", GitTreeState: "clean", рдмрд┐рд▓реНрдб: 2018 06Z ", GoVersion:" go1.10.4 ", рд╕рдВрдХрд▓рдХ:" gc ", рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо:" linux / am6464 "}
рд╕рд░реНрд╡рд░ рд▓реЛрдХрд▓рд╣реЛрд╕реНрдЯ рдХреЗ рд▓рд┐рдП рдХрдиреЗрдХреНрд╢рди

root @ k8worker1 : ~ # kubeadm рдЬреНрд╡рд╛рдЗрди 10.0.0.61:6443 --token xjxgqa.h2vnld3x9ztgf3pr --discovery-token-to-ca-cert-hash sha256: 7c18b654b623ee84164bb7979982799409799407
[рдкреНрд░реАрдлрд╝рд▓рд╛рдЗрдЯ] рдкреНрд░реА-рдлрд╝реНрд▓рд╛рдЗрдЯ рдЪреЗрдХ рдЪрд▓рд╛рдирд╛
: ip_vs_wrr: {} ip_vs_sh: {}]
рдЖрдк рдирд┐рдореНрди рддрд░реАрдХреЛрдВ рд╕реЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

  1. рд▓рд╛рдкрддрд╛ рдХрд░реНрдиреЗрд▓ рдореЙрдбреНрдпреВрд▓ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП 'modprobe -' рдЪрд▓рд╛рдПрдВ;

    1. рдЕрдиреБрдкрд▓рдмреНрдз рдмрд┐рд▓рд┐рди рдХрд░реНрдиреЗрд▓ рдЖрдИрдкреАрд╡реА рд╕рдорд░реНрдерди рдкреНрд░рджрд╛рди рдХрд░реЗрдВ

[рдЦреЛрдЬ] рдПрдкреАрдЖрдИ рд╕рд░реНрд╡рд░ рд╕реЗ рдЬреБрдбрд╝рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ "10.0.0.61:6443"
[рдЦреЛрдЬ] " https ://10.0.0.61: 6443" рд╕реЗ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз рдХрд░рддреЗ рд╣реБрдП рдХреНрд▓рд╕реНрдЯрд░-рдЬрд╛рдирдХрд╛рд░реА рдЦреЛрдЬ рдЧреНрд░рд╛рд╣рдХ рдмрдирд╛рдпрд╛ рдЧрдпрд╛
[рдЦреЛрдЬ] " https ://10.0.0.61: 6443" рд╕реЗ рдкреБрдирдГ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдзрд┐рдд рдкрд┐рди рдХреБрдВрдЬреА рдХреЗ рд╡рд┐рд░реБрджреНрдз рдЯреАрдПрд▓рдПрд╕ рдХреЛ рдорд╛рдиреНрдп рдХрд░рдирд╛
[рдЦреЛрдЬ] рдХреНрд▓рд╕реНрдЯрд░ рдЬрд╛рдирдХрд╛рд░реА рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдФрд░ рд╕рд╛рдордЧреНрд░реА рд╡реИрдз рд╣реИрдВ рдФрд░ рдЯреЛрдВрд╕ рдЬрдбрд╝реЛрдВ рдХреЗ рдЦрд┐рд▓рд╛рдл рдЯреАрдПрд▓рдПрд╕ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдорд╛рдиреНрдп рд╣реИ, рдПрдкреАрдЖрдИ рд╕рд░реНрд╡рд░ "10.0.0.61:6443" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛
[рдЦреЛрдЬ] рдПрдкреАрдЖрдИ рд╕рд░реНрд╡рд░ "10.0.0.61:6443" рдХреЗ рд╕рд╛рде рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рд╕реНрдерд╛рдкрд┐рдд рдХрдиреЗрдХреНрд╢рди
[kubelet] рдХреНрдпреВрдм-рд╕рд┐рд╕реНрдЯрдо рдирд╛рдорд╕реНрдерд╛рди рдореЗрдВ "kubelet-config-1.12" рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рд╕реЗ рдХреНрдпреВрдмрд▓реЗрдЯ рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдирд╛
configmaps "kubelet-config-1.12" рдирд┐рд╖рд┐рджреНрдз рд╣реИ: рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ " рд╕рд┐рд╕реНрдЯрдо: рдмреВрдЯрд╕реНрдЯреНрд░реИрдк : xjxgqa" рд╕рдВрд╕рд╛рдзрди "configmaps" API рд╕рдореВрд╣ рдореЗрдВ рдирд╣реАрдВ рдорд┐рд▓ рд╕рдХрддрд╛ рд╣реИ "" рдирд╛рдорд╕реНрдерд╛рди "kube-system" рдореЗрдВ
root @ k8worker1 : ~ # kubeadm рдЬреНрд╡рд╛рдЗрди 10.0.0.61:6443 --token xjxgqa.h2vnld3x9ztgf3pr --discovery-token-to-ca-cert-hash sha256: 7c18b654b623ee84164bb7979982799409799407
[рдкреНрд░реАрдлрд╝рд▓рд╛рдЗрдЯ] рдкреНрд░реА-рдлрд╝реНрд▓рд╛рдЗрдЯ рдЪреЗрдХ рдЪрд▓рд╛рдирд╛
: nf_conntrack_ipv4: {} ip_vs: {}]
рдЖрдк рдирд┐рдореНрди рддрд░реАрдХреЛрдВ рд╕реЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

  1. рд▓рд╛рдкрддрд╛ рдХрд░реНрдиреЗрд▓ рдореЙрдбреНрдпреВрд▓ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП 'modprobe -' рдЪрд▓рд╛рдПрдВ;

    1. рдЕрдиреБрдкрд▓рдмреНрдз рдмрд┐рд▓рд┐рди рдХрд░реНрдиреЗрд▓ рдЖрдИрдкреАрд╡реА рд╕рдорд░реНрдерди рдкреНрд░рджрд╛рди рдХрд░реЗрдВ

[preflight] рдХреБрдЫ рдШрд╛рддрдХ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╣реБрдИрдВ:
[ERROR FileAvailable - etc-kubernetes-bootstrap-kubelet.conf]: /etc/kubernetes/bootstrap-kubelet.conf рдкрд╣рд▓реЗ рд╕реЗ рдореМрдЬреВрдж рд╣реИ
[ERROR FileAvailable - etc-kubernetes-pki-ca.crt]: /etc/kubernetes/pki/ca.crt рдкрд╣рд▓реЗ рд╕реЗ рдореМрдЬреВрдж рд╣реИ
[рдкреНрд░реАрдлрд╝реНрд▓рд╛рдЗрдЯ] рдпрджрд┐ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЖрдк рдХреНрдпрд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЖрдк --ignore-preflight-errors=... рд╕рд╛рде рдПрдХ рдЪреЗрдХ рдиреЙрди-рдШрд╛рддрдХ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ

@brianriceca рдФрд░ @ramanjk рдХреЗ рд╕рдорд╛рдиред рдХреБрдмрджрд╛рдо рдФрд░ рдХреБрдмреНрд▓реЗрдЯ рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рджреЛрдиреЛрдВ рдиреЛрдбреНрд╕ рдкрд░ рез.резреи.рез рд╣реИрдВ, kubelet-config-1.13 рд╡рд┐рдиреНрдпрд╛рд╕ рд╣реИ, рдФрд░ configmaps "kubelet-config-1.12" is forbidden рдХреЛ рднреА рджреЗрдЦ рд░рд╣реЗ рд╣реИрдВ

рдбреАтАЩрдУрд╣! рдореБрдЭреЗ рдЕрднреА рддрдХ рдирд╣реАрдВ рдкрддрд╛ рдерд╛ рдХрд┐ рдХреБрдмреЗрджрдо рд╣рдореЗрд╢рд╛ рдХреБрдмреЗрд░рдиреЗрдЯ рдирд┐рдпрдВрддреНрд░рдг рд╡рд┐рдорд╛рди рдХреЗ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдХреЛ gcr.io рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рддрд╛ рд╣реИ рдЬрдм рддрдХ рдХрд┐ рдЖрдк рдЗрд╕реЗ рдЕрдиреНрдпрдерд╛ рдирд╣реАрдВ рдмрддрд╛рддреЗред рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдореИрдВ рез.резрей.рез рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рддрдм рднреА рдЬрдм рез.резрей рдЙрдкрд▓рдмреНрдз рд╣реИ, рдореБрдЭреЗ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ
kubeadm init --kubernetes-version 1.12.1 --pod-network-cidr _whatever / рдЬреЛ рдХреБрдЫ рднреА

рдореИрдВрдиреЗ рджреЛрдиреЛрдВ рдиреЛрдбреНрд╕ рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдФрд░ рд╕рдВрд╕реНрдХрд░рдг 1.12.2 рд╕рдм рдХреБрдЫ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдлрд┐рд░ рд╕реЗ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛, рдФрд░ рдЗрд╕ рдмрд╛рд░ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реБрдИред рд╡рд╣рд╛рдБ рдПрдХ рдирдпрд╛ рд╕рдВрд╕реНрдХрд░рдг рд╣реЛрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдЙрддреНрдкрд╛рджрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдпрд╣ 1.12 рдкрд░ рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рдПрдЧреА (рдореИрдВрдиреЗ рдЗрд╕реЗ рдЕрдм рдЦреЛ рджрд┐рдпрд╛ рд╣реИ)

рдореИрдВ рдЙрд╕реА рдмрдЧ рдХреЛ рдкреАрдбрд╝рд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдЬрдмрдХрд┐ (рдЬрд╛рд╣рд┐рд░рд╛ рддреМрд░ рдкрд░) рдиреЛрдб рдореЗрдВ рд╕рдорд╛рди рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

рдмреАрдЬрдХ рдкрд░ (рдЖрд░рдВрднреАрдХрд░рдг рдХреЗ рдмрд╛рдж):

$ kubeadm version -o json
{
  "clientVersion": {
    "major": "1",
    "minor": "13",
    "gitVersion": "v1.13.0",
    "gitCommit": "ddf47ac13c1a9483ea035a79cd7c10005ff21a6d",
    "gitTreeState": "clean",
    "buildDate": "2018-12-11T17:03:40Z",
    "goVersion": "go1.11.2",
    "compiler": "gc",
    "platform": "linux/amd64"
  }
}
$
$ kubectl get cm --all-namespaces
NAMESPACE     NAME                                 DATA   AGE
kube-public   cluster-info                         2      174m
kube-system   coredns                              1      174m
kube-system   extension-apiserver-authentication   6      174m
kube-system   flannel-plugin-config-map            2      174m
kube-system   kube-proxy                           2      174m
kube-system   kubeadm-config                       2      174m
kube-system   kubelet-config-1.13                  1      174m
kube-system   kubic-init-config-seeder             1      174m
$
$
$ kubectl version
Client Version: version.Info{Major:"1", Minor:"13", GitVersion:"v1.13.0", GitCommit:"ddf47ac13c1a9483ea035a79cd7c10005ff21a6d", GitTreeState:"archive", BuildDate:"2018-12-07T12:00:00Z", GoVersion:"go1.11.2", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"13", GitVersion:"v1.13.0", GitCommit:"ddf47ac13c1a9483ea035a79cd7c10005ff21a6d", GitTreeState:"clean", BuildDate:"2018-12-03T20:56:12Z", GoVersion:"go1.11.2", Compiler:"gc", Platform:"linux/amd64"}

рдиреЛрдб рдкрд░:

$ cat config.txt 
apiVersion: kubeadm.k8s.io/v1beta1
caCertPath: /etc/kubernetes/pki/ca.crt
discovery:
  bootstrapToken:
    apiServerEndpoint: 192.168.100.1:6443
    token: 94dcda.c271f4ff502789ca
    unsafeSkipCAVerification: true
  timeout: 5m0s
  tlsBootstrapToken: 94dcda.c271f4ff502789ca
kind: JoinConfiguration
nodeRegistration:
  criSocket: /var/run/crio/crio.sock
  kubeletExtraArgs:
    cni-bin-dir: /var/lib/kubelet/cni/bin
    cni-conf-dir: /etc/cni/net.d
    container-runtime-endpoint: unix:///var/run/crio/crio.sock
    network-plugin: cni

$
$ kubeadm join --v=8 --config=config.txt 
I1220 11:55:56.879023       7 join.go:299] [join] found NodeName empty; using OS hostname as NodeName
I1220 11:55:56.880357       7 joinconfiguration.go:72] loading configuration from the given file
[preflight] Running pre-flight checks
I1220 11:55:56.890498       7 join.go:328] [preflight] Running general checks
I1220 11:55:56.891937       7 checks.go:245] validating the existence and emptiness of directory /etc/kubernetes/manifests
I1220 11:55:56.893051       7 checks.go:283] validating the existence of file /etc/kubernetes/kubelet.conf
I1220 11:55:56.894239       7 checks.go:283] validating the existence of file /etc/kubernetes/bootstrap-kubelet.conf
I1220 11:55:56.895384       7 checks.go:104] validating the container runtime
I1220 11:55:57.072517       7 checks.go:373] validating the presence of executable crictl
I1220 11:55:57.073553       7 checks.go:332] validating the contents of file /proc/sys/net/bridge/bridge-nf-call-iptables
I1220 11:55:57.074479       7 checks.go:332] validating the contents of file /proc/sys/net/ipv4/ip_forward
I1220 11:55:57.075518       7 checks.go:644] validating whether swap is enabled or not
I1220 11:55:57.076499       7 checks.go:373] validating the presence of executable ip
I1220 11:55:57.077424       7 checks.go:373] validating the presence of executable iptables
I1220 11:55:57.078594       7 checks.go:373] validating the presence of executable mount
I1220 11:55:57.079564       7 checks.go:373] validating the presence of executable nsenter
I1220 11:55:57.080425       7 checks.go:373] validating the presence of executable ebtables
I1220 11:55:57.081391       7 checks.go:373] validating the presence of executable ethtool
I1220 11:55:57.082170       7 checks.go:373] validating the presence of executable socat
I1220 11:55:57.084207       7 checks.go:373] validating the presence of executable tc
I1220 11:55:57.085250       7 checks.go:373] validating the presence of executable touch
I1220 11:55:57.086132       7 checks.go:515] running all checks
I1220 11:55:57.137681       7 checks.go:403] checking whether the given node name is reachable using net.LookupHost
I1220 11:55:57.150619       7 checks.go:613] validating kubelet version
I1220 11:55:57.450319       7 checks.go:130] validating if the service is enabled and active
I1220 11:55:57.554984       7 checks.go:208] validating availability of port 10250
I1220 11:55:57.556700       7 checks.go:283] validating the existence of file /etc/kubernetes/pki/ca.crt
I1220 11:55:57.557579       7 checks.go:430] validating if the connectivity type is via proxy or direct
[preflight] Some fatal errors occurred:
    [ERROR FileAvailable--etc-kubernetes-bootstrap-kubelet.conf]: /etc/kubernetes/bootstrap-kubelet.conf already exists
    [ERROR FileAvailable--etc-kubernetes-pki-ca.crt]: /etc/kubernetes/pki/ca.crt already exists
[preflight] If you know what you are doing, you can make a check non-fatal with `--ignore-preflight-errors=...`
sh-4.4# rm -f /etc/kubernetes/bootstrap-kubelet.conf /etc/kubernetes/pki/ca.crt
sh-4.4# kubeadm join --v=8 --config=config.txt 
I1220 11:56:10.073469      30 join.go:299] [join] found NodeName empty; using OS hostname as NodeName
I1220 11:56:10.074575      30 joinconfiguration.go:72] loading configuration from the given file
[preflight] Running pre-flight checks
I1220 11:56:10.085937      30 join.go:328] [preflight] Running general checks
I1220 11:56:10.086871      30 checks.go:245] validating the existence and emptiness of directory /etc/kubernetes/manifests
I1220 11:56:10.087809      30 checks.go:283] validating the existence of file /etc/kubernetes/kubelet.conf
I1220 11:56:10.088573      30 checks.go:283] validating the existence of file /etc/kubernetes/bootstrap-kubelet.conf
I1220 11:56:10.089370      30 checks.go:104] validating the container runtime
I1220 11:56:10.126939      30 checks.go:373] validating the presence of executable crictl
I1220 11:56:10.128075      30 checks.go:332] validating the contents of file /proc/sys/net/bridge/bridge-nf-call-iptables
I1220 11:56:10.129096      30 checks.go:332] validating the contents of file /proc/sys/net/ipv4/ip_forward
I1220 11:56:10.129993      30 checks.go:644] validating whether swap is enabled or not
I1220 11:56:10.131006      30 checks.go:373] validating the presence of executable ip
I1220 11:56:10.132983      30 checks.go:373] validating the presence of executable iptables
I1220 11:56:10.139740      30 checks.go:373] validating the presence of executable mount
I1220 11:56:10.140267      30 checks.go:373] validating the presence of executable nsenter
I1220 11:56:10.140738      30 checks.go:373] validating the presence of executable ebtables
I1220 11:56:10.141092      30 checks.go:373] validating the presence of executable ethtool
I1220 11:56:10.141459      30 checks.go:373] validating the presence of executable socat
I1220 11:56:10.142799      30 checks.go:373] validating the presence of executable tc
I1220 11:56:10.145062      30 checks.go:373] validating the presence of executable touch
I1220 11:56:10.145954      30 checks.go:515] running all checks
I1220 11:56:10.189173      30 checks.go:403] checking whether the given node name is reachable using net.LookupHost
I1220 11:56:10.204103      30 checks.go:613] validating kubelet version
I1220 11:56:10.529594      30 checks.go:130] validating if the service is enabled and active
I1220 11:56:10.556043      30 checks.go:208] validating availability of port 10250
I1220 11:56:10.557915      30 checks.go:283] validating the existence of file /etc/kubernetes/pki/ca.crt
I1220 11:56:10.559380      30 checks.go:430] validating if the connectivity type is via proxy or direct
I1220 11:56:10.560242      30 join.go:334] [preflight] Fetching init configuration
I1220 11:56:10.561013      30 join.go:601] [join] Discovering cluster-info
[discovery] Trying to connect to API Server "192.168.100.1:6443"
[discovery] Created cluster-info discovery client, requesting info from "https://192.168.100.1:6443"
I1220 11:56:10.567171      30 round_trippers.go:383] GET https://192.168.100.1:6443/api/v1/namespaces/kube-public/configmaps/cluster-info
I1220 11:56:10.568131      30 round_trippers.go:390] Request Headers:
I1220 11:56:10.568891      30 round_trippers.go:393]     Accept: application/json, */*
I1220 11:56:10.569609      30 round_trippers.go:393]     User-Agent: kubeadm/v1.13.0 (linux/amd64) kubernetes/ddf47ac
I1220 11:56:10.586461      30 round_trippers.go:408] Response Status: 200 OK in 16 milliseconds
I1220 11:56:10.587241      30 round_trippers.go:411] Response Headers:
I1220 11:56:10.588006      30 round_trippers.go:414]     Content-Type: application/json
I1220 11:56:10.588757      30 round_trippers.go:414]     Content-Length: 1991
I1220 11:56:10.589497      30 round_trippers.go:414]     Date: Thu, 20 Dec 2018 11:56:11 GMT
I1220 11:56:10.590141      30 request.go:942] Response Body: {"kind":"ConfigMap","apiVersion":"v1","metadata":{"name":"cluster-info","namespace":"kube-public","selfLink":"/api/v1/namespaces/kube-public/configmaps/cluster-info","uid":"c8b93b6b-0436-11e9-b4e4-4845202d6379","resourceVersion":"368","creationTimestamp":"2018-12-20T09:08:15Z"},"data":{"jws-kubeconfig-94dcda":"eyJhbGciOiJIUzI1NiIsImtpZCI6Ijk0ZGNkYSJ9..qJePAaUQp5APwTC-dSSzvL3MEVE8PQxgbvipbsC1faA","kubeconfig":"apiVersion: v1\nclusters:\n- cluster:\n    certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUN5RENDQWJDZ0F3SUJBZ0lCQURBTkJna3Foa2lHOXcwQkFRc0ZBREFWTVJNd0VRWURWUVFERXdwcmRXSmwKY201bGRHVnpNQjRYRFRFNE1USXlNREE1TURjMU0xb1hEVEk0TVRJeE56QTVNRGMxTTFvd0ZURVRNQkVHQTFVRQpBeE1LYTNWaVpYSnVaWFJsY3pDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTkF3CmRET2tVSXI4M3BDMkY2bFE2UFZMYzlMbGhtenNnc3NPMWRQZWhVWTZ0azJwNUZIdmRlNEwwdkVNWHpaZU5oSGUKNFNnd1A1cTMxd1F0Wkx3aEFKWDRDR1dzNGVFZG9LNnZqMDVJYzQ1SDZhMDNvN3RqSWhNcUsvTHVrdDAzR2Q1Lwp0OENXUllHYjV5TWtBNldIMkxDZkwvSXlYQWU1NTV0STR1RTRuTTFSUXNSMFNMdy8rR2FK [truncated 967 chars]
[discovery] Cluster info signature and contents are valid and no TLS pinning was specified, will use API Server "192.168.100.1:6443"
[discovery] Successfully established connection with API Server "192.168.100.1:6443"
I1220 11:56:10.596836      30 join.go:608] [join] Retrieving KubeConfig objects
[join] Reading configuration from the cluster...
[join] FYI: You can look at this config file with 'kubectl -n kube-system get cm kubeadm-config -oyaml'
I1220 11:56:10.600835      30 round_trippers.go:383] GET https://192.168.100.1:6443/api/v1/namespaces/kube-system/configmaps/kubeadm-config
I1220 11:56:10.601554      30 round_trippers.go:390] Request Headers:
I1220 11:56:10.602287      30 round_trippers.go:393]     User-Agent: kubeadm/v1.13.0 (linux/amd64) kubernetes/ddf47ac
I1220 11:56:10.603124      30 round_trippers.go:393]     Accept: application/json, */*
I1220 11:56:10.603831      30 round_trippers.go:393]     Authorization: Bearer 94dcda.c271f4ff502789ca
I1220 11:56:10.633321      30 round_trippers.go:408] Response Status: 200 OK in 28 milliseconds
I1220 11:56:10.634283      30 round_trippers.go:411] Response Headers:
I1220 11:56:10.635127      30 round_trippers.go:414]     Date: Thu, 20 Dec 2018 11:56:11 GMT
I1220 11:56:10.635912      30 round_trippers.go:414]     Content-Type: application/json
I1220 11:56:10.636635      30 round_trippers.go:414]     Content-Length: 1316
I1220 11:56:10.637413      30 request.go:942] Response Body: {"kind":"ConfigMap","apiVersion":"v1","metadata":{"name":"kubeadm-config","namespace":"kube-system","selfLink":"/api/v1/namespaces/kube-system/configmaps/kubeadm-config","uid":"c8069fb3-0436-11e9-b4e4-4845202d6379","resourceVersion":"173","creationTimestamp":"2018-12-20T09:08:14Z"},"data":{"ClusterConfiguration":"apiServer:\n  certSANs:\n  - 192.168.100.1\n  extraArgs:\n    authorization-mode: Node,RBAC\n    oidc-ca-file: /etc/kubernetes/pki/ca.crt\n    oidc-client-id: kubernetes\n    oidc-groups-claim: group\n    oidc-issuer-url: https://192.168.0.154:32000\n    oidc-username-claim: email\n  timeoutForControlPlane: 4m0s\napiVersion: kubeadm.k8s.io/v1beta1\ncertificatesDir: /etc/kubernetes/pki\nclusterName: kubernetes\ncontrolPlaneEndpoint: \"\"\ncontrollerManager: {}\ndns:\n  type: CoreDNS\netcd:\n  local:\n    dataDir: /var/lib/etcd\n    imageRepository: registry.opensuse.org/devel/kubic/containers/container/kubic\n    imageTag: \"3.3\"\nimageRepository: k8s.gcr.io\nkind: ClusterConfiguration\nkubernetesVer [truncated 292 chars]
I1220 11:56:10.643565      30 round_trippers.go:383] GET https://192.168.100.1:6443/api/v1/namespaces/kube-system/configmaps/kube-proxy
I1220 11:56:10.644430      30 round_trippers.go:390] Request Headers:
I1220 11:56:10.645126      30 round_trippers.go:393]     Accept: application/json, */*
I1220 11:56:10.645791      30 round_trippers.go:393]     User-Agent: kubeadm/v1.13.0 (linux/amd64) kubernetes/ddf47ac
I1220 11:56:10.646455      30 round_trippers.go:393]     Authorization: Bearer 94dcda.c271f4ff502789ca
I1220 11:56:10.654053      30 round_trippers.go:408] Response Status: 200 OK in 6 milliseconds
I1220 11:56:10.655099      30 round_trippers.go:411] Response Headers:
I1220 11:56:10.655921      30 round_trippers.go:414]     Content-Type: application/json
I1220 11:56:10.656796      30 round_trippers.go:414]     Content-Length: 1655
I1220 11:56:10.657597      30 round_trippers.go:414]     Date: Thu, 20 Dec 2018 11:56:11 GMT
I1220 11:56:10.658883      30 request.go:942] Response Body: {"kind":"ConfigMap","apiVersion":"v1","metadata":{"name":"kube-proxy","namespace":"kube-system","selfLink":"/api/v1/namespaces/kube-system/configmaps/kube-proxy","uid":"c8de0370-0436-11e9-b4e4-4845202d6379","resourceVersion":"229","creationTimestamp":"2018-12-20T09:08:15Z","labels":{"app":"kube-proxy"}},"data":{"config.conf":"apiVersion: kubeproxy.config.k8s.io/v1alpha1\nbindAddress: 0.0.0.0\nclientConnection:\n  acceptContentTypes: \"\"\n  burst: 10\n  contentType: application/vnd.kubernetes.protobuf\n  kubeconfig: /var/lib/kube-proxy/kubeconfig.conf\n  qps: 5\nclusterCIDR: 172.16.0.0/13\nconfigSyncPeriod: 15m0s\nconntrack:\n  max: null\n  maxPerCore: 32768\n  min: 131072\n  tcpCloseWaitTimeout: 1h0m0s\n  tcpEstablishedTimeout: 24h0m0s\nenableProfiling: false\nhealthzBindAddress: 0.0.0.0:10256\nhostnameOverride: \"\"\niptables:\n  masqueradeAll: false\n  masqueradeBit: 14\n  minSyncPeriod: 0s\n  syncPeriod: 30s\nipvs:\n  excludeCIDRs: null\n  minSyncPeriod: 0s\n  scheduler: \"\"\n  syncPeriod: 30s\nkind: Kub [truncated 631 chars]
I1220 11:56:10.664746      30 round_trippers.go:383] GET https://192.168.100.1:6443/api/v1/namespaces/kube-system/configmaps/kubelet-config-1.13
I1220 11:56:10.665883      30 round_trippers.go:390] Request Headers:
I1220 11:56:10.666731      30 round_trippers.go:393]     User-Agent: kubeadm/v1.13.0 (linux/amd64) kubernetes/ddf47ac
I1220 11:56:10.667616      30 round_trippers.go:393]     Authorization: Bearer 94dcda.c271f4ff502789ca
I1220 11:56:10.668451      30 round_trippers.go:393]     Accept: application/json, */*
I1220 11:56:10.676896      30 round_trippers.go:408] Response Status: 200 OK in 7 milliseconds
I1220 11:56:10.677820      30 round_trippers.go:411] Response Headers:
I1220 11:56:10.680010      30 round_trippers.go:414]     Content-Type: application/json
I1220 11:56:10.681115      30 round_trippers.go:414]     Content-Length: 2134
I1220 11:56:10.682015      30 round_trippers.go:414]     Date: Thu, 20 Dec 2018 11:56:11 GMT
I1220 11:56:10.683204      30 request.go:942] Response Body: {"kind":"ConfigMap","apiVersion":"v1","metadata":{"name":"kubelet-config-1.13","namespace":"kube-system","selfLink":"/api/v1/namespaces/kube-system/configmaps/kubelet-config-1.13","uid":"c80c1601-0436-11e9-b4e4-4845202d6379","resourceVersion":"176","creationTimestamp":"2018-12-20T09:08:14Z"},"data":{"kubelet":"address: 0.0.0.0\napiVersion: kubelet.config.k8s.io/v1beta1\nauthentication:\n  anonymous:\n    enabled: false\n  webhook:\n    cacheTTL: 2m0s\n    enabled: true\n  x509:\n    clientCAFile: /etc/kubernetes/pki/ca.crt\nauthorization:\n  mode: Webhook\n  webhook:\n    cacheAuthorizedTTL: 5m0s\n    cacheUnauthorizedTTL: 30s\ncgroupDriver: cgroupfs\ncgroupsPerQOS: true\nclusterDNS:\n- 172.24.0.10\nclusterDomain: cluster.local\nconfigMapAndSecretChangeDetectionStrategy: Watch\ncontainerLogMaxFiles: 5\ncontainerLogMaxSize: 10Mi\ncontentType: application/vnd.kubernetes.protobuf\ncpuCFSQuota: true\ncpuCFSQuotaPeriod: 100ms\ncpuManagerPolicy: none\ncpuManagerReconcilePeriod: 10s\nenableControllerAttachDetach: tr [truncated 1110 chars]
I1220 11:56:10.688139      30 interface.go:384] Looking for default routes with IPv4 addresses
I1220 11:56:10.688797      30 interface.go:389] Default route transits interface "eth0"
I1220 11:56:10.689612      30 interface.go:196] Interface eth0 is up
I1220 11:56:10.690375      30 interface.go:244] Interface "eth0" has 2 addresses :[192.168.100.220/24 fe80::d0a8:62ff:fe54:b6e9/64].
I1220 11:56:10.690995      30 interface.go:211] Checking addr  192.168.100.220/24.
I1220 11:56:10.691796      30 interface.go:218] IP found 192.168.100.220
I1220 11:56:10.692489      30 interface.go:250] Found valid IPv4 address 192.168.100.220 for interface "eth0".
I1220 11:56:10.693168      30 interface.go:395] Found active IP 192.168.100.220 
I1220 11:56:10.694393      30 join.go:341] [preflight] Running configuration dependant checks
I1220 11:56:10.695211      30 join.go:478] [join] writing bootstrap kubelet config file at /etc/kubernetes/bootstrap-kubelet.conf
I1220 11:56:10.942159      30 loader.go:359] Config loaded from file /etc/kubernetes/bootstrap-kubelet.conf
I1220 11:56:10.943961      30 join.go:503] Stopping the kubelet
[kubelet] Downloading configuration for the kubelet from the "kubelet-config-1.12" ConfigMap in the kube-system namespace
I1220 11:56:10.977300      30 round_trippers.go:383] GET https://192.168.100.1:6443/api/v1/namespaces/kube-system/configmaps/kubelet-config-1.12
I1220 11:56:10.978035      30 round_trippers.go:390] Request Headers:
I1220 11:56:10.978844      30 round_trippers.go:393]     User-Agent: kubeadm/v1.13.0 (linux/amd64) kubernetes/ddf47ac
I1220 11:56:10.979502      30 round_trippers.go:393]     Accept: application/json, */*
I1220 11:56:10.980081      30 round_trippers.go:393]     Authorization: Bearer 94dcda.c271f4ff502789ca
I1220 11:56:10.983223      30 round_trippers.go:408] Response Status: 403 Forbidden in 2 milliseconds
I1220 11:56:10.984240      30 round_trippers.go:411] Response Headers:
I1220 11:56:10.985065      30 round_trippers.go:414]     Content-Type: application/json
I1220 11:56:10.985883      30 round_trippers.go:414]     X-Content-Type-Options: nosniff
I1220 11:56:10.987515      30 round_trippers.go:414]     Content-Length: 342
I1220 11:56:10.989207      30 round_trippers.go:414]     Date: Thu, 20 Dec 2018 11:56:11 GMT
I1220 11:56:10.990506      30 request.go:942] Response Body: {"kind":"Status","apiVersion":"v1","metadata":{},"status":"Failure","message":"configmaps \"kubelet-config-1.12\" is forbidden: User \"system:bootstrap:94dcda\" cannot get resource \"configmaps\" in API group \"\" in the namespace \"kube-system\"","reason":"Forbidden","details":{"name":"kubelet-config-1.12","kind":"configmaps"},"code":403}
configmaps "kubelet-config-1.12" is forbidden: User "system:bootstrap:94dcda" cannot get resource "configmaps" in API group "" in the namespace "kube-system"
$
$
$ kubeadm version -o json
{
  "clientVersion": {
    "major": "1",
    "minor": "13",
    "gitVersion": "v1.13.0",
    "gitCommit": "ddf47ac13c1a9483ea035a79cd7c10005ff21a6d",
    "gitTreeState": "archive",
    "buildDate": "2018-12-07T12:00:00Z",
    "goVersion": "go1.11.2",
    "compiler": "gc",
    "platform": "linux/amd64"
  }
}

рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ kubelet-config-1.12 рдЬрдмрдХрд┐ рд╕рд╣реА рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди kubelet-config-1.13 рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

kubelet --version рдЬрд╛рдБрдЪ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдореИрдВ рджреЗрдЦрддрд╛ рд╣реВрдБ рдХрд┐:

$ kubelet --version
Kubernetes v1.12.0

рдХреНрдпрд╛ рд╡рд┐рдиреНрдпрд╛рд╕ рдирд╛рдо рдЗрд╕рд╕реЗ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ?

@inercia configmap рдирд╛рдо рдХреНрдпреВрдмрд▓реЗрдЯ рд╕рдВрд╕реНрдХрд░рдг рд╕реЗ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдКрдкрд░ рдореЗрд░рд╛ рд▓рд┐рдВрдХ рджреЗрдЦреЗрдВ

рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж @ oz123ред

рдореИрдВ рд╕реЛрдЪ рд░рд╣рд╛ рдерд╛ рдХрд┐ рдЕрдкрдбреЗрдЯ рдкрд░ рдХреНрдпрд╛ рд╣реЛрдЧрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП,

1) рдПрдХ рдмреАрдЬрдХ my-distribution-1.13 рд╕рд╛рде рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ kubeadm-1.13
2) рдмреАрдЬрдХ init ialized рд╣реИ
3) рдЙрд╕рдХреЗ рдХреБрдЫ рд╕рдордп рдмрд╛рдж, рдПрдХ рд╕рдорд╛рди рдбрд┐рд╕реНрдЯреНрд░реЛ рдХреЗ рд╕рд╛рде рдПрдХ рдиреЛрдб рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ kubeadm-1.13 рдФрд░ kubelet-1.13
4) рд▓реЗрдХрд┐рди рдХреБрдЫ рдЕрдкрдбреЗрдЯ рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдХреЗ рдЕрдВрдд рдореЗрдВ рд▓рд╛рдЧреВ рд╣реЛрддреЗ рд╣реИрдВ, рдФрд░ рдирдпрд╛ kubelet-1.14 рд╕реНрдерд╛рдкрд┐рдд рд╣реЛрддрд╛ рд╣реИ
5) kubeadm join 1.14 рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рджреЗрдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╡рд╣рд╛рдБ рдирд╣реАрдВ рд╣реИ ...

рдореИрдВ рдПрдХ kubeadm рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде k8s 1.13.1 рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реБрдП рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдХреНрдпреВрдм-рдкреНрд░реЙрдХреНрд╕реА рд╕реЗ рдЕрд▓рдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:

kubeadm join --config /etc/kubernetes/kubeadm-client.conf --ignore-preflight-errors=all
[preflight] Running pre-flight checks
[discovery] Trying to connect to API Server "xxx.xxx.xxx.xxx:6443"
[discovery] Created cluster-info discovery client, requesting info from "https://xxx.xxx.xxx.xxx:6443"
[discovery] Cluster info signature and contents are valid and no TLS pinning was specified, will use API Server "xxx.xxx.xxx.xxx:6443"
[discovery] Successfully established connection with API Server "xxx.xxx.xxx.xxx:6443"
[join] Reading configuration from the cluster...
[join] FYI: You can look at this config file with 'kubectl -n kube-system get cm kubeadm-config -oyaml'
unable to fetch the kubeadm-config ConfigMap: failed to get component configs: configmaps "kube-proxy" is forbidden: User "system:bootstrap:3tw24k" cannot get resource "configmaps" in API group "" in the namespace "kube-system"

рдпрджрд┐ рдореИрдВ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рд░реЛрд▓рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдмрдирд╛рддрд╛ рд╣реВрдВ, рддреЛ рдореИрдВ рдиреЛрдбреНрд╕ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реВрдВред

# on controlplane node
kubectl create rolebinding -n kube-system --role kube-proxy --group system:bootstrappers:kubeadm:default-node-token kubeadm:kube-proxy-bootstrap

# on joining node
...
[join] Reading configuration from the cluster...
[join] FYI: You can look at this config file with 'kubectl -n kube-system get cm kubeadm-config -oyaml'
[kubelet] Downloading configuration for the kubelet from the "kubelet-config-1.13" ConfigMap in the kube-system namespace
[kubelet-start] Writing kubelet configuration to file "/var/lib/kubelet/config.yaml"
[kubelet-start] Writing kubelet environment file with flags to file "/var/lib/kubelet/kubeadm-flags.env"
[kubelet-start] Activating the kubelet service
[tlsbootstrap] Waiting for the kubelet to perform the TLS Bootstrap...
[patchnode] Uploading the CRI Socket information "/var/run/dockershim.sock" to the Node API object "ci-pdk1-debug4144-k8sne-1" as an annotation

This node has joined the cluster:
* Certificate signing request was sent to apiserver and a response was received.
* The Kubelet was informed of the new secure connection details.

Run 'kubectl get nodes' on the master to see this node join the cluster.

рдХреНрдпрд╛ kube-proxy system:bootstrappers:kubeadm:default-node-token рд╕рдореВрд╣ рдХреЗ рд▓рд┐рдП рд░реЛрд▓рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкреЙрдкреНрдпреБрд▓реЗрдЯ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╣реИ? рдХрд┐рд╕реА рднреА рд╡рд┐рдЪрд╛рд░ рдпрд╣рд╛рдБ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ?

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдореЗрдВ рдкрд╛рдпрд╛ рдЧрдпрд╛ рдХрд┐ рдЪрд▓ kubeadm init phase addon kube-proxy рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдХреЗ рдмрд╛рдж рдореЗрд░реА рдкрд╣рд▓реА kubeadm init рдХреЗ рд▓рд┐рдП рдПрдХ Kube-рдкреНрд░реЙрдХреНрд╕реА RoleBinding рдмрдирд╛рддрд╛ system:bootstrappers:kubeadm:default-node-token ред рдЕрднреА рднреА рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреНрдпреЛрдВ рдореЗрд░реЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ kubeadm init рдЗрд╕ рд░реЛрд▓рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХреЛ рдмрдирд╛рддреЗ рд╣реИрдВред

рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд┐рдпрд╛:

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

рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рдЕрдкрдиреЗ рд╡рд░реНрддрдорд╛рди рд╕рдВрд╕реНрдХрд░рдг рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ:
рдХреНрдпреВрдмрд▓реЗрдЯ --version

kubeadm рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ
kubeadm рд╕рдВрд╕реНрдХрд░рдг

рдпрджрд┐ рд╡реЗ рдЕрд▓рдЧ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рд╕рдорд╕реНрдпрд╛рдПрдБ рд╣реИрдВред рдЖрдкрдХреЛ рдЕрдкрдиреЗ рд╕рднреА рдиреЛрдбреНрд╕ рдХреЗ рдмреАрдЪ рдПрдХ рд╣реА рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдлрд┐рд░ рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдбрд╛рдЙрдирдЧреНрд░реЗрдб рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреА рдЪрд╛рд╣рд┐рдПред рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдЖрджреЗрд╢ рдореЗрдВ рдореЗрд░реЗ рд╕рдВрд╕реНрдХрд░рдг рд╕рдВрднрд╡рддрдГ рдкреБрд░рд╛рдиреЗ рд╕рдордп рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдкреБрд░рд╛рдиреЗ рд╣реИрдВ, рдЖрдк рд╕рдВрд╕реНрдХрд░рдг рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдХреБрдЫ рдФрд░ рдЕрджреНрдпрддрдиреЛрдВ рдХреЗ рд╕рд╛рде рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХрд╛рдо рдХрд░реЗрдВрдЧреЗ:
sudo apt-get install -y docker-ce = 18.06.1 ~ ce ~ 3-0 ~ ubuntu kubelet = 1.12.2-00 kubeadm = 1.12.2-00 kubectl = 1.12.2-00-allow-downgrades

рдлрд┐рд░, рдПрдХ рдмрд╛рд░ рдЬрдм рд╡реЗ рд╕реНрдерд╛рдкрд┐рдд рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ рдЙрдиреНрд╣реЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░реЗрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдкрдХрдбрд╝ рдХрд░ рд░рдЦреЗрдВ рддрд╛рдХрд┐ рд╡реЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЙрдиреНрдирдд рди рд╣реЛ рд╕рдХреЗрдВ, рдФрд░ рдЖрдкрдХреЗ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рддреЛрдбрд╝ рд╕рдХреЗрдВ
sudo apt-mark hold docker-ce kubelet kubeadm kubectl

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

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

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

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

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

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

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