Kubeadm: рдбрд┐рд╕реНрдХрд╡рд░реА рдЯреЛрдХрди рд╕реАрдП рд╣реИрд╢ рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдкреНрд░реЛрдЧреНрд░рд╛рдореЗрдЯрд┐рдХ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ

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

рдпрджрд┐ рдЖрдк рдХреБрдмреЗрджрдо рдЯреЛрдХрди рдХреНрд░рд┐рдПрдЯ .. рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рддрдВрддреНрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рдЯреЛрдХрди рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВ, рддреЛ kubeadm init рдХреЗ рдорд╛рдирд╡ рдкрдардиреАрдп рдЖрдЙрдЯрдкреБрдЯ (рдФрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдЧреИрд░ рд╕реНрдерд┐рд░) рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреЗ рдмрд╛рд╣рд░ рдЯреЛрдХрди рд╕реАрдП рдкреНрд░рдорд╛рдгрдкрддреНрд░ рд╣реИрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред рд╕реАрдП рд╣реИрд╢ рдХреЗ рд╕рд╛рде рдЯреЛрдХрди рдмрдирд╛рдиреЗ рдХрд╛ рдПрдХ рдорд╢реАрди рдкрдардиреАрдп рддрд░реАрдХрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЕрдиреНрдпрдерд╛ рдХрд┐рд╕реА рдХреЛ - рдЦреЛрдЬ-рдЯреЛрдХрди-рдЕрд╕реБрд░рдХреНрд╖рд┐рдд-рд╕реНрдХрд┐рдк-рд╕реАрдП-рд╕рддреНрдпрд╛рдкрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рднрд▓реЗ рд╣реА рд╕рд╣реА рдХрд╛рдо (рдЯреАрдПрдо) рдХрд░рдиреЗ рдХреА рдЗрдЪреНрдЫрд╛ рд╣реЛред рдПрдЯреАрдПрдо рд╡рд┐рдХрд▓реНрдк рдпрд╛ рддреЛ kubeadm init рдХреЗ рдорд╛рдирд╡ рд░реАрдб рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдпрд╛ ca рдкрд░ kubeadm рдХреА рд╣реИрд╢ рдЧрдгрдирд╛ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд╛рдЧреВ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдмрд╛рдж рдореЗрдВ рдЗрддрдирд╛ рдмреБрд░рд╛ рдирд╣реАрдВ рд╣реЛрдЧрд╛ рдпрджрд┐ рдЗрд╕реЗ рд╕реНрд░реЛрдд рдХреЛ рдкрдврд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрдХ рд╕рд░рд▓ рдирд╣реАрдВ рд╣реИ рдЬреИрд╕реЗ рдХрд┐ cd /etc/kubernetes/pki && sha256sum * рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА kubeadm init рджреНрд╡рд╛рд░рд╛ рдЙрд╕ рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рд╕рдорд╛рди рдирд╣реАрдВ рджрд┐рдЦрд╛рддрд╛ рд╣реИред

kinfeature prioritbacklog

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

рдХреНрдпрд╛ рдЖрдкрдиреЗ рдХреБрдмреЗрджрдо рдХреЗ рд╣рд╛рд▓ рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ?

# kubeadm token create --print-join-command
kubeadm join --token 5d2dc8.3e93f8449167639b 10.0.2.66:6443 --discovery-token-ca-cert-hash sha256:44a68d4a2c2a86e05cc0d4ee8c9c6b64352c54e450021331c483561e45b34388

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

рдХреНрдпрд╛ рдЖрдкрдиреЗ рдХреБрдмреЗрджрдо рдХреЗ рд╣рд╛рд▓ рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ?

# kubeadm token create --print-join-command
kubeadm join --token 5d2dc8.3e93f8449167639b 10.0.2.66:6443 --discovery-token-ca-cert-hash sha256:44a68d4a2c2a86e05cc0d4ee8c9c6b64352c54e450021331c483561e45b34388

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

