
рд╣рдордиреЗ рд╢реБрд░реБрдЖрддреА рдмреАрдЯрд╛ рдЯреЗрд╕реНрдЯрд┐рдВрдЧ рдореЛрдб рдореЗрдВ рд╡рд░реНрдЪреБрдЕрд▓ рдкреНрд░рд╛рдЗрд╡реЗрдЯ рдХреНрд▓рд╛рдЙрдб рд╕рд░реНрд╡рд┐рд╕ рдореЗрдВ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдЬреЛрдбрд╝реА рд╣реИред
рдпрд╣ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЙрди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧреА рдЬрд┐рдиреНрд╣реЗрдВ рдХрдВрдЯреЗрдирд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд▓рдиреЗ рд╡рд╛рд▓реЗ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдкреНрд░рдмрдВрдзрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдПрдХ рдХреНрд▓рд╕реНрдЯрд░ рдХреЗ рдЕрдВрджрд░ рдЪрд▓рдиреЗ рд╡рд╛рд▓реЗ рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЗ рд▓рд┐рдП рд╕реНрдХреЗрд▓рд┐рдВрдЧ, рд╕реНрд╡-рдЪрд┐рдХрд┐рддреНрд╕рд╛, рд▓реЛрдб рд╕рдВрддреБрд▓рди рдХреЗ рд▓рд┐рдП рдЙрдкрдХрд░рдг рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
рдЪреВрдВрдХрд┐ рд╡рд░реНрдЪреБрдЕрд▓ рдкреНрд░рд╛рдЗрд╡реЗрдЯ рдХреНрд▓рд╛рдЙрдб рд╕рд░реНрд╡рд┐рд╕ рдУрдкрдирд╕реНрдЯреИрдХ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЗрд╕рдХреЗ рдПрдХ рдШрдЯрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ - рдУрдкрдирд╕реНрдЯреИрдХ рдореИрдЧреНрдирдо ред рдпрд╣ рдЖрдкрдХреЛ рд╡рд╛рдВрдЫрд┐рдд рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдиреЛрдбреНрд╕ рдХреЗ рд╕рд╛рде рдирд┐рдЬреА рдХреБрдмреЗрд░рдиреЗрдЯ рдХреНрд▓рд╕реНрдЯрд░ рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рд╡рд░реНрддрдорд╛рди рдореЗрдВ, рд╣рдорд╛рд░реА рд╕реЗрд╡рд╛ рдХрд╛ рдХреЛрдИ рднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдХрдИ рд╕реНрд╡рддрдВрддреНрд░ рдХреНрд▓рд╕реНрдЯрд░ рдмрдирд╛ рд╕рдХрддрд╛ рд╣реИред рдХреНрд▓рд╕реНрдЯрд░ рдиреЛрдбреНрд╕ рдХреЗ рд░реВрдк рдореЗрдВ, рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдЪреБрдирд╛ рдФрд░ рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рд╣рдо рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдХреНрд▓рд╕реНрдЯрд░ рдХреА рдореБрдЦреНрдп рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗ рдФрд░ рдУрдкрдирд╕реНрдЯреИрдХ рдореИрдЧреНрдирдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреНрд▓рд╕реНрдЯрд░ рдмрдирд╛рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред
рдХреБрдмреЗрд░рдиреЗрдЯ рдХреНрд▓рд╕реНрдЯрд░ рдмрдирд╛рдПрдВ рдФрд░ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░реЗрдВ
рд╡рд░реНрддрдорд╛рди рдореЗрдВ, рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдХреНрд▓рд╕реНрдЯрд░ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрдВрд╕реЛрд▓ рдпреВрдЯрд┐рд▓рд┐рдЯреАрдЬ рдпрд╛ рдУрдкрдирд╕реНрдЯреИрдХ рдПрдкреАрдЖрдИ рдЗрди рдЙрдкрд▓рдмреНрдзрддрд╛ рдЬреЛрди рдЖрд░ -1 рдП рдФрд░ рдЖрд░рдпреВ -1 рдмреА (рд╕реЗрдВрдЯ рдкреАрдЯрд░реНрд╕рдмрд░реНрдЧ) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣реА рд╕рдВрднрд╡ рд╣реИред
рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА:
- рдПрдХ рдирдпрд╛ рдмрдирд╛рдПрдБ рдпрд╛ рдХрд┐рд╕реА рдореМрдЬреВрджрд╛ VPC рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ;
- рдПрдХ SSH рдХреБрдВрдЬреА рдХреЗ рд╕рд╛рде рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдмрдирд╛рдПрдВ;
- рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкреНрд░рдмрдВрдзрди рдкреГрд╖реНрда рдкрд░ рдмрдирд╛рдИ рдЧрдИ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЬреЛрдбрд╝реЗрдВ;
- рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкрд░ рдЬрд╛рдПрдВ рдФрд░ рдПрдХреНрд╕реЗрд╕ рдЯреИрдм рдкрд░ рдПрдХреНрд╕реЗрд╕ рдлрд╝рд╛рдЗрд▓ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ;
- рдЕрдЬрдЧрд░-рдореИрдЧреНрдиреАрдХреНрд▓рд┐рдЕрди рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд╕рд╛рде рдУрдкрдирд╕реНрдЯреИрдХ рдХрдВрд╕реЛрд▓ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ;
- Kubectl рдХрдВрд╕реЛрд▓ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВред
рдУрдкрдирд╕реНрдЯреИрдХ рдХрдВрд╕реЛрд▓ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рд▓рд┐рдВрдХ рдкрд░ рджрд┐рдП рдЧрдП рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдЗрд╕ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдХреБрдмреЗрд░рдиреАрдЬрд╝ рд╕рдореВрд╣реЛрдВ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдЬрдЧрд░-рдореИрдЧреНрдиреАрдХреНрд▓реЗрд╡ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред
рдЙрдмрдВрдЯреВ / рдбреЗрдмрд┐рдпрди рдкрд░рд┐рд╡рд╛рд░ рдХреЗ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдкреНрд▓рдЧ-рдЗрди рдХреЗ рд╕рд╛рде рдПрдХ рдУрдкрдирд╕реНрдЯреИрдХ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдорд╛рдВрдб рдХрд╛ рдкреВрд░рд╛ рд╕реЗрдЯ:
$ sudo apt update $ sudo apt -y install curl python-pip python-dev python3-dev git libxml2-dev libxslt1-dev python-openssl python3-openssl python-pyasn1 libffi-dev libssl-dev build-essential $ sudo pip install -UI pbr setuptools pytz $ sudo pip install -UI git+https://github.com/openstack/python-openstackclient $ sudo pip install -UI git+https://github.com/openstack/python-magnumclient
рдлреЗрдбреЛрд░рд╛ / рд╕реЗрдВрдЯреЛрд╕ рдкрд░рд┐рд╡рд╛рд░ рдХреЗ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдкреНрд▓рдЧ-рдЗрди рдХреЗ рд╕рд╛рде рдПрдХ рдУрдкрдирд╕реНрдЯреИрдХ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдорд╛рдВрдб рдХрд╛ рдкреВрд░рд╛ рд╕реЗрдЯ:
$ sudo yum -y install python-pip gcc libffi-devel python-devel libxslt-devel openssl-devel git libffi-devel $ sudo pip install -UI pbr setuptools pytz $ sudo pip install -UI git+https://github.com/openstack/python-openstackclient $ sudo pip install -UI git+https://github.com/openstack/python-magnumclient
рдХреБрдмреЗрд░рдиреЗрдЯ рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдХреБрдмреЗрдЯреЗрд▓ рдХрдВрд╕реЛрд▓ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рд╡рд┐рднрд┐рдиреНрди рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдХреЗ рддрд░реАрдХреЗ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╣реИрдВред
рдПрдХ рдХреНрд▓рд╕реНрдЯрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдореМрдЬреВрджрд╛ рд╡рд╛рд▓реЗ рдмрдирд╛рдиреЗ рдпрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА:
- рдХреНрд▓рд╕реНрдЯрд░ рдЯреЗрдореНрдкрд▓реЗрдЯ ;
- рд╕реАрдкреАрдпреВ рдФрд░ рдЖрднрд╛рд╕реА рдорд╢реАрдиреЛрдВ (рд╕реНрд╡рд╛рдж) рдХреА рд░реИрдо рдХреЗ рд▓рд┐рдП рдорд╛рдирдХреЛрдВ рд╕реЗрдЯ рдХрд░реЗрдВред
рдЖрдк рдХреНрд▓рд╕реНрдЯрд░ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╕реНрд╡рдпрдВ рд╕реНрд╡рд╛рдж рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╛ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдкреВрд░реНрд╡-рдирд┐рд░реНрдорд┐рдд рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЖрдкрдХреЛ рдЙрдкрд▓рдмреНрдзрддрд╛ рдХреНрд╖реЗрддреНрд░, рдЖрдкрдХреЗ рдХреНрд▓рд╕реНрдЯрд░ рдХреЗ рд▓рд┐рдП рдбрд┐рд╕реНрдХ рдФрд░ рдиреЛрдбреНрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдпрд╣ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рд╣рдо рдЕрднреА рддрдХ рдХрдИ рдХреНрд╖реЗрддреНрд░реЛрдВ рдореЗрдВ рдПрдХ рдХреНрд▓рд╕реНрдЯрд░ рдмрдирд╛рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдЖрдк рдХрд┐рд╕реА рднреА рдкреНрд░рдХрд╛рд░ рдХреА рдиреЗрдЯрд╡рд░реНрдХ рдбреНрд░рд╛рдЗрд╡ (рддреЗрдЬ, рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рдпрд╛ рдмреБрдирд┐рдпрд╛рджреА) рдЪреБрди рд╕рдХрддреЗ рд╣реИрдВред
рдЖрдк рд╣рдорд╛рд░реЗ рдЬреНрдЮрд╛рди рдЖрдзрд╛рд░ рд╕реЗ рдбреНрд░рд╛рдЗрд╡ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рди рд╕рдХрддреЗ рд╣реИрдВред
рдиреЛрдбреНрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ рдорд╛рд╕реНрдЯрд░ рдФрд░ рдорд┐рдирд┐рдпрди рднреВрдорд┐рдХрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ рд╣реЛ рд╕рдХрддреА рд╣реИред рдорд╛рд╕реНрдЯрд░ рдХреА рднреВрдорд┐рдХрд╛ рдирд┐рднрд╛рдиреЗ рд╡рд╛рд▓реЗ рдиреЛрдбреНрд╕ рдкрд░, рдХреНрд▓рд╕реНрдЯрд░ рдирд┐рдпрдВрддреНрд░рдг рддрддреНрд╡реЛрдВ рдХреЛ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ - рдирд┐рдпрдВрддреНрд░рдХ-рдкреНрд░рдмрдВрдзрдХ , рдЕрдиреБрд╕реВрдЪрдХ , рдПрдкреА ред рдЕрдиреНрдп рдиреЛрдбреНрд╕ рдкрд░, рдХреНрдпреВрдмрд▓реЗрдЯ , рдХреНрдпреВрдм-рдкреНрд░реЙрдХреНрд╕реА рд╕реЗрд╡рд╛рдПрдВ рдФрд░ рд╕рднреА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрдВрдЯреЗрдирд░ рд▓реЙрдиреНрдЪ рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗред рдЖрдк рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд╕реЗ рдХреНрд▓рд╕реНрдЯрд░ рдиреЛрдбреНрд╕ рдкрд░ рдЪрд▓рдиреЗ рд╡рд╛рд▓реЗ рдШрдЯрдХреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рди рд╕рдХрддреЗ рд╣реИрдВред
SSH рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдиреЛрдбреНрд╕ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рдмрдирд╛рдИ рдЧрдИ SSH рдХреБрдВрдЬреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдирдореВрдирд╛ рдЖрджреЗрд╢ ssh- рдкрд░реАрдХреНрд╖рдг рдирд╛рдордХ рдПрдХ рдХреБрдВрдЬреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛ред
рд╣рдо рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреНрд▓рд╕реНрдЯрд░ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдФрд░ рдлреНрд▓реЗрд╡рд░, рдлрд╛рд╕реНрдЯ рдбрд┐рд╕реНрдХ рдкреНрд░рдХрд╛рд░ рдФрд░ рдЖрд░рдпреВ -1 рдмреА рдЙрдкрд▓рдмреНрдзрддрд╛ рдХреНрд╖реЗрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред
рд╣рдорд╛рд░реЗ рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ, рд╢реБрд░реВ рдореЗрдВ 2 рдорд╛рд╕реНрдЯрд░ рдиреЛрдб рдФрд░ 3 рдорд┐рдирд┐рдпрди рдиреЛрдб рд╢реБрд░реВ рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗред
рдЗрди рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдУрдкрдирд╕реНрдЯреИрдХрдХреНрд▓рд╛рдЗрдВрдЯ рдХрдорд╛рдВрдб рдФрд░ рдбрд╛рдЙрдирд▓реЛрдб рдХреА рдЧрдИ рдПрдХреНрд╕реЗрд╕ рдлрд╝рд╛рдЗрд▓ ( rsh ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ:
рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдо рджреВрд╕рд░реЗ рдХреНрд▓рд╕реНрдЯрд░ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВрдЧреЗ, рдкреНрд░рддреНрдпреЗрдХ рдиреЛрдб рдХреЗ рд▓рд┐рдП рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд░реВрдк рд╕реЗ рд╕реБрд▓рдн рдлрд╝реНрд▓реЛрдЯрд┐рдВрдЧ рдкрддреЗ рдЗрд╕рд╕реЗ рдирд╣реАрдВ рдмрдирд╛рдП рдЬрд╛рдПрдВрдЧреЗред рд╣рдореЗрдВ рдЙрдирдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдЧреАред
# Kubernetes test-cluster # keypair , $ openstack coe cluster create \ --cluster-template kubernetes-nofloatingips-ru-1b-v1.9.9 \ --master-count 2 \ --node-count 3 \ --keypair ssh-test \ --master-flavor BL1.2-4096 \ --flavor BL1.2-4096 \ test-cluster
рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╣рдордиреЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдиреЛрдбреНрд╕ (рдорд╛рд╕реНрдЯрд░-рд╕реНрд╡рд╛рдж рдФрд░ рд╕реНрд╡рд╛рдж рдорд╛рдкрджрдВрдбреЛрдВ) рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЪреБрдирд╛ рд╣реИ, рдЖрдк рдХреНрд▓рд╕реНрдЯрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╡рд┐рднрд┐рдиреНрди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕реЗрдЯ рдЪреБрди рд╕рдХрддреЗ рд╣реИрдВред рдЗрдирдХрд╛ рдкрд░рд┐рд╡рд░реНрддрди рдЗрд╕рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рдмрд╛рдж рд╕рдВрднрд╡ рд╣реИред
рдпрд╣ рднреА рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдХрдИ рдорд╛рд╕реНрдЯрд░ рдиреЛрдбреНрд╕ рдХреЗ рд╕рд╛рде рдПрдХ рдХреНрд▓рд╕реНрдЯрд░ рдмрдирд╛рддреЗ рд╕рдордп, рдХреБрдмреЗрд░рдиреЗрд╕реЗрд╕ рдПрдкреАрдЖрдИ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓реЛрдб рдмреИрд▓реЗрдВрд╕рд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдХреБрдЫ рдорд┐рдирдЯреЛрдВ рдХреЗ рдмрд╛рдж, рдЖрдкрдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдПрдХ рдХреБрдмреЗрд░рдиреЗрдЯ рд╕рдореВрд╣ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛ред рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрдВрдЯреНрд░реЛрд▓ рдкреИрдирд▓ рдореЗрдВ, рдЖрдкрдХреЛ рдирдИ рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрдиреЗрдВ, рдбрд┐рд╕реНрдХ рдФрд░ рдиреЗрдЯрд╡рд░реНрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рджрд┐рдЦрд╛рдИ рджреЗрдВрдЧреЗред
рдЖрдк рдЕрдкрдиреЗ рдХреНрд▓рд╕реНрдЯрд░ рдХреА рд╕реНрдерд┐рддрд┐ рдУрдкрдирд╕реНрдЯреИрдХрдХрд┐рдПрдВрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ:
openstack coe cluster list -c name -c status +--------------+--------------------+ | name | status | +--------------+--------------------+ | test-cluster | CREATE_IN_PROGRESS | +--------------+--------------------+
рдХреНрд▓рд╕реНрдЯрд░ CREATE_COMPLETE рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдк рдирд┐рдореНрди рдЖрджреЗрд╢реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдХреЗ kubectl рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЗрд╕рдХреА рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
$ mkdir -p ~/test-cluster $ openstack coe cluster config test-cluster --dir ~/test-cluster
рдЙрд╕рдХреЗ рдмрд╛рдж, рдЖрдк kubectl рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреНрд▓рд╕реНрдЯрд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
$ export KUBECONFIG=~/test-cluster/config $ kubectl get pods --all-namespaces -o=custom-columns=NAME:.metadata.name,STATUS:.status.phase NAME STATUS coredns-785dcf9c58-6gnfp Running heapster-6846cdc674-rm4k6 Running kube-dns-autoscaler-6b94f7bbf8-x5clt Running kubernetes-dashboard-747575c864-wlg6p Running monitoring-grafana-84b4596dd7-zf5rx Running monitoring-influxdb-c8486fc95-bqqb6 Running node-exporter-test-cluster-robvp4cvwpt7-minion-0 Running
рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рдЖрдк рдирдП node_count рдорд╛рди рдХреЛ рдкрд╛рд╕ рдХрд░рдХреЗ рдУрдкрдирд╕реНрдЯреИрдХрдХреНрд▓рд┐рдПрдВрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рдорд┐рдирд┐рдпрди рдиреЛрдбреНрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ рдмрдврд╝рд╛ рдпрд╛ рдШрдЯрд╛ рд╕рдХрддреЗ рд╣реИрдВ:
$ openstack coe cluster update test-cluster replace node_count=4
рдХреБрдВрдЬреА Kubernetes рдХреНрд▓рд╕реНрдЯрд░ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕
рдлрд▓реА
рд╣рд╛рд▓рд╛рдВрдХрд┐ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЗ рдПрдХ рд╕рдореВрд╣ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдХреА рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдЗрдХрд╛рдИ рдХрдВрдЯреЗрдирд░ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдлрд▓реА рд╣реИ ред
рдкреЙрдб рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдиреЗрд▓ рдиреЗрдорд╕реНрдкреЗрд╕ рдФрд░ рдиреЗрдЯрд╡рд░реНрдХ рд╕реНрдЯреИрдХ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХрд╛ рдПрдХ рд╕реЗрдЯ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЗ рдПрдХ рд╕реЗрдЯ рдХреЛ рдПрдХ рдЗрдХрд╛рдИ рдореЗрдВ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рдЕрдзрд┐рдХ рдмрд╛рд░ рдирд╣реАрдВ, рдЖрд╡реЗрджрди рдХреЗ рд╕рд╛рде рдПрдХ рдХрдВрдЯреЗрдирд░ рдПрдХ рдЕрд▓рдЧ рдкреЙрдб рдХреЗ рдЕрдВрджрд░ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рдЖрдк рдПрдХ рдкреЙрдб рдХреЗ рдЕрдВрджрд░ рдХрдИ рдХрдВрдЯреЗрдирд░ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣ рддрдм рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬрдм рдЖрдкрдХреЛ рд▓реЛрдХрд▓рд╣реЛрд╕реНрдЯ рдиреЗрдЯрд╡рд░реНрдХ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рдХрдВрдЯреЗрдирд░ рд╕реЗ рджреВрд╕рд░реЗ рдореЗрдВ рдкрд╣реБрдВрдЪ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдХрд╛рд░рдг рд╕реЗ рдПрдХ рд╣реА рдореЗрдЬрдмрд╛рди рдкрд░ рдХрдИ рдХрдВрдЯреЗрдирд░ рдЪрд▓рд╛рддреЗ рд╣реИрдВред
рдПрдХ рд╣реА рдкреЙрдб рдореЗрдВ рдЪрд▓рдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рдХрдВрдЯреЗрдирд░реЛрдВ рдореЗрдВ рдПрдХ рд╣реЛрд╕реНрдЯрдирд╛рдо, рдЖрдИрдкреА рдПрдбреНрд░реЗрд╕, рд░рд╛рдЙрдЯрд┐рдВрдЧ рдЯреЗрдмрд▓ рдФрд░ рдбрд┐рд╕реНрдХ рд╣реЛрдВрдЧреЗред
рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдХреЗ рдЕрдВрджрд░ рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдмрдврд╝рд╛рддреЗ рд╕рдордп, рдкреЙрдбреНрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ рдмрдврд╝рд╛рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рди рдХрд┐ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреЙрдб рдореЗрдВ рдХрдВрдЯреЗрдирд░реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ред
рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬ рдореЗрдВ рдФрд░ рдЕрдзрд┐рдХ рдкрдврд╝реЗрдВ рдлрд▓рд┐рдпрд╛рдБ ред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдЗрдП рдпрдорд▓ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд╡рд░реНрдгрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП Nginx рдХреЗ рд╕рд╛рде рд╕рдмрд╕реЗ рд╕рд░рд▓ рдкреЙрдб рдмрдирд╛рдПрдВ:
рдПрдХ рдкреЙрдб рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдХреБрдмреНрд▓реЗрдЯ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рд╣рдордиреЗ рд▓реЗрдЦ рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рд╕рднреА рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рд╣рдорд╛рд░реЗ рдЧрд┐рддреВрдм рд╕рдореВрд╣ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдк рдЕрдкрдиреЗ рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рдлрд╛рдЗрд▓реЗрдВ рдирд╣реАрдВ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╕реЗ рдлрд╝рд╛рдЗрд▓ рдпреВрдЖрд░рдПрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:
$ kubectl create \ -f https://raw.githubusercontent.com/selectel/kubernetes-examples/master/pods/nginx-basic.yaml
рдирд┐рд░реНрдорд╛рдг рдХреЗ рдмрд╛рдж, рд╣рдо kubectl рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрд╢рди рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдлрд▓реА рдХреА рд╕реНрдерд┐рддрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкреВрд░реА рдЬрд╛рдирдХрд╛рд░реА рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
$ kubectl describe pod nginx Name: nginx Namespace: default Node: test-cluster-nd5c5y6lsfxb-minion-0/10.0.0.5 Start Time: Sun, 17 Jun 2018 12:29:03 +0000 Labels: <none> Annotations: <none> Status: Running IP: 10.100.88.9 Containers: nginx: Container ID: docker://6ca6383b66686c05c61c1f690737110e0f8994eda393f44a7ebfbbf2b2026267 Image: library/nginx:1.14-alpine Image ID: docker-pullable://docker.io/nginx@sha256:944b79ca7dbe456ce72e73e70816c1990e39967c8f010349a388c00b77ec519c Port: 80/TCP Host Port: 0/TCP State: Running Started: Sun, 17 Jun 2018 12:29:16 +0000 Ready: True Restart Count: 0 Environment: <none> Mounts: /var/run/secrets/kubernetes.io/serviceaccount from default-token-rp5ls (ro) Conditions: Type Status Initialized True Ready True PodScheduled True Volumes: default-token-rp5ls: Type: Secret (a volume populated by a Secret) SecretName: default-token-rp5ls Optional: false QoS Class: BestEffort Node-Selectors: <none> Tolerations: <none> Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal Scheduled 52s default-scheduler Successfully assigned nginx to test-cluster-nd5c5y6lsfxb-minion-0 Normal SuccessfulMountVolume 51s kubelet, test-cluster-nd5c5y6lsfxb-minion-0 MountVolume.SetUp succeeded for volume "default-token-rp5ls" Normal Pulling 50s kubelet, test-cluster-nd5c5y6lsfxb-minion-0 pulling image "library/nginx:1.14-alpine" Normal Pulled 39s kubelet, test-cluster-nd5c5y6lsfxb-minion-0 Successfully pulled image "library/nginx:1.14-alpine" Normal Created 39s kubelet, test-cluster-nd5c5y6lsfxb-minion-0 Created container Normal Started 39s kubelet, test-cluster-nd5c5y6lsfxb-minion-0 Started container
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдкреЙрдб рдиреЗ рдЯреЗрд╕реНрдЯ-рдХреНрд▓рд╕реНрдЯрд░- nd5c5y6lsfxb-minion-0 рдирд╛рдо рдХреЗ рдиреЛрдб рдкрд░ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдФрд░ 10.100.88.9 рдХрд╛ рдЖрдВрддрд░рд┐рдХ рдЖрдИрдкреА рдкрддрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ред
рдИрд╡реЗрдВрдЯ рдЕрдиреБрднрд╛рдЧ рд╕реЗ рдЖрдк рдореБрдЦреНрдп рд▓реЙрдиреНрдЪ рдИрд╡реЗрдВрдЯ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ - рдЫрд╡рд┐ рдХреЛ рд▓реЙрдиреНрдЪ рдФрд░ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдиреЛрдб рдХрд╛ рдЪрдпрди рдХрд░рдирд╛ред
рд╣рдо рдкреЙрдб рдореЗрдВ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдХрдВрдЯреЗрдирд░ рдХреЗ рдЕрдВрджрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреА рд╕реНрдерд┐рддрд┐ рдХреА рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
$ kubectl exec -it nginx sh ps aux PID USER TIME COMMAND 1 root 0:00 nginx: master process nginx -g daemon off; 7 nginx 0:00 nginx: worker process 20 root 0:00 sh 24 root 0:00 ps aux exit
рдпрд╣ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдЖрдИрдкреА рдкрддреЗ 10.100.88.9 рдХреБрдмреЗрд░рдиреЗрдЯ рдХреНрд▓рд╕реНрдЯрд░ рдХреЗ рдЕрдВрджрд░ рдФрд░ рдмрд╛рд╣рд░ рдЕрдиреНрдп рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реЛрдЧрд╛, рдЪрд▓ рд░рд╣реЗ рдиреЗрдЧреНрдиреЗрдХреНрд╕ рддрдХ рдкрд╣реБрдВрдЪ рдХреЗрд╡рд▓ рдкреЙрдб рдХреЗ рднреАрддрд░ рд╕реЗ рд╣реА рд╕рдВрднрд╡ рд╣реЛрдЧреА:
$ ping -c 1 10.100.88.9 PING 10.100.88.9 (10.100.88.9): 56 data bytes --- 10.100.88.9 ping statistics --- 1 packets transmitted, 0 packets received, 100% packet loss $ kubectl exec nginx -- ping -c1 10.100.88.9 PING 10.100.88.9 (10.100.88.9): 56 data bytes 64 bytes from 10.100.88.9: seq=0 ttl=64 time=0.075 ms --- 10.100.88.9 ping statistics --- 1 packets transmitted, 1 packets received, 0% packet loss round-trip min/avg/max = 0.075/0.075/0.075 ms
рдЗрд╕ рддрдереНрдп рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХрд┐ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЖрдИрдкреА рдкрддрд╛ рдХреЗрд╡рд▓ рдХрдВрдЯреЗрдирд░ рд╕реЗ рд╕реБрд▓рдн рд╣реИ, рдпрд╣ рднреА рд╕реНрдерд╛рдпреА рдирд╣реАрдВ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдпрджрд┐ рдЗрд╕ рдкреЙрдб рдХреЛ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдпрд╣ рдПрдХ рдЕрд▓рдЧ рдЖрдИрдкреА рдкрддрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рдЗрди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рд╕реЗрд╡рд╛ рдирд╛рдордХ рдПрдХ рд╡рд╕реНрддреБ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рд╕реЗрд╡рд╛рдПрдВ
рд╕реЗрд╡рд╛ рдЖрдкрдХреЛ рдкреЙрдбреНрд╕ рдХреЗ рд▓рд┐рдП рд╕реНрдерд╛рдпреА рдЖрдИрдкреА рдкрддреЗ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИ, рдЙрдиреНрд╣реЗрдВ рдмрд╛рд╣рд░реА рдиреЗрдЯрд╡рд░реНрдХ рд╕реЗ рдкрд╣реБрдВрдЪ рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИ рдФрд░ рдкреЙрдбреНрд╕ рдХреЗ рдмреАрдЪ рд╕рдВрддреБрд▓рди рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рддреА рд╣реИред
рдЖрдк рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬ рдореЗрдВ рд╕реЗрд╡рд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рди рд╕рдХрддреЗ рд╣реИрдВред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдЪрд▓ рд░рд╣реЗ рдкреЙрдб рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
$ kubectl delete pod nginx
рдкреЙрдб рдПрдХ рд▓реЗрдмрд▓ (рд▓реЗрдмрд▓) рдХреЗ рд╡рд┐рд╡рд░рдг рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ, рдЬреЛ рд╕реЗрд╡рд╛ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИ:
рд╣рдореЗрдВ рд╕реЗрд╡рд╛ рдХреЗ рд╡рд┐рд╡рд░рдг рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА:
рдлрд▓реА рдФрд░ рд╕реЗрд╡рд╛ рдмрдирд╛рдПрдБ:
$ kubectl create \ -f https://raw.githubusercontent.com/selectel/kubernetes-examples/master/pods/nginx-labeled.yaml \ -f https://raw.githubusercontent.com/selectel/kubernetes-examples/master/services/nginx-nodeport.yaml
рдЪреВрдВрдХрд┐ рдирд┐рд░реНрдорд┐рдд рд╕реЗрд╡рд╛ NodePort рдкреНрд░рдХрд╛рд░ рдХреА рд╣реИ, рддреЛ рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рд╕рднреА рдиреЗрдЯрд╡рд░реНрдХ рдЗрдВрдЯрд░рдлреЗрд╕ рдкрд░ рдЗрдВрдЧрд┐рдд 30001 рдкреЛрд░реНрдЯ рдХреНрд▓рд╕реНрдЯрд░ рдХреЗ рд╕рднреА рдиреЛрдбреНрд╕ рдкрд░ рдЦреЛрд▓реЗ рдЬрд╛рдПрдВрдЧреЗред
рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдпрджрд┐ рд╣рдо рдХрд┐рд╕реА рдиреЛрдб рдореЗрдВ рдПрдХ рдмрд╛рд╣рд░реА рдЖрдИрдкреА рдкрддрд╛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдПрдХ рдмрд╛рд╣рд░реА рдиреЗрдЯрд╡рд░реНрдХ рд╕реЗ рдирдЧреНрдиреЗрдХреНрд╕ рдХреЗ рд╕рд╛рде рдЪрд▓ рд░рд╣реЗ рдкреЙрдб рддрдХ рдкрд╣реБрдВрдЪ рд╕рдХрддреЗ рд╣реИрдВред
рд╕реЗрд╡рд╛ рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд▓рд╕реНрдЯрд░ рдиреЛрдбреНрд╕ рдХреЗ рдмрд╛рд╣рд░реА рдкрддреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо NbPort рдХреЗ рдмрдЬрд╛рдп LoadBalancer рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рд╣рдореЗрдВ рд╕реЗрд╡рд╛ рдХреЗ рдирдП рд╡рд┐рд╡рд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА:
рд╡рд░реНрддрдорд╛рди рд╕реЗрд╡рд╛ рд╣рдЯрд╛рдПрдВ рдФрд░ рдирдпрд╛ рд╡рд┐рд╡рд░рдг рд▓рд╛рдЧреВ рдХрд░реЗрдВ:
$ kubectl delete service nginx-service $ kubectl create \ -f https://raw.githubusercontent.com/selectel/kubernetes-examples/master/services/nginx-loadbalancer.yaml
рд╕реЗрд╡рд╛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдирдЧреАрдирдХреНрд╕ рдмрд╛рд╣рд░реА рдиреЗрдЯрд╡рд░реНрдХ рд╕реЗ рдЯреАрд╕реАрдкреА рдкреЛрд░реНрдЯ 80 рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реЛрдЧрд╛, рдФрд░ рдХреНрд▓рд╕реНрдЯрд░ рдиреЛрдбреНрд╕ рдХреЗ рд▓рд┐рдП рдмрд╛рд╣рд░реА рдкрддреЗ рдХреЛ рдЕрд╕рд╛рдЗрди рдХрд░рдиреЗ рдФрд░ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдЧреАред рдкреНрд░рдХрд╛рд░ рдХреА рд╕реЗрд╡рд╛ LoadBalancer рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЖрдкрдХреЗ VPC рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рдмрд╛рд╣рд░реА рдкрддрд╛ рдЖрд╡рдВрдЯрд┐рдд рдХрд░реЗрдЧрд╛ рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрдЧрд╛ред
рдЖрдк kubectl рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд┐рдП рдЧрдП рдмрд╛рд╣рд░реА рдкрддреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
$ kubectl get service nginx-service -o=custom-columns=IP:status.loadBalancer.ingress[0].ip IP xxx.xxx.xxx.xxx
рд╣рдорд╛рд░реЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ, рдХреЗрд╡рд▓ рдПрдХ рдкреЙрдб рдХреЛ рдирдЧрдиреЗрдХреНрд╕ рдХреЗ рд╕рд╛рде рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЕрдзрд┐рдХ рдкреЙрдбреНрд╕ рдХреЗ рд▓рд┐рдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд╕реНрдХреЗрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рддреИрдирд╛рддреА
рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдХреБрдмреЗрд░рдиреЗрдЯ рдХреНрд▓рд╕реНрдЯрд░ рдХрд╛ рд╕рд╛рд░ рд╣реИ, рдЬреЛ рдЖрдкрдХреЛ рдкреЙрдб рдХреЛ рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рдмрдирд╛рдиреЗ рдФрд░ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдкреЙрдбреНрд╕ рдХреЗ рд▓рд┐рдП рдЖрд╕рд╛рдиреА рд╕реЗ рдЕрдкрдбреЗрдЯ рдпрд╛ рд░реЛрд▓ рдмреИрдХ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдХреЗ рдмрдЬрд╛рдп, рдЖрдк рд░реЗрдкреНрд▓рд┐рдХрд╛рд╕реЗрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╣рдо рдЕрдкрдиреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ рдЗрд╕ рдкрд░ рд╕реНрдкрд░реНрд╢ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗред
рдЖрдк рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬ рдореЗрдВ рддреИрдирд╛рддреА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рди рд╕рдХрддреЗ рд╣реИрдВред
рд╣рдореЗрдВ рдлрд┐рд░ рд╕реЗ рдкреЛрдб рдирд┐рдХрд╛рд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА (рд╣рдореЗрдВ рд╕реЗрд╡рд╛ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ):
$ kubectl delete pod nginx
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд░рд┐рдирд┐рдпреЛрдЬрди рд╡рд┐рд╡рд░рдг рдЬреЛрдбрд╝реЗрдВ:
рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдмрдирд╛рдПрдБ:
$ kubectl create -f \ https://raw.githubusercontent.com/selectel/kubernetes-examples/master/deployments/nginx-1.14.yaml
рд╣рдордиреЗ рдкреНрд░рддрд┐рдХреГрддрд┐рдпрд╛рдВ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд▓рд┐рдП 10 рдХреЛ рдЪреБрдирд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдирдЧреАрдирдХреНрд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╕рд╛рде 10 рдкреЙрдбреНрд╕ рд╣рдорд╛рд░реЗ рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рдмрдирд╛рдП рдЬрд╛рдПрдВрдЧреЗ:
$ kubectl get pods --selector app=webservice NAME READY STATUS RESTARTS AGE nginx-deployment-54bfdc4489-42rrb 1/1 Running 0 4m nginx-deployment-54bfdc4489-5lvtc 1/1 Running 0 4m nginx-deployment-54bfdc4489-g7rk2 1/1 Running 0 4m nginx-deployment-54bfdc4489-h5rxp 1/1 Running 0 4m nginx-deployment-54bfdc4489-l9l2d 1/1 Running 0 4m nginx-deployment-54bfdc4489-pjpvg 1/1 Running 0 4m nginx-deployment-54bfdc4489-q8dnp 1/1 Running 0 4m nginx-deployment-54bfdc4489-s4wzf 1/1 Running 0 4m nginx-deployment-54bfdc4489-tfxf9 1/1 Running 0 4m nginx-deployment-54bfdc4489-xjzb5 1/1 Running 0 4m
рдЖрдк рдкрд┐рдЫрд▓реЗ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рдмрдирд╛рдИ рдЧрдИ рд╕реЗрд╡рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрд╛рд╣рд░реА рдиреЗрдЯрд╡рд░реНрдХ рд╕реЗ рдЪрд▓ рд░рд╣реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рддрдХ рдкрд╣реБрдВрдЪ рд╕рдХрддреЗ рд╣реИрдВред 10 Nginx рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рдмреАрдЪ рд╕реЗрд╡рд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдмрд╛рд╣рд░реА рдиреЗрдЯрд╡рд░реНрдХ рд╕реЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рд╕рдВрддреБрд▓рд┐рдд рдХрд░реЗрдЧреАред
рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рд╣рдо Nginx рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЫрд╡рд┐ рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ 1.14-рдЕрд▓реНрдкрд╛рдЗрди рд╕реЗ 1.15-рдЕрд▓реНрдкрд╛рдЗрди рдореЗрдВ рдмрджрд▓рдХрд░ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рд╡рд┐рд╡рд░рдг рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ:
рдкреЙрдбреНрд╕ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо kubectl рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рддрд░реНрдХ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ - рдПрдХреЙрд░реНрдб, рдпрд╣ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реИ Nginx рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдмрд╛рдж рдХреЗ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд░реЛрд▓рдмреИрдХ рдХреЗ рд▓рд┐рдП:
$ kubectl apply -f \ https://raw.githubusercontent.com/selectel/kubernetes-examples/master/deployments/nginx-1.15.yaml \ --record
рдЖрдк рдирд┐рдореНрди рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрджреНрдпрддрди рдХреА рдкреНрд░рдЧрддрд┐ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
$ kubectl rollout status deployment nginx-deployment Waiting for rollout to finish: 4 out of 10 new replicas have been updated...
рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдПрдХ рдкреЙрдб рдХреЗ рд╕рдлрд▓ рдЕрджреНрдпрддрди рдХреЗ рдмрд╛рдж 10 рд╕реЗрдХрдВрдб рдЗрдВрддрдЬрд╛рд░ рдХрд░реЗрдВрдЧреЗ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдордиреЗ рддреИрдирд╛рддреА рд╡рд┐рд╡рд░рдг рдореЗрдВ minReadySeconds рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд▓рд┐рдП 10 рдХрд╛ рдорд╛рди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдерд╛ред
рдЕрджреНрдпрддрди рдкреВрд░реНрдг рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рд╕рднреА рдкреЙрдбреНрд╕ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рд╕рдХреНрд░рд┐рдп рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЬрд╛рдПрдВрдЧреЗ:
$ kubectl get deployment --selector app=webservice NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE nginx-deployment 10 10 10 10 23m
рдЕрдЧрд░ рдХреБрдЫ рдЧрд▓рдд рд╣реБрдЖ рддреЛ рд╣рдо рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рд╡рд╛рдкрд╕ рд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рд╡рд╛рдВрдЫрд┐рдд рдкрд░рд┐рдирд┐рдпреЛрдЬрди рд╕рдВрд╢реЛрдзрди рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
$ kubectl rollout history deployment nginx-deployment deployments "nginx-deployment" REVISION CHANGE-CAUSE 1 <none> 2 kubectl apply --filename=https://raw.githubusercontent.com/selectel/kubernetes-examples/master/deployments/nginx-1.15.yaml --record=true
рдХрдорд╛рдВрдб рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ 2 рд╕рдВрд╢реЛрдзрди рд╣реИрдВ - рдкрд╣рд▓рд╛ рддреИрдирд╛рддреА рдХрд╛ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдирд┐рд░реНрдорд╛рдг рд╣реИ, рджреВрд╕рд░рд╛ рдПрдХ рдЕрдкрдбреЗрдЯ рд╣реИред рдЪреВрдВрдХрд┐ рд╣рдордиреЗ рдЕрдкрдбреЗрдЯ рдХрд░рддреЗ рд╕рдордп --record рддрд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЙрд╕ рдЖрджреЗрд╢ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдиреЗ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдХрд╛ рджреВрд╕рд░рд╛ рд╕рдВрд╢реЛрдзрди рдмрдирд╛рдпрд╛ рдерд╛ред
рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рд╡рд╛рдкрд╕ рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:
$ kubectl rollout undo deployment nginx-deployment --to-revision=1
рдЗрд╕реА рддрд░рд╣, рдЕрдкрдбреЗрдЯ рдХреЗ рд╕рд╛рде, рд╣рдо рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд░реЛрд▓рдмреИрдХ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
$ kubectl rollout status deployment nginx-deployment Waiting for rollout to finish: 6 out of 10 new replicas have been updatedтАж
рд╣рдорд╛рд░реЗ рд╕рднреА рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ, рд╣рдордиреЗ рд▓рдЧрд╛рддрд╛рд░ рдбреЗрдЯрд╛ рд╕реНрдЯреЛрд░ рдХреЗ рдмрд┐рдирд╛ рдХрдВрдЯреЗрдирд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред рдЕрдЧрд▓реЗ рднрд╛рдЧ рдореЗрдВ рд╣рдо рдЗрд╕реЗ рдареАрдХ рдХрд░реЗрдВрдЧреЗред
рдбреЗрдЯрд╛ рднрдВрдбрд╛рд░рдг
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдкреЙрдбреНрд╕ рдХреЗ рдЕрдВрджрд░ рдЪрд▓рдиреЗ рд╡рд╛рд▓реЗ рдХрдВрдЯреЗрдирд░реЛрдВ рдХрд╛ рд╕рд╛рд░рд╛ рдбреЗрдЯрд╛ рдЕрд▓реНрдкрдХрд╛рд▓рд┐рдХ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдкреЙрдбреНрд╕ рдХреЗ рджреБрд░реНрдШрдЯрдирд╛рдЧреНрд░рд╕реНрдд рд╣реЛрдиреЗ рдкрд░ рдЦреЛ рдЬрд╛рдПрдЧрд╛ред
рдкреЙрдбреНрд╕ рдХреЛ рд▓рдЧрд╛рддрд╛рд░ рдбреЗрдЯрд╛ рд╡реЗрдпрд░рд╣рд╛рдЙрд╕ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк PersistentVolumeClaim рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреА рдПрдХ рд╡рд╕реНрддреБ рдмрдирд╛рдирд╛ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ - рдмрд╕ рдЗрд╕рдХрд╛ рд╡рд┐рд╡рд░рдг рдЬреЛрдбрд╝реЗрдВ, рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рд╣рдордиреЗ рдкрд┐рдЫрд▓реЗ рдЕрдиреБрднрд╛рдЧреЛрдВ рдореЗрдВ рдкреЙрдб, рд╕реЗрд╡рд╛ рдпрд╛ рддреИрдирд╛рддреА рдмрдирд╛рдИ рд╣реИред
рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬ рдореЗрдВ рдкрд╛рдИ рдЬрд╛ рд╕рдХрддреА рд╣реИред
10V рдбрд┐рд╕реНрдХ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП PersistentVolumeClaim рдХрд╛ рдЙрджрд╛рд╣рд░рдг рд╡рд┐рд╡рд░рдг:
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: my-pv-claim spec: accessModes: - ReadWriteOnce resources: requests: storage: 10Gi
рд╣рдо рдЗрд╕реЗ рдлрд▓реА рдХреЗ рдбрд┐рд╕реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдмрдирд╛рдП рдЧрдП рдирдЧреАрди рдХреЗ рд╕рд╛рде рдкреЙрдб рдХреЗ рд╡рд┐рд╡рд░рдг рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдХреЗ:
рд╣рд╛рд▓рд╛рдБрдХрд┐, рдбрд┐рд╕реНрдХ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ StorageClass рдХреЗ рд░реВрдк рдореЗрдВ рдмрдирд╛рдИ рдЧрдИ рдбрд┐рд╕реНрдХ рдХреЗ рдЧреБрдгреЛрдВ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред "рд╡рд░реНрдЪреБрдЕрд▓ рдкреНрд░рд╛рдЗрд╡реЗрдЯ рдХреНрд▓рд╛рдЙрдб" рд╕реЗрд╡рд╛ рдореЗрдВ, рдЖрдк рдХреБрдмреЗрд░рдиреЗрдЯ рдкреЙрдб рдбреЗрдЯрд╛ рдХреЗ рд╕реНрдерд╛рдпреА рднрдВрдбрд╛рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рддреЗрдЬ, рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рдФрд░ рдмреБрдирд┐рдпрд╛рджреА рдкреНрд░рдХрд╛рд░ рдХреЗ рдиреЗрдЯрд╡рд░реНрдХ рдбреНрд░рд╛рдЗрд╡ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, StorageClass рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЛ рдЖрдкрдХреЛ рд░реВ -1 рдмреА рдЙрдкрд▓рдмреНрдзрддрд╛ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рддреЗрдЬреА рд╕реЗ рдбрд┐рд╕реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЖрдкрдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЪреАрдЬреЗрдВ рдЪрд╛рд╣рд┐рдП:
рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдкрд╣рд▓реЗ рдмрдирд╛рдП рдЧрдП рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдХреЛ рд╣рдЯрд╛рдПрдВ:
$ kubectl delete deployment nginx-deployment
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдПрдХ StorageClass рдмрдирд╛рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╡рд░реНрдЧ рдмрди рдЬрд╛рдПрдЧрд╛, рдФрд░ PersistentVolumeClaim рдмрд╛рдж рдореЗрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛:
$ kubectl create -f \ https://raw.githubusercontent.com/selectel/kubernetes-examples/master/storageclasses/fast.ru-1b.yaml
PersistentVolumeClaim рдФрд░ Pod рдмрдирд╛рдПрдБ:
$ kubectl create \ -f https://raw.githubusercontent.com/selectel/kubernetes-examples/master/persistentvolumeclaims/my-pv-claim.yaml \ -f https://raw.githubusercontent.com/selectel/kubernetes-examples/master/pods/nginx-with-volume.yaml
рдЙрд╕рдХреЗ рдмрд╛рдж, рдЖрдкрдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдПрдХ рдбрд┐рд╕реНрдХ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдмрдирд╛рдИ рдЬрд╛рдПрдЧреА рдЬреЛ рдХреНрд▓рд╕реНрдЯрд░ рдХреЗ рдорд┐рдирд┐рдпрди рдиреЛрдбреНрд╕ рдореЗрдВ рд╕реЗ рдПрдХ рд╕реЗ рдЬреБрдбрд╝реА рд╣реЛрдЧреАред рдЬрдм рдпрд╣ рдЧрд┐рд░рддрд╛ рд╣реИ, рддреЛ рдбрд┐рд╕реНрдХ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рджреВрд╕рд░реЗ рдиреЛрдб рдкрд░ рд╕реНрд╡рд┐рдЪ рд╣реЛ рдЬрд╛рдПрдЧреАред
рд╣рдо Nginx рдХреЗ рд╕рд╛рде рдХрдВрдЯреЗрдирд░ рдХреЗ рдЕрдВрджрд░ рдбрд┐рд╕реНрдХ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ:
$ kubectl exec -it nginx sh mount | grep "/var/www/html" /dev/sdc on /var/www/html type ext4 (rw,seclabel,relatime,data=ordered) exit
рдЖрдк рдбреНрд░рд╛рдЗрд╡ рдХреЛ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рдПрдХ рд╕рдорд╛рди рдЙрджрд╛рд╣рд░рдг рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдХрдВрдЯреНрд░реЛрд▓ рдкреИрдирд▓
рдЖрдк рдХреНрд▓рд╕реНрдЯрд░ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдФрд░ рдЙрдирдХреЗ рдкреНрд░рдмрдВрдзрди рдХреА рд╕реНрдерд┐рддрд┐ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рдпрдВ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдХреЗ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдбреИрд╢рдмреЛрд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдкреИрдирд▓ рдХреА рд╕рднреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рднреВрдорд┐рдХрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рдЦрд╛рддрд╛ рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛ред
рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдПрдХ рдЦрд╛рддрд╛ рд╡рд┐рд╡рд░рдг рдЪрд╛рд╣рд┐рдП:
рдФрд░ рднреВрдорд┐рдХрд╛ рд╡рд┐рд╡рд░рдг:
рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдБ:
$ kubectl create \ -f https://raw.githubusercontent.com/selectel/kubernetes-examples/master/accounts/admin-user.yaml \ -f https://raw.githubusercontent.com/selectel/kubernetes-examples/master/clusterrolebindings/cluster-admin.yaml
рдЗрд╕рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рдЗрд╕ рдЦрд╛рддреЗ рдХреЗ рд▓рд┐рдП рдЬрдирд░реЗрдЯ рдХрд┐рдП рдЧрдП рдЯреЛрдХрди рдХреЗ рдореВрд▓реНрдп рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рд╣реЛрдЧрд╛ред
рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рд╕рдВрдмрдВрдзрд┐рдд рд╕реАрдХреНрд░реЗрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рдЦреЛрдЬреЗрдВ:
$ kubectl get secret --namespace=kube-system | grep "admin-user-token" admin-user-token-bkfhb kubernetes.io/service-account-token 3 22m
рдФрд░ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ-рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рдЯреЛрдХрди-bkfhb рдирд╛рдо рдХреЗ рд╕рд╛рде рдЧреБрдкреНрдд рдХреЗ рдЯреЛрдХрди рдореВрд▓реНрдп рдХреЛ рджреЗрдЦреЗрдВ:
$ kubectl describe secret admin-user-token-bkfhb --namespace=kube-system | grep "token:" token: XXXXXX...
рдЬрд╡рд╛рдм рдореЗрдВ, рдЖрдкрдХреЛ рдЯреЛрдХрди рдХрд╛ рдореВрд▓реНрдп рдкреНрд░рд╛рдкреНрдд рд╣реЛрдЧрд╛, рдЗрд╕реЗ рд╕рд╣реЗрдЬреЗрдВ, рдпрд╣ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ред
рдХреБрдмреЗрд░рдиреЗрдЯ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд▓рд┐рдП рдЕрднрд┐рдЧрдо рдирд┐рдпрдВрддреНрд░рдг рдХреЗ рд╡рд┐рд╡рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬ рджреЗрдЦреЗрдВред
рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдХрд┐ рдЖрдкрдиреЗ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдЯреЗрдореНрдкрд▓реЗрдЯ рд╕реЗ рдПрдХ рдХреНрд▓рд╕реНрдЯрд░ рдмрдирд╛рдпрд╛ рд╣реИ, рдкреИрдирд▓ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреЛрдб рдФрд░ рд╕рд░реНрд╡рд┐рд╕ рдЗрд╕рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рдореМрдЬреВрдж рд╣реИрдВ:
$ kubectl get svc kubernetes-dashboard --namespace=kube-system 206ms Tue Jun 19 14:35:19 2018 NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes-dashboard ClusterIP 10.254.122.245 <none> 443/TCP 2d $ kubectl get pod --namespace=kube-system --selector k8s-app=kubernetes-dashboard 119ms Tue Jun 19 14:36:48 2018 NAME READY STATUS RESTARTS AGE kubernetes-dashboard-747575c864-jpxvt 1/1 Running 0 2d
рдЪреВрдВрдХрд┐ рд╕реЗрд╡рд╛ рдХреНрд▓рд╕реНрдЯрд░ рдкреНрд░рдХрд╛рд░ рдХреА рд╣реИ, рдпрд╣ рдХреЗрд╡рд▓ рдХреНрд▓рд╕реНрдЯрд░ рдХреЗ рднреАрддрд░ рд╕реЗ рд╣реА рдЙрдкрд▓рдмреНрдз рд╣реЛрдЧреАред
рдЖрдк рдЕрдкрдиреЗ рдХрд╛рд░реНрдпрд╢реАрд▓ рдХрдВрдкреНрдпреВрдЯрд░ рд╕реЗ рдкреИрдирд▓ рдХреЛ kubectl рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреНрд▓рд╕реНрдЯрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдПрдХреНрд╕реЗрд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
$ kubectl proxy Starting to serve on 127.0.0.1:8001
рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдкрддрд╛ рдЦреЛрд▓рдХрд░ рдкреНрд░реЙрдХреНрд╕реА рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░реЗрдВ:

рдпрджрд┐ рдЖрдкрдХреЛ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдХреЗ рд╕рдорд╛рди рдЙрддреНрддрд░ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ, рддреЛ рдЖрдк рдирд┐рдореНрди рдкрддреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрдВрдЯреНрд░реЛрд▓ рдкреИрдирд▓ рд╕реНрдХреНрд░реАрди рдкрд░ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ:
http://127.0.0.1:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/
рдЗрд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛рдиреЗ рдкрд░, рдЖрдкрдХреЛ рдкреИрдирд▓ рдореЗрдВ рд▓реЙрдЧрд┐рди рд╕реНрдХреНрд░реАрди рджреЗрдЦрдиреА рдЪрд╛рд╣рд┐рдП:

рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рдкреНрд░рд╛рдкреНрдд рдЯреЛрдХрди рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рд▓реЙрдЧ рдЗрди рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдк рдХрдВрдЯреНрд░реЛрд▓ рдкреИрдирд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

рдЖрдк рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬ рдореЗрдВ рдирд┐рдпрдВрддреНрд░рдг рдХрдХреНрд╖ рдХреА рд╕рднреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрддрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
Kubernetes рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░рдирд╛
рдпрджрд┐ рдЖрдк рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреНрд▓рд╕реНрдЯрд░ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдореИрдЯреНрд░рд┐рдХреНрд╕ - рдкреНрд░реЛрдореЗрдерд┐рдпрд╕ рдФрд░ рдЧреНрд░рд╛рдлрд╛рдирд╛ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдФрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдШрдЯрдХреЛрдВ рдХреЛ рдЪрд▓рд╛рдПрдВрдЧреЗред
рдХрдВрдЯреНрд░реЛрд▓ рдкреИрдирд▓ рдХреЗ рд╕рдорд╛рди, рдХреНрд▓рд╕реНрдЯрд░ рдкреНрд░рдХрд╛рд░ рд╕реЗрд╡рд╛ рдкреНрд░рдХрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕ рддрдХ рдкрд╣реБрдВрдЪ рдХреЗрд╡рд▓ рдХреНрд▓рд╕реНрдЯрд░ рдХреЗ рднреАрддрд░ рд╕реЗ рдпрд╛ рдХреБрдмреЗрдЯрд┐рдХ рдкреНрд░реЙрдХреНрд╕реА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдВрднрд╡ рд╣реИред рдЖрдк рдирд┐рдореНрди рдкрддреЗ рдкрд░ рдЕрдкрдиреЗ рдХрд╛рдо рдХреЗ рдХрдВрдкреНрдпреВрдЯрд░ рд╕реЗ рдЧреНрд░реЗрдлрд╛рдирд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
http://127.0.0.1:8001/api/v1/proxy/namespaces/kube-system/services/monitoring-grafana:80

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