рдзрдиреНрдпрд╡рд╛рдж, рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдерд╛ рдХрд┐ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ/рдирдпрд╛ рдЖрджреЗрд╢ рдерд╛ред рдореИрдВ рд╕рд╣рдордд рд╣реВрдВ, рдЗрд╕реЗ рдЬреЗрд╕рди рдореЗрдВ рд░рдЦрдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред 1.6 рдФрд░ 1.7 рдХреЗ рд▓рд┐рдП рдореЗрд░рд╛ рдкрд┐рдЫрд▓рд╛ рдХрд╛рд░реНрдпрдкреНрд░рд╡рд╛рд╣, kubeadm рдЯреЛрдХрди рдЬреЗрдирд░реЗрдЯ рдерд╛, рдФрд░ рдлрд┐рд░ рдЙрд╕ рдорд╛рди рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп init'ing рдФрд░ join'ing, kubeadm рдЯреЛрдХрди рдЬреЗрдирд░реЗрдЯ рдорд╢реАрди рдкрдардиреАрдп рд╕рд┐рдВрдЧрд▓ рд╡реИрд▓реНрдпреВ рд▓рд╛рдЗрди рд╕реАрдорд╛рдВрдХрд┐рдд рдерд╛, рд▓реЗрдХрд┐рди рдЕрдм рдпрд╣ рдкреНрд░рднрд╛рд╡реА рд░реВрдк рд╕реЗ рдПрдХ рдореГрдд рдХрдорд╛рдВрдб рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ рдХрдореА рд╣реИ рд╕рд░реНрдЯрд┐рдлрд┐рдХреЗрдЯ рд╣реИрд╢ (рдФрд░ рдЙрд╕ рдкреНрд░рд╛рд░реВрдк рдХреЗ рдХрд╛рд░рдг рдкреНрд░рддрд┐ рд╕реЗ рдПрдХреНрд╕реНрдЯреЗрдВрд╕рд┐рдмрд▓ рдирд╣реАрдВ)ред рдлрд┐рд░ рдорд╢реАрди рдкрдардиреАрдп рдХреНрдпреЛрдВ рд╣реИ, рдореЗрд░реЗ рдкрд╛рд╕ рд╢рд╛рдорд┐рд▓ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рдкреИрд░рд╛рдореАрдЯрд░ рд╣реИрдВ рдФрд░ рдХреБрдЫ рдЬрд┐рдиреНрд╣реЗрдВ рдореБрдЭреЗ рдЖрдИрдкреА рдХреЗ рд▓рд┐рдП рдбреАрдПрдирдПрд╕ рдХреА рддрд░рд╣ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

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

рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рдФрд░ рдЕрдзрд┐рдХ рдкреНрд░реЛрдЧреНрд░рд╛рдореЗрдЯрд┐рдХ рдмрдирд╛рдиреЗ рдФрд░ рдЭрдВрдбреЗ рдХреЛ рдбреА-рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЪрд░рдгреЛрдВ рдХреЛ рдЯреНрд░рд┐рдо рдХрд░рдиреЗ рдХрд╛ рдПрдХ рд╕рддрдд рдкреНрд░рдпрд╛рд╕ рд╣реИ, рдпрд╣ рдХреЗрд╡рд▓ рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд╣рд╛рдиреА рд╣реИред @fabriziopandini рдХреНрдпрд╛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХрд╣реАрдВ рдХреЛрдИ рдореВрд▓ рд╕рдорд╕реНрдпрд╛ рд╣реИ?

@timothysc
рд╕реНрдирд╛рддрдХ рдЪрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдореБрджреНрджрд╛ # 454 рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рддрд░рд╣ рд╕реЗ рдкреБрд░рд╛рдирд╛ рд╣реИ рдФрд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЖрдЧрд╛рдореА рдХреЗрдИрдкреА рдХреЛ рдордВрдЬреВрд░реА рдорд┐рд▓рддреЗ рд╣реА рдПрдХ рдирдП рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рдирд╛ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реЛред

рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ, IMO рд╣рдореЗрдВ рд╕рднреА рдХрдорд╛рдВрдбреЛрдВ рдореЗрдВ рдПрдХ рд╕реБрд╕рдВрдЧрдд рддрд░реАрдХреЗ рд╕реЗ рдорд╢реАрди рдкрдардиреАрдп рдЖрдЙрдЯрдкреБрдЯ рдХреА рдорд╛рдВрдЧ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдорд░реНрдкрд┐рдд рдЫрд╛рддрд╛ рдореБрджреНрджрд╛ рдЦреЛрд▓рдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рдЕрдиреБрд░реЛрдз kubeadm init/phases рд╕реЗ kubeadm token рддрдХ рдлреИрд▓рд╛ рд╣реБрдЖ рд╣реИред рдФрд░ kubeadm upgrade (#494 рджреЗрдЦреЗрдВ)ред

рдбрдмреНрд▓реНрдпреВрдбреАрд╡рд╛рдИрдЯреА? рдЕрдЧрд░ рдпрд╣ рдЖрдкрдХреЗ рд▓рд┐рдП рдареАрдХ рд╣реИ, рддреЛ рдореИрдВ рдирдпрд╛ рдЫрд╛рддрд╛ рдореБрджреНрджрд╛ рдЦреЛрд▓реВрдВрдЧрд╛ ...

рдореИрдВрдиреЗ рдЕрднреА рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдЦреБрдж рдорд╛рд░рд╛ рд╣реИред рдореИрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реАрдП рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХреА рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреБрдВрдЬреА рдХреЗ sha256sum рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛:

$ openssl x509 -in /etc/kubernetes/pki/ca.crt -noout -pubkey | openssl rsa -pubin -outform DER 2>/dev/null | sha256sum | cut -d' ' -f1

рд╕реБрдВрджрд░ рдирд╣реАрдВ...

рдореИрдВ рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред рдореИрдВрдиреЗ Ansible рдХреЗ рд╕рд╛рде рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ред

- hosts: localhost
  tasks:
    - shell: kubeadm token create --print-join-command
      register: results
    - debug:
        var: results.stdout
    - set_fact:
        token: "{{ results.stdout | regex_search(regexp, '\\2') | first }}"
      vars:
        regexp: '([^\s]+\s){4}([^\s]+)'
    - debug:
        var: token
    - set_fact:
        hash: "{{ results.stdout | regex_search(regexp, '\\2') | first }}"
      vars:
        regexp: '([^\s]+\s){6}([^\s]+)'
    - debug:
        var: hash

рдирддреАрдЬрд╛:

TASK [debug] *******************************************************************************************************************************************************************************************************
ok: [localhost] => {
    "results.stdout": "kubeadm join 192.168.1.2:6443 --token 3a0fje.octau87o6x30dz8i --discovery-token-ca-cert-hash sha256:1fd18093fb89b364879d5667b7ec84fd24171c30de0070deb6a3801b54a0f85c"
}

TASK [set_fact] ****************************************************************************************************************************************************************************************************
ok: [localhost]

TASK [debug] *******************************************************************************************************************************************************************************************************
ok: [localhost] => {
    "token": "3a0fje.octau87o6x30dz8i"
}

TASK [set_fact] ****************************************************************************************************************************************************************************************************
ok: [localhost]

TASK [debug] *******************************************************************************************************************************************************************************************************
ok: [localhost] => {
    "hash": "sha256:1fd18093fb89b364879d5667b7ec84fd24171c30de0070deb6a3801b54a0f85c"
}

рдХрдИ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХреЗ рд░реВрдк рдореЗрдВ рдмрдВрдж рдХрд░рдирд╛ред

рдпрд╣ рдЕрдиреБрд╢рдВрд╕рд┐рдд рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди https://github.com/cablespaghetti/kubeadm-aws/blob/master/worker.sh#L45 --discovery-token-unsafe-skip-ca-verification рднреА рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ

Azure рдкрд░, рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдФрд░ рдорд╛рд╕реНрдЯрд░ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдЯреИрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛:
рдЖрд░рдЬреА рдЖрд░рдЬреА рдирд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ рдЪрд░ рд╣реИ

MasterPrivateIp=$(az рдиреЗрдЯрд╡рд░реНрдХ nic list -g $rg --query "[?tags.module == 'k8smasters'].ipConfigurations[0].privateIpAddress" -o tsv)
tokenId=$(ssh $masterIp "kubeadm рдЯреЛрдХрди рд╕реВрдЪреА | grep -v TOKEN | cut -d' ' -f1")
tokenSHA=$(ssh $masterIp "openssl x509 -in /etc/kubernetes/pki/ca.crt -noout -pubkey | openssl rsa -pubin -outform DER 2>/dev/null | sha256sum | cut -d' ' -f1 ")

joinCommand="kubeadm $master рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдВ PrivateIp:6443 --token $tokenId --discovery-token-ca-cert-hash sha256:$tokenSHA"

$ рдореЗрдВ рдЖрдИрдкреА рдХреЗ рд▓рд┐рдП (az рдиреЗрдЯрд╡рд░реНрдХ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ-рдЖрдИрдкреА рд╕реВрдЪреА -g $rg --query [?tags.module == 'k8sworkers'].ipAddress -o tsv)
рдХрд░рдирд╛
ssh $ip $joinCommand
рдХрд┐рдпрд╛ рд╣реБрдЖ

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

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

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

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

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

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

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