рд▓рдЧрднрдЧред рдЯреНрд░рд╛рдВрд╕ред : рдореВрд▓ рд▓реЗрдЦ рдХреЗ рд▓реЗрдЦрдХ, рдирд┐рдХреЛрд▓рд╕ рд▓реАрд╡рд╛, рдПрдХ рд╕рд┐рд╕реНрдХреЛ рд╕рдорд╛рдзрд╛рди рд╡рд╛рд╕реНрддреБрдХрд╛рд░ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдЕрдкрдиреЗ рд╕рд╛рдерд┐рдпреЛрдВ, рдиреЗрдЯрд╡рд░реНрдХ рдЗрдВрдЬреАрдирд┐рдпрд░реЛрдВ рдХреЗ рд╕рд╛рде рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рдХрд┐ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдиреЗрдЯрд╡рд░реНрдХ рдХреИрд╕реЗ рдЕрдВрджрд░ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╡рд╣ рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рдЕрдкрдиреЗ рд╕рд░рд▓рддрдо рд╡рд┐рдиреНрдпрд╛рд╕ рдХреА рдЦреЛрдЬ рдХрд░рддрд╛ рд╣реИ, рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рдЬреНрдЮрд╛рди, рдиреЗрдЯрд╡рд░реНрдХ рдФрд░ рдорд╛рдирдХ рд▓рд┐рдирдХреНрд╕ / рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ рдХреЗ рдЕрдкрдиреЗ рдЬреНрдЮрд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рд╕реНрд╡реЗрдЪреНрдЫрд╛ рд╕реЗ рдирд┐рдХрд▓рд╛, рд▓реЗрдХрд┐рди рдмрд╣реБрдд рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗред
рдЗрд╕ рддрдереНрдп рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХрд┐ рдХреЗрд▓реНрд╕реА
рд╣рд╛рдИрдЯреЙрд╡рд░ рдХреЗ
рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдж рд╣рд╛рд░реНрдб рд╡реЗ рдЧрд╛рдЗрдб рд╕рд┐рд░реНрдл рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ (
рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдПрдбрдмреНрд▓реНрдпреВрдПрд╕ рдкрд░ рднреА! ), рдореБрдЭреЗ рдкрд╕рдВрдж рдЖрдпрд╛ рдХрд┐ рдиреЗрдЯрд╡рд░реНрдХ рдХреЛ рд╕рд╛рдл рдФрд░ рд╕рд░рд▓ рд░рдЦрд╛ рдЧрдпрд╛ рдерд╛; рдФрд░ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХрдВрдЯреЗрдирд░ рдиреЗрдЯрд╡рд░реНрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ (
CNI ) рдХреА рднреВрдорд┐рдХрд╛ рдХреЛ рд╕рдордЭрдиреЗ рдХрд╛ рдпрд╣ рдПрдХ рд╢рд╛рдирджрд╛рд░ рдЕрд╡рд╕рд░ рд╣реИред рдпрд╣ рдХрд╣рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВ рдХрд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдиреЗрдЯрд╡рд░реНрдХ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрд╣реБрдд рд╕рд╣рдЬ рдирд╣реАрдВ рд╣реИ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╢реБрд░реБрдЖрддреА рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП ... рдФрд░ рдпрд╣ рднреА рдордд рднреВрд▓рдирд╛ рдХрд┐ "рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЗ рд▓рд┐рдП рдиреЗрдЯрд╡рд░реНрдХ рдЬреИрд╕реА
рдХреЛрдИ рдЪреАрдЬ
рдирд╣реАрдВ рд╣реИ "ред
рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрдЪреНрдЫреА рд╕рд╛рдордЧреНрд░реА рд╣реИ (рд▓рд┐рдВрдХ
рдпрд╣рд╛рдВ рджреЗрдЦреЗрдВ), рдореБрдЭреЗ рдРрд╕рд╛ рдХреЛрдИ рдЙрджрд╛рд╣рд░рдг рдирд╣реАрдВ рдорд┐рд▓рд╛ рдХрд┐ рдореИрдВ рдЯреАрдо рдХреЗ рдирд┐рд╖реНрдХрд░реНрд╖реЛрдВ рдХреЗ рд╕рд╛рде рдЬрд░реВрд░реА рд╣рд░ рдЪреАрдЬ рдХреЛ рдЬреЛрдбрд╝ рджреВрдВ рдЬреЛ рдХрд┐ рдиреЗрдЯрд╡рд░реНрдХ рдЗрдВрдЬреАрдирд┐рдпрд░ рдкреНрдпрд╛рд░ рдФрд░ рдирдлрд░рдд рдХрд░рддреЗ рд╣реИрдВ, рдпрд╣ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ рд╣реБрдП рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкрд░реНрджреЗ рдХреЗ рдкреАрдЫреЗ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдореИрдВрдиреЗ рдХрдИ рд╕реНрд░реЛрддреЛрдВ рд╕реЗ рдЬрд╛рдирдХрд╛рд░реА рдПрдХрддреНрд░ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ - рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЗрд╕рд╕реЗ рдорджрдж рдорд┐рд▓реЗрдЧреА рдФрд░ рдЖрдк рдмреЗрд╣рддрд░ рдврдВрдЧ рд╕реЗ рд╕рдордЭ рдкрд╛рдПрдВрдЧреЗ рдХрд┐ рд╕рдм рдХреБрдЫ рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рдХреИрд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реИред рдпрд╣ рдЬреНрдЮрд╛рди рди рдХреЗрд╡рд▓ рд╕реНрд╡рдпрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдмрд▓реНрдХрд┐ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдирд┐рджрд╛рди рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рдЖрдк
рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдж рд╣рд╛рд░реНрдб рд╡реЗ рд╕реЗ рдЕрдкрдиреЗ рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: рд╕рднреА рдЖрдИрдкреА рдкрддреЗ рдФрд░ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд╡рд╣рд╛рдВ рд╕реЗ рд▓реА рдЧрдИ рд╣реИрдВ (рдордИ 2018 рдХреЗ рд▓рд┐рдП
рд╣рд┐рдЯреНрд╕ рдХреЗ рдЕрдиреБрд╕рд╛рд░ ,
рдирдмрд▓рд╛ рдХрдВрдЯреЗрдирд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ)ред
рдФрд░ рд╣рдо рдЕрдВрдд рд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВрдЧреЗ, рдЬрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рддреАрди рдирд┐рдпрдВрддреНрд░рдХ рдФрд░ рддреАрди рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдиреЛрдб рд╣реЛрдВрдЧреЗ:

рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣рд╛рдБ рдХрдо рд╕реЗ рдХрдо рддреАрди рдирд┐рдЬреА рд╕рдмрдиреЗрдЯ рднреА рд╣реИрдВ! рдереЛрдбрд╝рд╛ рдзреИрд░реНрдп, рдФрд░ рд╡реЗ рд╕рднреА рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рднрд▓реЗ рд╣реА рд╣рдо рдмрд╣реБрдд рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЖрдИрдкреА рдЙрдкрд╕рд░реНрдЧреЛрдВ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рддреЗ рд╣реИрдВ, рд╡реЗ рдмрд╕
рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдж рд╣рд╛рд░реНрдб рд╡реЗ рд╕реЗ рд▓рд┐рдП рдЧрдП рд╣реИрдВ , рдЗрд╕рд▓рд┐рдП рдЙрдирдХрд╛ рдХреЗрд╡рд▓ рд╕реНрдерд╛рдиреАрдп рдорд╣рддреНрд╡ рд╣реИ, рдФрд░ рдЖрдк
RFC 1918 рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЕрдкрдиреЗ рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЕрдиреНрдп рдкрддрд╛ рдмреНрд▓реЙрдХ рдЪреБрдирдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░ рд╣реИрдВред IPv6 рдХреЗ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рдЕрд▓рдЧ рдмреНрд▓реЙрдЧ рд▓реЗрдЦ рд╣реЛрдЧрд╛ред
рд╣реЛрд╕реНрдЯ рдиреЗрдЯрд╡рд░реНрдХ (10.240.0.0/24)
рдпрд╣ рдПрдХ рдЖрдВрддрд░рд┐рдХ рдиреЗрдЯрд╡рд░реНрдХ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╕рднреА рдиреЛрдбреНрд╕ рдПрдХ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИрдВред рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдЖрд╡рдВрдЯрд┐рдд рдХрд░рддреЗ рд╕рдордп
GCP рдореЗрдВ
--private-network-ip
рдзреНрд╡рдЬ рдФрд░
AWS рдореЗрдВ
--private-ip-address
рд╡рд┐рдХрд▓реНрдк рджреНрд╡рд╛рд░рд╛ рдкрд░рд┐рднрд╛рд╖рд┐рддред
рдЬреАрд╕реАрдкреА рдореЗрдВ рдирд┐рдпрдВрддреНрд░рдХ рдиреЛрдбреНрд╕ рдХреЛ рдкреНрд░рд╛рд░рдВрдн рдХрд░рдирд╛
for i in 0 1 2; do gcloud compute instances create controller-${i} \
(
controllers_gcp.sh
)
AWS рдореЗрдВ рдирд┐рдпрдВрддреНрд░рдХ рдиреЛрдбреНрд╕ рдХреА рд╢реБрд░реБрдЖрдд
for i in 0 1 2; do declare controller_id${i}=`aws ec2 run-instances \
(
controllers_aws.sh
)

рдкреНрд░рддреНрдпреЗрдХ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рджреЛ рдЖрдИрдкреА рдкрддреЗ рд╣реЛрдВрдЧреЗ: рд╣реЛрд╕реНрдЯ рдиреЗрдЯрд╡рд░реНрдХ рд╕реЗ рдирд┐рдЬреА (рдирд┐рдпрдВрддреНрд░рдХ -
10.240.0.1${i}/24
, рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ -
10.240.0.2${i}/24
) рдФрд░ рдПрдХ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдПрдХ, рдЬрд┐рд╕реЗ рдХреНрд▓рд╛рдЙрдб рдкреНрд░рджрд╛рддрд╛ рджреНрд╡рд╛рд░рд╛ рдирд┐рдпреБрдХреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣рдо рдмрд╛рдж рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗред
NodePorts
рдХреЛ рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред
рдЬреАрд╕реАрдкреА
$ gcloud compute instances list NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS controller-0 us-west1-c n1-standard-1 10.240.0.10 35.231.XXX.XXX RUNNING worker-1 us-west1-c n1-standard-1 10.240.0.21 35.231.XX.XXX RUNNING ...
рдПрдбрдмреНрд▓реНрдпреВрдПрд╕
$ aws ec2 describe-instances --query 'Reservations[].Instances[].[Tags[?Key==`Name`].Value[],PrivateIpAddress,PublicIpAddress]' --output text | sed '$!N;s/\n/ /' 10.240.0.10 34.228.XX.XXX controller-0 10.240.0.21 34.173.XXX.XX worker-1 ...
рдпрджрд┐
рд╕реБрд░рдХреНрд╖рд╛ рдиреАрддрд┐рдпрд╛рдВ рд╕рд╣реА рд╣реИрдВ (рдФрд░ рдпрджрд┐
ping
рд╣реЛрд╕реНрдЯ рдкрд░ рд╕реНрдерд╛рдкрд┐рдд рд╣реИ) рддреЛ рд╕рднреА рдиреЛрдбреНрд╕ рдПрдХ рджреВрд╕рд░реЗ рдХреЛ рдкрд┐рдВрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдВрдЧреЗред
рдЪреВрд▓реНрд╣рд╛ рдиреЗрдЯрд╡рд░реНрдХ (10.200.0.0/16)
рдпрд╣ рд╡рд╣ рдиреЗрдЯрд╡рд░реНрдХ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдкреЙрдб рд░рд╣рддреЗ рд╣реИрдВред рдкреНрд░рддреНрдпреЗрдХ рдХрд╛рд░реНрдп рдиреЛрдб рдЗрд╕ рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рдПрдХ рд╕рдмрдиреЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ,
POD_CIDR=10.200.${i}.0/24
worker-${i}
ред

рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд╕рдм рдХреБрдЫ рдХреИрд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдПрдХ рдХрджрдо рдкреАрдЫреЗ рд▓реЗ рдЬрд╛рдПрдВ рдФрд░
рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдиреЗрдЯрд╡рд░реНрдХ рдореЙрдбрд▓ рдХреЛ рджреЗрдЦреЗрдВ , рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
- рд╕рднреА рдХрдВрдЯреЗрдирд░ NAT рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ рдХрд┐рд╕реА рднреА рдЕрдиреНрдп рдХрдВрдЯреЗрдирд░ рдХреЗ рд╕рд╛рде рд╕рдВрд╡рд╛рдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
- рд╕рднреА рдиреЛрдбреНрд╕ NAT рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ рд╕рднреА рдХрдВрдЯреЗрдирд░реЛрдВ (рдФрд░ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд) рдХреЗ рд╕рд╛рде рд╕рдВрд╡рд╛рдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
- рдЖрдИрдкреА тАЛтАЛрдЬреЛ рдХрдВрдЯреЗрдирд░ рджреЗрдЦрддрд╛ рд╣реИ рд╡рд╣ рд╡реИрд╕рд╛ рд╣реА рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреИрд╕рд╛ рдХрд┐ рдЕрдиреНрдп рд▓реЛрдЧ рджреЗрдЦрддреЗ рд╣реИрдВред
рдпрд╣ рд╕рдм рдХрдИ рддрд░реАрдХреЛрдВ рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдиреЗрдЯрд╡рд░реНрдХ рд╕реЗрдЯрдЕрдк рдХреЛ
рд╕реАрдПрдирдЖрдИ рдкреНрд▓рдЧрдЗрди рдореЗрдВ рдкрд╛рд╕ рдХрд░рддрд╛ рд╣реИ ред
"CNI рдкреНрд▓рдЧрдЗрди рдХрдВрдЯреЗрдирд░ рдХреЗ рдиреЗрдЯрд╡рд░реНрдХ рдиреЗрдорд╕реНрдкреЗрд╕ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╡реАрде рдкреЗрдпрд░ рдХрд╛ рдПрдХ рд╕рд┐рд░рд╛) рдХреЗ рд▓рд┐рдП рдПрдХ рдиреЗрдЯрд╡рд░реНрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдЬреЛрдбрд╝рдиреЗ рдФрд░ рд╣реЛрд╕реНрдЯ рдкрд░ рдЖрд╡рд╢реНрдпрдХ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╡реАрде рдХреЗ рджреВрд╕рд░реЗ рдЫреЛрд░ рдХреЛ рдПрдХ рдкреБрд▓ рд╕реЗ рдЬреЛрдбрд╝рдирд╛)ред рдлрд┐рд░ рдЙрд╕реЗ рдПрдХ рдЖрдИрдкреА рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдЕрд╕рд╛рдЗрди рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рд╡рд╛рдВрдЫрд┐рдд рдЖрдИрдкреАрдПрдПрдо рдкреНрд▓рдЧрдЗрди рдХреЛ рдХреЙрд▓ рдХрд░рдХреЗ рдЖрдИрдкреА рдПрдбреНрд░реЗрд╕ рдореИрдиреЗрдЬрдореЗрдВрдЯ рд╕реЗрдХреНрд╢рди рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдорд╛рд░реНрдЧреЛрдВ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред " ( рдХрдВрдЯреЗрдирд░ рдиреЗрдЯрд╡рд░реНрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рд╕реЗ )

рдиреЗрдЯрд╡рд░реНрдХ рдирд╛рдорд╕реНрдерд╛рди
тАЬрдирд╛рдо рд╕реНрдерд╛рди рд╡реИрд╢реНрд╡рд┐рдХ рд╕рд┐рд╕реНрдЯрдо рд╕рдВрд╕рд╛рдзрди рдХреЛ рдПрдХ рдЕрдореВрд░реНрдд рдореЗрдВ рд▓рдкреЗрдЯрддрд╛ рд╣реИ рдЬреЛ рдЗрд╕ рдирд╛рдорд╕реНрдерд╛рди рдореЗрдВ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЗрд╕ рддрд░рд╣ рд╕реЗ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ рдХрд┐ рдЙрдирдХреЗ рдкрд╛рд╕ рд╡реИрд╢реНрд╡рд┐рдХ рд╕рдВрд╕рд╛рдзрди рдХрд╛ рдЕрдкрдирд╛ рдкреГрдердХ рдЙрджрд╛рд╣рд░рдг рд╣реИред рдЗрд╕ рдирд╛рдо рд╕реНрдерд╛рди рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдЕрдиреНрдп рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╡реИрд╢реНрд╡рд┐рдХ рд╕рдВрд╕рд╛рдзрди рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рджрд┐рдЦрд╛рдИ рджреЗ рд░рд╣реЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЕрдиреНрдп рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рджреГрд╢реНрдпрдорд╛рди рдирд╣реАрдВ рд╣реИрдВред " ( рдирд╛рдо рд╕реНрдерд╛рди рдкреГрд╖реНрда рд╕реЗ )
рд▓рд┐рдирдХреНрд╕ рд╕рд╛рдд рдЕрд▓рдЧ-рдЕрд▓рдЧ рдирд╛рдорд╕реНрдерд╛рди (
Cgroup
,
IPC
,
Network
,
Mount
,
PID
,
User
,
UTS
) рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдиреЗрдЯрд╡рд░реНрдХ рдиреЗрдорд╕реНрдкреЗрд╕ (
CLONE_NEWNET
) рдиреЗрдЯрд╡рд░реНрдХ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рд╕реБрд▓рдн рд╣реИрдВ: "рдкреНрд░рддреНрдпреЗрдХ рдиреЗрдЯрд╡рд░реНрдХ рдиреЗрдорд╕реНрдкреЗрд╕ рдХреЗ рдкрд╛рд╕ рдЕрдкрдиреЗ рдиреЗрдЯрд╡рд░реНрдХ рдбрд┐рд╡рд╛рдЗрд╕, рдЖрдИрдкреА рдкрддреЗ, рдЖрдИрдкреА рд░реВрдЯрд┐рдВрдЧ рдЯреЗрдмрд▓,
/proc/net
рдбрд╛рдЗрд░реЗрдХреНрдЯрд░реА, рдкреЛрд░реНрдЯ рдирдВрдмрд░ рдЗрддреНрдпрд╛рджрд┐ рд╣реЛрддреЗ рд╣реИрдВ"
( рд▓реЗрдЦ " рдСрдкрд░реЗрд╢рди рдореЗрдВ рдирд╛рдорд╕реНрдерд╛рди ") рд╕реЗ ред
рд╡рд░реНрдЪреБрдЕрд▓ рдИрдерд░рдиреЗрдЯ рдбрд┐рд╡рд╛рдЗрд╕ (Veth)
"рдПрдХ рд╡рд░реНрдЪреБрдЕрд▓ рдиреЗрдЯрд╡рд░реНрдХ рдкреЗрдпрд░ (рд╡реЗрде) рдПрдХ" рдкрд╛рдЗрдк "рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдЕрдореВрд░реНрддрддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдиреЗрдЯрд╡рд░реНрдХ рдиреЗрдорд╕реНрдкреЗрд╕ рдХреЗ рдмреАрдЪ рд╕реБрд░рдВрдЧ рдмрдирд╛рдиреЗ рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдиреЗрдЯрд╡рд░реНрдХ рд╕реНрдкреЗрд╕ рдореЗрдВ рдПрдХ рднреМрддрд┐рдХ рдиреЗрдЯрд╡рд░реНрдХ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреБрд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЬрдм рдирд╛рдо рд╕реНрдерд╛рди рдХреЛ рдореБрдХреНрдд рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЗрд╕рдореЗрдВ рд╕рднреА рд╡реАрде рдбрд┐рд╡рд╛рдЗрд╕ рдирд╖реНрдЯ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред " ( рдиреЗрдЯрд╡рд░реНрдХ рдирд╛рдорд╕реНрдерд╛рди рдореИрди рдкреЗрдЬ рд╕реЗ )
рдиреАрдЪреЗ рдЬрдореАрди рдкрд░ рдЬрд╛рдПрдВ рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ рдпрд╣ рд╕рдм рдХреНрд▓рд╕реНрдЯрд░ рд╕реЗ рдХреИрд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдореЗрдВ
рдиреЗрдЯрд╡рд░реНрдХ рдкреНрд▓рдЧрдЗрдиреНрд╕ рд╡рд┐рд╡рд┐рдз рд╣реИрдВ, рдФрд░ рд╕реАрдПрдирдЖрдИ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рд╣реИрдВ (
рд╕реАрдПрдирдПрдо рдХреНрдпреЛрдВ рдирд╣реАрдВ )ред рдкреНрд░рддреНрдпреЗрдХ рдиреЛрдб рдкрд░
рдХреНрдпреВрдмрд▓реЗрдЯ рдХрдВрдЯреЗрдирд░
рд░рдирдЯрд╛рдЗрдо рдХреЛ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдХреМрди рд╕рд╛
рдиреЗрдЯрд╡рд░реНрдХ рдкреНрд▓рдЧ-рдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИред рдХрдВрдЯреЗрдирд░ рдиреЗрдЯрд╡рд░реНрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ (
CNI ) рдХрдВрдЯреЗрдирд░ рд░рдирдЯрд╛рдЗрдо рдФрд░ рдиреЗрдЯрд╡рд░реНрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдмреАрдЪ рд╣реИред рдФрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА CNI рдкреНрд▓рдЧрдЗрди рдиреЗрдЯрд╡рд░реНрдХ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред
тАЬрд╕реАрдПрдирдЖрдИ рдкреНрд▓рдЧрдЗрди рдХрдорд╛рдВрдб рд▓рд╛рдЗрди --network-plugin=cni
to Kubelet рдХреЛ рдкрд╛рд╕ рдХрд░рдХреЗ рдЪреБрдирд╛ рдЧрдпрд╛ рд╣реИред рдХреНрдпреВрдмрд▓реЗрдЯ рдлрд╝рд╛рдЗрд▓ рдХреЛ --cni-conf-dir
(рдбрд┐рдлрд╝реЙрд▓реНрдЯ /etc/cni/net.d
) рд╕реЗ /etc/cni/net.d
рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рдиреЗрдЯрд╡рд░реНрдХ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рд╕реЗ CNI рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред " ( рдиреЗрдЯрд╡рд░реНрдХ рдкреНрд▓рдЧрдЗрди рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рд╕реЗ )
CNI рдкреНрд▓рдЧрдЗрди рдХреЗ рдЕрд╕рд▓реА рдмрд╛рдпрдиреЗрд░рд┐рдЬрд╝ рд╣реИрдВ
-- cni-bin-dir
(рдбрд┐рдлрд╝реЙрд▓реНрдЯ
/opt/cni/bin
)ред
рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐
kubelet.service
рдХреЙрд▓
kubelet.service
рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ -
--network-plugin=cni
:
[Service] ExecStart=/usr/local/bin/kubelet \\ --config=/var/lib/kubelet/kubelet-config.yaml \\ --network-plugin=cni \\ ...
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдХрд┐рд╕реА рднреА рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╣реА рдЪреВрд▓реНрд╣рд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдиреЗрдЯрд╡рд░реНрдХ рдиреЗрдорд╕реНрдкреЗрд╕ рдмрдирд╛рддрд╛ рд╣реИред рдпрд╣ рд╡рд┐рд╢реЗрд╖
pause
рдХрдВрдЯреЗрдирд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ "рд╕рднреА рдЪреВрд▓реНрд╣рд╛ рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЗ рд▓рд┐рдП" рдореВрд▓ рдХрдВрдЯреЗрдирд░ "рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ"
(рд▓реЗрдЦ " рд╕рд░реНрд╡рд╢рдХреНрддрд┐рдорд╛рди рдард╣рд░рд╛рд╡ рдХрдВрдЯреЗрдирд░ " рд╕реЗ) ред рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рддрдм рдиреЗрдЯрд╡рд░реНрдХ рдХреЛ
pause
рдХрдВрдЯреЗрдирд░ рдХреЛ рд╕рдВрд▓рдЧреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП CNI рдкреНрд▓рдЧрдЗрди рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИред рд╕рднреА рдкреЙрдб рдХрдВрдЯреЗрдирд░ рдЗрд╕
pause
рдХрдВрдЯреЗрдирд░ рдХреЗ
netns
рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред
{ "cniVersion": "0.3.1", "name": "bridge", "type": "bridge", "bridge": "cnio0", "isGateway": true, "ipMasq": true, "ipam": { "type": "host-local", "ranges": [ [{"subnet": "${POD_CIDR}"}] ], "routes": [{"dst": "0.0.0.0/0"}] } }
рд╕реАрдПрдирдЖрдИ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рд░реВрдЯ рдирд╛рдо рд╕реНрдерд╛рди рдореЗрдВ
cnio0
(
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдирд╛рдо cni0
) рдореЗрдВ рд▓рд┐рдирдХреНрд╕ (L2) рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдмреНрд░рд┐рдЬ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
bridge
рдкреНрд▓рдЧрдЗрди рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдПрдХ рдкреНрд░рд╡реЗрд╢ рджреНрд╡рд╛рд░ (
"isGateway": true
рдЧреЗрдЯрд╡реЗ
"isGateway": true
) рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИред

рдЪреВрд▓реНрд╣рд╛ рдЬреЛрдбрд╝реЗ рдХреЛ рдирд╡рдирд┐рд░реНрдорд┐рдд рдкреБрд▓ рд╕реЗ рдЪреВрд▓реНрд╣рд╛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛:

L3 рдЬрд╛рдирдХрд╛рд░реА, рдЬреИрд╕реЗ рдХрд┐ IP рдкрддреЗ,
IPAM (
ipam
)
рдкреНрд▓рдЧрдЗрди рдХреЛ рдЕрд╕рд╛рдЗрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ,
host-local
рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, "рдЬреЛ рд╣реЛрд╕реНрдЯ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рд░рд╛рдЬреНрдп рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдПрдХ рд╣реЛрд╕реНрдЯ рдкрд░ рдЖрдИрдкреА рдкрддреЗ рдХреА рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ"
( host-local
рдХреЗ host-local
) ред рдЖрдИрдкреАрдПрдПрдо рдкреНрд▓рдЧрдЗрди рдЗрд╕ рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдкрд┐рдЫрд▓реЗ рдкреНрд▓рдЧрдЗрди (
bridge
) рдкрд░ рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рддрд╛рдХрд┐ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕рднреА рдорд╛рд░реНрдЧреЛрдВ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗ (
"routes": [{"dst": "0.0.0.0/0"}]
)ред рдпрджрд┐
gw
рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рд╣реИ, рддреЛ рдЗрд╕реЗ
рд╕рдмрдиреЗрдЯ рд╕реЗ рд▓рд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ ред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рд░реНрдЧ рднреА рдЪреВрд▓реНрд╣рд╛ рдХреЗ рдиреЗрдЯрд╡рд░реНрдХ рдиреЗрдорд╕реНрдкреЗрд╕ рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдкреБрд▓ рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░рддреЗ рд╣реБрдП (рдЬреЛ рдХрд┐ рдЪреВрд▓реНрд╣рд╛ рдХреЗ рдкрд╣рд▓реЗ рдЖрдИрдкреА рд╕рдмрдиреЗрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ)ред
рдФрд░ рдЕрдВрддрд┐рдо рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╡рд┐рд╡рд░рдг: рд╣рдордиреЗ рдЪреВрд▓реНрд╣рд╛ рдиреЗрдЯрд╡рд░реНрдХ рд╕реЗ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдЯреНрд░реИрдлрд╝рд┐рдХ рдХреЗ рд▓рд┐рдП
"ipMasq": true
(
"ipMasq": true
) рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛ред рд╣рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣рд╛рдВ NAT рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди
рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдж рд╣рд╛рд░реНрдб рд╡реЗ рдореЗрдВ рдпрд╣
рдХреЙрдиреНрдлрд┐рдЧрд░ рд╣реИ ред рдЗрд╕рд▓рд┐рдП, рдкреВрд░реНрдгрддрд╛ рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рдпрд╣ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐
bridge
рдкреНрд▓рдЧ рдХреЗ
iptables
рдореЗрдВ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпрд╛рдВ рдЗрд╕ рд╡рд┐рд╢реЗрд╖ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХреА рдЧрдИ рд╣реИрдВред рдЪреВрд▓реНрд╣рд╛ рд╕реЗ рд╕рднреА рдкреИрдХреЗрдЯ, рдЬрд┐рд╕рдХрд╛ рдкреНрд░рд╛рдкреНрддрдХрд░реНрддрд╛
224.0.0.0/4
рдХреА рд╕реАрдорд╛ рдореЗрдВ рдирд╣реАрдВ рд╣реИ,
NAT рдХреЗ рдкреАрдЫреЗ рд╣реЛрдЧрд╛ , рдЬреЛ рдХрд┐ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рдкреВрд░рд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ "рд╕рднреА рдХрдВрдЯреЗрдирд░ NAT рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ рдХрд┐рд╕реА рднреА рдЕрдиреНрдп рдХрдВрдЯреЗрдирд░ рдХреЗ рд╕рд╛рде рд╕рдВрд╡рд╛рдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред" рдЦреИрд░, рд╣рдо рд╕рд╛рдмрд┐рдд рдХрд░реЗрдВрдЧреЗ рдХрд┐ NAT рдХреА рдЬрд░реВрд░рдд рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╣реИ ...

рдЪреВрд▓реНрд╣рд╛ рд░рдЯрдирд╛
рдЕрдм рд╣рдо рдлрд▓реА рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИрдВред рдЪрд▓реЛ рдХрд╛рдо рдиреЛрдбреНрд╕ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЗ рдирд╛рдо рдХреЗ рд╕рднреА рдиреЗрдЯрд╡рд░реНрдХ рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ рдФрд░ рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг
рдпрд╣рд╛рдВ nginx
рдХреА рддреИрдирд╛рддреА рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рдж рдХрд░рддреЗ
рд╣реИрдВ ред рд╣рдо рдЗрдЪреНрдЫрд┐рдд рдкреНрд░рдХрд╛рд░ рдХреЗ рдиреЗрдорд╕реНрдкреЗрд╕ (рдпрд╛рдиреА
net
) рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
-t
рд╡рд┐рдХрд▓реНрдк рдХреЗ рд╕рд╛рде
lsns
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ:
ubuntu@worker-0:~$ sudo lsns -t net NS TYPE NPROCS PID USER COMMAND 4026532089 net 113 1 root /sbin/init 4026532280 net 2 8046 root /pause 4026532352 net 4 16455 root /pause 4026532426 net 3 27255 root /pause
ls
рд▓рд┐рдП
-i
рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣рдо рдЙрдирдХреЗ рдЗрдиреЛрдб рдирдВрдмрд░ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ:
ubuntu@worker-0:~$ ls -1i /var/run/netns 4026532352 cni-1d85bb0c-7c61-fd9f-2adc-f6e98f7a58af 4026532280 cni-7cec0838-f50c-416a-3b45-628a4237c55c 4026532426 cni-912bcc63-712d-1c84-89a7-9e10510808a0
рдЖрдк
ip netns
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рднреА рдиреЗрдЯрд╡рд░реНрдХ рдирд╛рдорд╕реНрдерд╛рдиреЛрдВ рдХреЛ рднреА рд╕реВрдЪреАрдмрджреНрдз рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
ubuntu@worker-0:~$ ip netns cni-912bcc63-712d-1c84-89a7-9e10510808a0 (id: 2) cni-1d85bb0c-7c61-fd9f-2adc-f6e98f7a58af (id: 1) cni-7cec0838-f50c-416a-3b45-628a4237c55c (id: 0)
рдиреЗрдЯрд╡рд░реНрдХ рд╕реНрдкреЗрд╕ рдореЗрдВ рдЪрд▓рдиреЗ рд╡рд╛рд▓реА рд╕рднреА рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП
cni-912bcc63тАУ712d-1c84тАУ89a7тАУ9e10510808a0
(
4026532426
), рдЖрдк рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрди рдХрдорд╛рдВрдб рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ:
ubuntu@worker-0:~$ sudo ls -l /proc/[1-9]*/ns/net | grep 4026532426 | cut -f3 -d"/" | xargs ps -p PID TTY STAT TIME COMMAND 27255 ? Ss 0:00 /pause 27331 ? Ss 0:00 nginx: master process nginx -g daemon off; 27355 ? S 0:00 nginx: worker process
рдпрд╣ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдлрд▓реА рдореЗрдВ
pause
рдЕрд▓рд╛рд╡рд╛, рд╣рдордиреЗ
nginx
рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдерд╛ред
pause
рдХрдВрдЯреЗрдирд░ рдЕрдиреНрдп рд╕рднреА рдкреЙрдб рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЗ рд╕рд╛рде
net
рдФрд░
ipc
рдиреЗрдорд╕реНрдкреЗрд╕ рд╕рд╛рдЭрд╛ рдХрд░рддрд╛ рд╣реИред
pause
рд╕реЗ рдкреАрдЖрдИрдбреА тАЛтАЛрдпрд╛рдж рд░рдЦреЗрдВ - 27255; рд╣рдо рдЗрд╕рдореЗрдВ рд╡рд╛рдкрд╕ рд▓реМрдЯреЗрдВрдЧреЗред
рдЕрдм рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐
kubectl
рдЗрд╕ рдлрд▓реА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рдмрддрд╛рддрд╛ рд╣реИ:
$ kubectl get pods -o wide | grep nginx nginx-65899c769f-wxdx6 1/1 Running 0 5d 10.200.0.4 worker-0
рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА:
$ kubectl describe pods nginx-65899c769f-wxdx6
Name: nginx-65899c769f-wxdx6 Namespace: default Node: worker-0/10.240.0.20 Start Time: Thu, 05 Jul 2018 14:20:06 -0400 Labels: pod-template-hash=2145573259 run=nginx Annotations: <none> Status: Running IP: 10.200.0.4 Controlled By: ReplicaSet/nginx-65899c769f Containers: nginx: Container ID: containerd://4c0bd2e2e5c0b17c637af83376879c38f2fb11852921b12413c54ba49d6983c7 Image: nginx ...
рд╣рдо рдкреЙрдб рдХрд╛ рдирд╛рдо рджреЗрдЦрддреЗ рд╣реИрдВ -
nginx-65899c769f-wxdx6
- рдФрд░ рдЗрд╕рдХреЗ рдПрдХ рдХрдВрдЯреЗрдирд░ (
nginx
) рдХреА рдЖрдИрдбреА, рд▓реЗрдХрд┐рди
pause
рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИред рд╕рднреА рдбреЗрдЯрд╛ рд╕реЗ рдореЗрд▓ рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЧрд╣рд░реА рдХрд╛рд░реНрдп рдиреЛрдб рдЦреЛрджреЗрдВред рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐
рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдж рд╣рд╛рд░реНрдб рд╡реЗ рдбреЛрдХрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдХрдВрдЯреЗрдирд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд┐рд╡рд░рдг рдХреЗ рд▓рд┐рдП рд╣рдо рдХрдВрд╕реЛрд▓ рдпреВрдЯрд┐рд▓рд┐рдЯреА
рдХрдВрдЯреЗрдирд░ - ctr
(рд▓реЗрдЦ рдХреЛ " рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдХреЗ рд╕рд╛рде рдХрдВрдЯреЗрдирд░ рдХрд╛ рдПрдХреАрдХрд░рдг, рдбреЙрдХрдЯрд░ рдХреА рдЬрдЧрд╣, рдЙрддреНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ " - рд▓рдЧрднрдЧ рджреЗрдЦреЗрдВ ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ ред :
ubuntu@worker-0:~$ sudo ctr namespaces ls NAME LABELS k8s.io
k8s.io
(
k8s.io
)
k8s.io
рдЖрдк
k8s.io
рдХрдВрдЯреЗрдирд░ рдЖрдИрдбреА рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
ubuntu@worker-0:~$ sudo ctr -n k8s.io containers ls | grep nginx 4c0bd2e2e5c0b17c637af83376879c38f2fb11852921b12413c54ba49d6983c7 docker.io/library/nginx:latest io.containerd.runtime.v1.linux
... рдФрд░
pause
рднреА:
ubuntu@worker-0:~$ sudo ctr -n k8s.io containers ls | grep pause 0866803b612f2f55e7b6b83836bde09bd6530246239b7bde1e49c04c7038e43a k8s.gcr.io/pause:3.1 io.containerd.runtime.v1.linux 21640aea0210b320fd637c22ff93b7e21473178de0073b05de83f3b116fc8834 k8s.gcr.io/pause:3.1 io.containerd.runtime.v1.linux d19b1b1c92f7cc90764d4f385e8935d121bca66ba8982bae65baff1bc2841da6 k8s.gcr.io/pause:3.1 io.containerd.runtime.v1.linux
рдореЗрдВ рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рд╡рд╛рд▓рд╛
тАж983c7
рдХрдВрдЯреЗрдирд░ рдЖрдИрдбреА
тАж983c7
рдЬреЛ
kubectl
рд╕реЗ рдорд┐рд▓рд╛ рд╣реИред рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдХреНрдпрд╛ рд╣рдо рдкрддрд╛ рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреМрди рд╕рд╛
pause
рдХрдВрдЯреЗрдирд░
nginx
рдкреЙрдб рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ:
ubuntu@worker-0:~$ sudo ctr -n k8s.io task ls TASK PID STATUS ... d19b1b1c92f7cc90764d4f385e8935d121bca66ba8982bae65baff1bc2841da6 27255 RUNNING 4c0bd2e2e5c0b17c637af83376879c38f2fb11852921b12413c54ba49d6983c7 27331 RUNNING
рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ PID 27331 рдФрд░ 27355 рдХреЗ рд╕рд╛рде рдкреНрд░рдХреНрд░рд┐рдпрд╛рдПрдВ
cni-912bcc63тАУ712d-1c84тАУ89a7тАУ9e10510808a0
рдиреЗрдЯрд╡рд░реНрдХ рдиреЗрдорд╕реНрдкреЗрд╕ рдЪрд▓ рд░рд╣реА рд╣реИрдВ?
ubuntu@worker-0:~$ sudo ctr -n k8s.io containers info d19b1b1c92f7cc90764d4f385e8935d121bca66ba8982bae65baff1bc2841da6 { "ID": "d19b1b1c92f7cc90764d4f385e8935d121bca66ba8982bae65baff1bc2841da6", "Labels": { "io.cri-containerd.kind": "sandbox", "io.kubernetes.pod.name": "nginx-65899c769f-wxdx6", "io.kubernetes.pod.namespace": "default", "io.kubernetes.pod.uid": "0b35e956-8080-11e8-8aa9-0a12b8818382", "pod-template-hash": "2145573259", "run": "nginx" }, "Image": "k8s.gcr.io/pause:3.1", ...
... рдФрд░:
ubuntu@worker-0:~$ sudo ctr -n k8s.io containers info 4c0bd2e2e5c0b17c637af83376879c38f2fb11852921b12413c54ba49d6983c7 { "ID": "4c0bd2e2e5c0b17c637af83376879c38f2fb11852921b12413c54ba49d6983c7", "Labels": { "io.cri-containerd.kind": "container", "io.kubernetes.container.name": "nginx", "io.kubernetes.pod.name": "nginx-65899c769f-wxdx6", "io.kubernetes.pod.namespace": "default", "io.kubernetes.pod.uid": "0b35e956-8080-11e8-8aa9-0a12b8818382" }, "Image": "docker.io/library/nginx:latest", ...
рдЕрдм рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдХреМрди рд╕реЗ рдХрдВрдЯреЗрдирд░ рдЗрд╕ рдлрд▓реА (
nginx-65899c769f-wxdx6
) рдФрд░ рдиреЗрдЯрд╡рд░реНрдХ рдиреЗрдорд╕реНрдкреЗрд╕ (
cni-912bcc63тАУ712d-1c84тАУ89a7тАУ9e10510808a0
) рдХреЛ рдЪрд▓рд╛ рд░рд╣реЗ рд╣реИрдВ:
- nginx (ID:
4c0bd2e2e5c0b17c637af83376879c38f2fb11852921b12413c54ba49d6983c7
); - рдард╣рд░рд╛рд╡ (рдЖрдИрдбреА:
d19b1b1c92f7cc90764d4f385e8935d121bca66ba8982bae65baff1bc2841da6
)ред

рдпрд╣ рдиреЗрдЯрд╡рд░реНрдХ рд╕реЗ рдХреИрд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИ (
nginx-65899c769f-wxdx6
)? рд╣рдо рдЗрд╕рдХреЗ рдиреЗрдЯрд╡рд░реНрдХ рдиреЗрдорд╕реНрдкреЗрд╕ (
cni-912bcc63тАУ712d-1c84тАУ89a7тАУ9e10510808a0
) рдореЗрдВ рдХрдорд╛рдВрдб рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рд╕реЗ рдкреНрд░рд╛рдкреНрдд PID 27255 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ:
ubuntu@worker-0:~$ sudo ip netns identify 27255 cni-912bcc63-712d-1c84-89a7-9e10510808a0
рдЗрди рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП, рд╣рдо
nsenter
рд╡рд┐рдХрд▓реНрдк рдХреЗ рд╕рд╛рде
nsenter
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ рдЬреЛ рд▓рдХреНрд╖реНрдп PID рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдФрд░
-n
рдПрдХ рдлрд╝рд╛рдЗрд▓ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдП рдмрд┐рдирд╛ рд▓рдХреНрд╖реНрдп рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рдиреЗрдЯрд╡рд░реНрдХ рдирд╛рдорд╕реНрдерд╛рди рдореЗрдВ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП (27255)ред рдпрд╣рд╛рдБ рдХреНрдпрд╛
ip link show
рдХрд╣реЗрдВрдЧреЗ:
ubuntu@worker-0:~$ sudo nsenter -t 27255 -n ip link show 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 3: eth0@if7: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default link/ether 0a:58:0a:c8:00:04 brd ff:ff:ff:ff:ff:ff link-netnsid 0
... рдФрд░
ifconfig eth0
:
ubuntu@worker-0:~$ sudo nsenter -t 27255 -n ifconfig eth0 eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 10.200.0.4 netmask 255.255.255.0 broadcast 0.0.0.0 inet6 fe80::2097:51ff:fe39:ec21 prefixlen 64 scopeid 0x20<link> ether 0a:58:0a:c8:00:04 txqueuelen 0 (Ethernet) RX packets 540 bytes 42247 (42.2 KB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 177 bytes 16530 (16.5 KB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
рдпрд╣ рдкреБрд╖реНрдЯрд┐ рдХрд░рддрд╛ рд╣реИ рдХрд┐
kubectl get pod
рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд╣рд▓реЗ рдкреНрд░рд╛рдкреНрдд IP рдкрддрд╛
eth0
рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдПрдХ
рдЬреЛрдбрд╝реА рдЬреЛрдбрд╝реА рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдПрдХ рдЫреЛрд░ рдЪреВрд▓реНрд╣рд╛ рдореЗрдВ рд╣реИ, рдФрд░ рджреВрд╕рд░рд╛ рд░реВрдЯ рдиреЗрдорд╕реНрдкреЗрд╕ рдореЗрдВ рд╣реИред рджреВрд╕рд░реЗ рдЫреЛрд░ рдХреЗ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо
ethtool
рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ:
ubuntu@worker-0:~$ sudo ip netns exec cni-912bcc63-712d-1c84-89a7-9e10510808a0 ethtool -S eth0 NIC statistics: peer_ifindex: 7
рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рджрд╛рд╡рдд рдХрд╛
ifindex
7. рдЬрд╛рдБрдЪ рдХрд░реЗрдВ рдХрд┐ рдпрд╣ рд░реВрдЯ рдиреЗрдорд╕реНрдкреЗрд╕ рдореЗрдВ рд╣реИред рдпрд╣
ip link
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
ubuntu@worker-0:~$ ip link | grep '^7:' 7: veth71f7d238@if3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master cnio0 state UP mode DEFAULT group default
рдЕрдВрдд рдореЗрдВ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдЗрдП рджреЗрдЦреЗрдВ:
ubuntu@worker-0:~$ sudo cat /sys/class/net/veth71f7d238/ifindex 7
рдорд╣рд╛рди, рдЕрдм рд╡рд░реНрдЪреБрдЕрд▓ рд▓рд┐рдВрдХ рдХреЗ рд╕рд╛рде рд╕рдм рдХреБрдЫ рд╕реНрдкрд╖реНрдЯ рд╣реИред
brctl
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ
brctl
рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рд▓рд┐рдирдХреНрд╕ рдмреНрд░рд┐рдЬ рд╕реЗ рдЕрдиреНрдп рдХреМрди рдЬреБрдбрд╝рд╛ рд╣реИ:
ubuntu@worker-0:~$ brctl show cnio0 bridge name bridge id STP enabled interfaces cnio0 8000.0a580ac80001 no veth71f7d238 veth73f35410 vethf273b35f
рддреЛ, рдЪрд┐рддреНрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:

рд░реВрдЯрд┐рдВрдЧ рдЪреЗрдХ
рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╛рддрд╛рдпрд╛рдд рдХреЛ рдХреИрд╕реЗ рдЖрдЧреЗ рдмрдврд╝рд╛рддреЗ рд╣реИрдВ? рдЖрдЗрдП рдиреЗрдЯрд╡рд░реНрдХ рдиреЗрдорд╕реНрдкреЗрд╕ рдкреЙрдб рдореЗрдВ рд░рд╛рдЙрдЯрд┐рдВрдЧ рдЯреЗрдмрд▓ рджреЗрдЦреЗрдВ:
ubuntu@worker-0:~$ sudo ip netns exec cni-912bcc63-712d-1c84-89a7-9e10510808a0 ip route show default via 10.200.0.1 dev eth0 10.200.0.0/24 dev eth0 proto kernel scope link src 10.200.0.4
рдХрдо рд╕реЗ рдХрдо рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рд░реВрдЯ рдиреЗрдорд╕реНрдкреЗрд╕ рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ (
default via 10.200.0.1
)ред рдЕрдм рдореЗрдЬрдмрд╛рди рд░реВрдЯрд┐рдВрдЧ рдЯреЗрдмрд▓ рджреЗрдЦреЗрдВ:
ubuntu@worker-0:~$ ip route list default via 10.240.0.1 dev eth0 proto dhcp src 10.240.0.20 metric 100 10.200.0.0/24 dev cnio0 proto kernel scope link src 10.200.0.1 10.240.0.0/24 dev eth0 proto kernel scope link src 10.240.0.20 10.240.0.1 dev eth0 proto dhcp scope link src 10.240.0.20 metric 100
рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдПрдХ VPC рд░рд╛рдЙрдЯрд░ рдХреЛ рдкреИрдХреЗрдЯ рдХреИрд╕реЗ рдЕрдЧреНрд░реЗрд╖рд┐рдд
рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (VPC
рдореЗрдВ рдПрдХ "рдирд┐рд╣рд┐рдд" рд░рд╛рдЙрдЯрд░ рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ
рдЖрдорддреМрд░ рдкрд░ рд╕рдмрдиреЗрдЯ рдХреЗ рдореБрдЦреНрдп рдЖрдИрдкреА рдПрдбреНрд░реЗрд╕ рд╕реНрдкреЗрд╕ рд╕реЗ
рджреВрд╕рд░рд╛ рдкрддрд╛ рд╣реЛрддрд╛ рд╣реИ)ред рдЕрдм: рдХреНрдпрд╛ рд╡реАрдкреАрд╕реА рд░рд╛рдЙрдЯрд░ рдХреЛ рдкрддрд╛ рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдЪреВрд▓реНрд╣рд╛ рдХреЗ рдиреЗрдЯрд╡рд░реНрдХ рдХреЛ рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рдП? рдирд╣реАрдВ, рд╡рд╣ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдорд╛рд░реНрдЧреЛрдВ рдХреЛ рд╕реАрдПрдирдЖрдИ рдкреНрд▓рдЧ-рдЗрди рдпрд╛
рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк
рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ (рдЬреИрд╕рд╛ рдХрд┐ рдореИрдиреБрдЕрд▓ рдореЗрдВ рд╣реИ)ред рдЬрд╛рд╣рд┐рд░рд╛ рддреМрд░ рдкрд░,
AWS CNI- рдкреНрд▓рдЧрдЗрди AWS рдореЗрдВ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдмрд╕ рдЗрддрдирд╛ рд╣реА рдХрд░рддрд╛ рд╣реИред рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐
рдХрдИ CNI рдкреНрд▓рдЧрдЗрдиреНрд╕ рд╣реИрдВ , рдФрд░ рд╣рдо рдПрдХ
рд╕рд░рд▓ рдиреЗрдЯрд╡рд░реНрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░ рд░рд╣реЗ рд╣реИрдВ:

рдиреИрдЯ рдореЗрдВ рдЧрд╣рд░рд╛ рд╡рд┐рд╕рд░реНрдЬрди
kubectl create -f busybox.yaml
рдкреНрд░рддрд┐рдХреГрддрд┐ рдирд┐рдпрдВрддреНрд░рдХ рдХреЗ рд╕рд╛рде рджреЛ рд╕рдорд╛рди
kubectl create -f busybox.yaml
рдХрдВрдЯреЗрдирд░ рдмрдирд╛рдПрдВ:
apiVersion: v1 kind: ReplicationController metadata: name: busybox0 labels: app: busybox0 spec: replicas: 2 selector: app: busybox0 template: metadata: name: busybox0 labels: app: busybox0 spec: containers: - image: busybox command: - sleep - "3600" imagePullPolicy: IfNotPresent name: busybox restartPolicy: Always
(
busybox.yaml
)
рд╣рдореЗрдВ рдорд┐рд▓рддрд╛ рд╣реИ:
$ kubectl get pods -o wide NAME READY STATUS RESTARTS AGE IP NODE busybox0-g6pww 1/1 Running 0 4s 10.200.1.15 worker-1 busybox0-rw89s 1/1 Running 0 4s 10.200.0.21 worker-0 ...
рдПрдХ рдХрдВрдЯреЗрдирд░ рд╕реЗ рджреВрд╕рд░реЗ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдкрд┐рдВрдЧ рд╕рдлрд▓ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП:
$ kubectl exec -it busybox0-rw89s -- ping -c 2 10.200.1.15 PING 10.200.1.15 (10.200.1.15): 56 data bytes 64 bytes from 10.200.1.15: seq=0 ttl=62 time=0.528 ms 64 bytes from 10.200.1.15: seq=1 ttl=62 time=0.440 ms --- 10.200.1.15 ping statistics --- 2 packets transmitted, 2 packets received, 0% packet loss round-trip min/avg/max = 0.440/0.484/0.528 ms
рдЯреНрд░реИрдлрд╝рд┐рдХ рдХреЗ рдкреНрд░рд╡рд╛рд╣ рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк
tcpdump
рдпрд╛
conntrack
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреИрдХреЗрдЯ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ:
ubuntu@worker-0:~$ sudo conntrack -L | grep 10.200.1.15 icmp 1 29 src=10.200.0.21 dst=10.200.1.15 type=8 code=0 id=1280 src=10.200.1.15 dst=10.240.0.20 type=0 code=0 id=1280 mark=0 use=1
рдлрд▓реА 10.200.0.21 рд╕реЗ рд╕реНрд░реЛрдд рдЖрдИрдкреА рдореЗрдЬрдмрд╛рди 10.240.0.20 рдХреЗ рдЖрдИрдкреА рдкрддреЗ рдореЗрдВ рдЕрдиреБрд╡рд╛рджрд┐рдд рд╣реИред
ubuntu@worker-1:~$ sudo conntrack -L | grep 10.200.1.15 icmp 1 28 src=10.240.0.20 dst=10.200.1.15 type=8 code=0 id=1280 src=10.200.1.15 dst=10.240.0.20 type=0 code=0 id=1280 mark=0 use=1
Iptables рдореЗрдВ, рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЧрд┐рдирддреА рдмрдврд╝ рд░рд╣реА рд╣реИ:
ubuntu@worker-0:~$ sudo iptables -t nat -Z POSTROUTING -L -v Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination ... 5 324 CNI-be726a77f15ea47ff32947a3 all -- any any 10.200.0.0/24 anywhere /* name: "bridge" id: "631cab5de5565cc432a3beca0e2aece0cef9285482b11f3eb0b46c134e457854" */ Zeroing chain `POSTROUTING'
рджреВрд╕рд░реА рдУрд░, рдпрджрд┐ рдЖрдк
"ipMasq": true
CNI рдкреНрд▓рдЧрдЗрди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕реЗ
"ipMasq": true
рд╣реИ, рддреЛ рдЖрдк рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ (рдпрд╣ рдСрдкрд░реЗрд╢рди рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╢реИрдХреНрд╖рд┐рдХ рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рд╣рдо рдПрдХ рдХрд╛рд░реНрдпрд╢реАрд▓ рдХреНрд▓рд╕реНрдЯрд░ рдкрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдмрджрд▓рдиреЗ рдХреА рдЕрдиреБрд╢рдВрд╕рд╛ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ!):
$ kubectl get pods -o wide NAME READY STATUS RESTARTS AGE IP NODE busybox0-2btxn 1/1 Running 0 16s 10.200.0.15 worker-0 busybox0-dhpx8 1/1 Running 0 16s 10.200.1.13 worker-1 ...
рдкрд┐рдВрдЧ рдЕрднреА рднреА рдкрд╛рд╕ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП:
$ kubectl exec -it busybox0-2btxn -- ping -c 2 10.200.1.13 PING 10.200.1.6 (10.200.1.6): 56 data bytes 64 bytes from 10.200.1.6: seq=0 ttl=62 time=0.515 ms 64 bytes from 10.200.1.6: seq=1 ttl=62 time=0.427 ms --- 10.200.1.6 ping statistics --- 2 packets transmitted, 2 packets received, 0% packet loss round-trip min/avg/max = 0.427/0.471/0.515 ms
рдФрд░ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ - NAT рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛:
ubuntu@worker-0:~$ sudo conntrack -L | grep 10.200.1.13 icmp 1 29 src=10.200.0.15 dst=10.200.1.13 type=8 code=0 id=1792 src=10.200.1.13 dst=10.200.0.15 type=0 code=0 id=1792 mark=0 use=1
рдЗрд╕рд▓рд┐рдП, рд╣рдордиреЗ рдЬрд╛рдБрдЪ рдХреА рдХрд┐ "рд╕рднреА рдХрдВрдЯреЗрдирд░ NAT рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ рдХрд┐рд╕реА рднреА рдЕрдиреНрдп рдХрдВрдЯреЗрдирд░ рдХреЗ рд╕рд╛рде рд╕рдВрдЪрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред"
ubuntu@worker-1:~$ sudo conntrack -L | grep 10.200.1.13 icmp 1 27 src=10.200.0.15 dst=10.200.1.13 type=8 code=0 id=1792 src=10.200.1.13 dst=10.200.0.15 type=0 code=0 id=1792 mark=0 use=1
рдХреНрд▓рд╕реНрдЯрд░ рдиреЗрдЯрд╡рд░реНрдХ (10.32.0.0/24)
рдЖрдкрдиреЗ
busybox
рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рджреЗрдЦрд╛ рд╣реЛрдЧрд╛ рдХрд┐
busybox
рдХреЛ рджрд┐рдП рдЧрдП рдЖрдИрдкреА рдПрдбреНрд░реЗрд╕ рд╣рд░ рдорд╛рдорд▓реЗ рдореЗрдВ рдЕрд▓рдЧ рдереЗред рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рд╣рдо рдЗрди рдХрдВрдЯреЗрдирд░ рдХреЛ рдЕрдиреНрдп рдЪреВрд▓реНрд╣рд╛ рд╕реЗ рд╕рдВрдЪрд╛рд░ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рдХрд░рд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ? рдПрдХ рдлрд▓реА рдХреЗ рд╡рд░реНрддрдорд╛рди рдЖрдИрдкреА рдкрддреЗ рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡реЗ рдмрджрд▓ рдЬрд╛рдПрдВрдЧреЗред рдЗрд╕ рдХрд╛рд░рдг рд╕реЗ, рдЖрдкрдХреЛ
Service
рд╕рдВрд╕рд╛рдзрди рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬреЛ рдХрдИ рдЕрд▓реНрдкрдХрд╛рд▓рд┐рдХ рд╕реБрдирд╡рд╛рдИ рдХреЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдкреНрд░реЙрдХреНрд╕реА рдХрд░реЗрдЧрд╛ред
"рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдореЗрдВ рд╕реЗрд╡рд╛ рдПрдХ рдЕрдореВрд░реНрддрддрд╛ рд╣реИ рдЬреЛ рдЪреВрд▓реНрд╣реЛрдВ рдХреЗ рддрд╛рд░реНрдХрд┐рдХ рд╕реЗрдЯ рдФрд░ рдЙрди рдиреАрддрд┐рдпреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреА рд╣реИ рдЬрд┐рдирдХреЗ рджреНрд╡рд╛рд░рд╛ рдЙрдиреНрд╣реЗрдВ рдПрдХреНрд╕реЗрд╕ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред" ( рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рд╕реЗрд╡рд╛ рдкреНрд░рд▓реЗрдЦрди рд╕реЗ)
рдХрд┐рд╕реА рд╕реЗрд╡рд╛ рдХреЛ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рддрд░реАрдХреЗ рд╣реИрдВ; рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдкреНрд░рдХрд╛рд░
ClusterIP
, рдЬреЛ рдХреНрд▓рд╕реНрдЯрд░ рдХреЗ CIDR рдмреНрд▓реЙрдХ рд╕реЗ IP рдкрддрд╛ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ (рдпрд╛рдиреА, рдХреЗрд╡рд▓ рдХреНрд▓рд╕реНрдЯрд░ рд╕реЗ рд╕реБрд▓рдн)ред рдРрд╕рд╛ рд╣реА рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдж рд╣рд╛рд░реНрдб рд╡реЗ рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдбреАрдПрдирдПрд╕ рдХреНрд▓рд╕реНрдЯрд░ рдРрдб-рдСрди рд╣реИред
# ... apiVersion: v1 kind: Service metadata: name: kube-dns namespace: kube-system labels: k8s-app: kube-dns kubernetes.io/cluster-service: "true" addonmanager.kubernetes.io/mode: Reconcile kubernetes.io/name: "KubeDNS" spec: selector: k8s-app: kube-dns clusterIP: 10.32.0.10 ports: - name: dns port: 53 protocol: UDP - name: dns-tcp port: 53 protocol: TCP # ...
(
kube-dns.yaml
)
kubectl
рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐
Service
рд╕рдорд╛рдкрди рдмрд┐рдВрджреБ рдХреЛ рдпрд╛рдж рдХрд░рддреА рд╣реИ рдФрд░ рдЙрдирдХрд╛ рдЕрдиреБрд╡рд╛рдж рдХрд░рддреА рд╣реИ:
$ kubectl -n kube-system describe services ... Selector: k8s-app=kube-dns Type: ClusterIP IP: 10.32.0.10 Port: dns 53/UDP TargetPort: 53/UDP Endpoints: 10.200.0.27:53 Port: dns-tcp 53/TCP TargetPort: 53/TCP Endpoints: 10.200.0.27:53 ...
рдмрд┐рд▓реНрдХреБрд▓ рдХреИрд╕реЗ? ..
iptables
рдлрд┐рд░ рд╕реЗред рдЖрдЗрдП рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдмрдирд╛рдП рдЧрдП рдирд┐рдпрдореЛрдВ рд╕реЗ рдЧреБрдЬрд░реЗрдВред рдЙрдирдХреА рдкреВрд░реА рд╕реВрдЪреА рдХреЛ
iptables-save
рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЬреИрд╕реЗ рд╣реА рдкреИрдХреЗрдЯ рдкреНрд░рдХреНрд░рд┐рдпрд╛ (
OUTPUT
) рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдП рдЬрд╛рддреЗ рд╣реИрдВ рдпрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдЗрдВрдЯрд░рдлреЗрд╕ (
PREROUTING
) рдкрд░ рдЖрддреЗ рд╣реИрдВ, рд╡реЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд
iptables
рд╢реНрд░реГрдВрдЦрд▓рд╛рдУрдВ рд╕реЗ рдЧреБрдЬрд░рддреЗ рд╣реИрдВ:
-A PREROUTING -m comment --comment "kubernetes service portals" -j KUBE-SERVICES -A OUTPUT -m comment --comment "kubernetes service portals" -j KUBE-SERVICES
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд▓рдХреНрд╖реНрдп рдЯреАрд╕реАрдкреА рдкреИрдХреЗрдЯ рдХреЗ рд▓рд┐рдП 10 рд╡реЗрдВ рдирдВрдмрд░ рдкрд░ 10.32.0.10 рдкрд░ рднреЗрдЬреЗ рдЧрдП рд╣реИрдВ, рдФрд░ 53 рд╡реЗрдВ рдкреЛрд░реНрдЯ рдХреЗ рд╕рд╛рде рдкреНрд░рд╛рдкреНрддрдХрд░реНрддрд╛ рдХреЛ 10.200.0.27 рдкрд░ рдкреНрд░реЗрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
-A KUBE-SERVICES -d 10.32.0.10/32 -p tcp -m comment --comment "kube-system/kube-dns:dns-tcp cluster IP" -m tcp --dport 53 -j KUBE-SVC-ERIFXISQEP7F7OF4 -A KUBE-SVC-ERIFXISQEP7F7OF4 -m comment --comment "kube-system/kube-dns:dns-tcp" -j KUBE-SEP-32LPCMGYG6ODGN3H -A KUBE-SEP-32LPCMGYG6ODGN3H -p tcp -m comment --comment "kube-system/kube-dns:dns-tcp" -m tcp -j DNAT --to-destination 10.200.0.27:53
UDP рдкреИрдХреЗрдЯ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди (рдкреНрд░рд╛рдкреНрддрдХрд░реНрддрд╛ 10.32.0.10:53 тЖТ 10.200.0.27:53)
-A KUBE-SERVICES -d 10.32.0.10/32 -p udp -m comment --comment "kube-system/kube-dns:dns cluster IP" -m udp --dport 53 -j KUBE-SVC-TCOU7JCQXEZGVUNU -A KUBE-SVC-TCOU7JCQXEZGVUNU -m comment --comment "kube-system/kube-dns:dns" -j KUBE-SEP-LRUTK6XRXU43VLIG -A KUBE-SEP-LRUTK6XRXU43VLIG -p udp -m comment --comment "kube-system/kube-dns:dns" -m udp -j DNAT --to-destination 10.200.0.27:53
рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдореЗрдВ рдЕрдиреНрдп рдкреНрд░рдХрд╛рд░ рдХреА
Services
ред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдж рд╣рд╛рд░реНрдб рд╡реЗ
NodePort
рдмрд╛рд░реЗ рдореЗрдВ
NodePort
рдХрд░рддреЗ рд╣реИрдВ -
рд╕реНрдореЛрдХ рдЯреЗрд╕реНрдЯ: рд╕реЗрд╡рд╛рдПрдБ рджреЗрдЦреЗрдВ ред
kubectl expose deployment nginx --port 80 --type NodePort
NodePort
рдкреНрд░рддреНрдпреЗрдХ рдиреЛрдб рдХреЗ IP рдкрддреЗ рдкрд░ рд╕реЗрд╡рд╛ рдХреЛ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЗрд╕реЗ рдПрдХ рд╕реНрдерд┐рд░ рдкреЛрд░реНрдЯ рдкрд░ рд░рдЦрддрд╛ рд╣реИ (рдЗрд╕реЗ
NodePort
рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ)ред
NodePort
рдХреЛ рдХреНрд▓рд╕реНрдЯрд░ рдХреЗ рдмрд╛рд╣рд░ рд╕реЗ
NodePort
рдПрдХреНрд╕реЗрд╕ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЖрдк
kubectl
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдорд░реНрдкрд┐рдд рдкреЛрд░реНрдЯ (рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ - 31088) рдХреА рдЬрд╛рдВрдЪ рдХрд░
kubectl
:
$ kubectl describe services nginx ... Type: NodePort IP: 10.32.0.53 Port: <unset> 80/TCP TargetPort: 80/TCP NodePort: <unset> 31088/TCP Endpoints: 10.200.1.18:80 ...
рдЕрдм рдЗрдВрдЯрд░рдиреЗрдЯ рд╕реЗ
http://${EXTERNAL_IP}:31088/
ред рдпрд╣рд╛рдВ
EXTERNAL_IP
рдХрд┐рд╕реА рднреА рдХрд╛рдордХрд╛рдЬреА рдЙрджрд╛рд╣рд░рдг рдХрд╛ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ IP рдкрддрд╛ рд╣реИред рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдореИрдВрдиреЗ
рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ -0 рдХреЗ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдЖрдИрдкреА рдкрддреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИред рдЕрдиреБрд░реЛрдз 10.240.0.20 (рдХреНрд▓рд╛рдЙрдб рдкреНрд░рджрд╛рддрд╛ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ NAT рдореЗрдВ рд▓рдЧрд╛ рд╣реБрдЖ рд╣реИ) рдХреЗ рдЖрдВрддрд░рд┐рдХ IP рдкрддреЗ рдХреЗ рд╕рд╛рде рдПрдХ рдореЗрдЬрдмрд╛рди рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╕реЗрд╡рд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдЕрдиреНрдп рд╣реЛрд╕реНрдЯ (
рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ -1) рдкрд░ рд╢реБрд░реВ рд╣реЛрддреА рд╣реИ, рдЬрд┐рд╕реЗ рдПрдВрдбрдкреЙрдЗрдВрдЯ рдХреЗ рдЖрдИрдкреА рдкрддреЗ (10.200.1.18) рджреНрд╡рд╛рд░рд╛ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
ubuntu@worker-0:~$ sudo conntrack -L | grep 31088 tcp 6 86397 ESTABLISHED src=173.38.XXX.XXX dst=10.240.0.20 sport=30303 dport=31088 src=10.200.1.18 dst=10.240.0.20 sport=80 dport=30303 [ASSURED] mark=0 use=1
рдкреИрдХреЗрдЯ рдХреЛ
рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ -реж рд╕реЗ
рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ -рез рдореЗрдВ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд╣рд╛рдБ рд╡рд╣ рдЕрдкрдирд╛ рдкреНрд░рд╛рдкреНрддрдХрд░реНрддрд╛ рдкрд╛рддрд╛ рд╣реИ:
ubuntu@worker-1:~$ sudo conntrack -L | grep 80 tcp 6 86392 ESTABLISHED src=10.240.0.20 dst=10.200.1.18 sport=14802 dport=80 src=10.200.1.18 dst=10.240.0.20 sport=80 dport=14802 [ASSURED] mark=0 use=1
рдХреНрдпрд╛ рдРрд╕рд╛ рд╕рд░реНрдХрд┐рдЯ рдЖрджрд░реНрд╢ рд╣реИ? рд╢рд╛рдпрдж рдирд╣реАрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд┐рдП рдЧрдП
iptables
рдирд┐рдпрдо рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИрдВ:
-A KUBE-NODEPORTS -p tcp -m comment --comment "default/nginx:" -m tcp --dport 31088 -j KUBE-SVC-4N57TFCL4MD7ZTDA -A KUBE-SVC-4N57TFCL4MD7ZTDA -m comment --comment "default/nginx:" -j KUBE-SEP-UGTFMET44DQG7H7H -A KUBE-SEP-UGTFMET44DQG7H7H -p tcp -m comment --comment "default/nginx:" -m tcp -j DNAT --to-destination 10.200.1.18:80
рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдкреЛрд░реНрдЯ 31088 рдХреЗ рд╕рд╛рде рдкреИрдХреЗрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХрд╛ рдкрддрд╛ 10.200.1.18 рдХреЛ рдкреНрд░рд╕рд╛рд░рд┐рдд рд╣реЛрддрд╛ рд╣реИред рдмрдВрджрд░рдЧрд╛рд╣ рднреА рдкреНрд░рд╕рд╛рд░рдг рдХрд░ рд░рд╣рд╛ рд╣реИ, 31088 рд╕реЗ 80 рддрдХред
рд╣рдордиреЗ рдХрд┐рд╕реА рдЕрдиреНрдп рдкреНрд░рдХрд╛рд░ рдХреА рд╕реЗрд╡рд╛ рдкрд░ рд▓реЛрдб рдирд╣реАрдВ рдХрд┐рдпрд╛ -
LoadBalancer
- рдЬреЛ рдХреНрд▓рд╛рдЙрдб рдкреНрд░рджрд╛рддрд╛ рд▓реЛрдб рдмреИрд▓реЗрдВрд╕рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реЗрд╡рд╛ рдХреЛ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд░реВрдк рд╕реЗ рдЙрдкрд▓рдмреНрдз рдХрд░рд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд▓реЗрдЦ рдкрд╣рд▓реЗ рд╣реА рдмрдбрд╝рд╛ рд╣реЛ рдЧрдпрд╛ рд╣реИред
рдирд┐рд╖реНрдХрд░реНрд╖
рдРрд╕рд╛ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдмрд╣реБрдд рд╕рд╛рд░реА рдЬрд╛рдирдХрд╛рд░реА рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдордиреЗ рдХреЗрд╡рд▓ рд╣рд┐рдорд╢реИрд▓ рдХреЗ рд╕рд┐рд░реЗ рдХреЛ рдЫреБрдЖ рд╣реИред рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдореИрдВ IPv6, IPVS, eBPF рдФрд░ рдХреБрдЫ рджрд┐рд▓рдЪрд╕реНрдк рд╡рд░реНрддрдорд╛рди CNI рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдБред
рдЕрдиреБрд╡рд╛рджрдХ рд╕реЗ рдкреА.рдПрд╕.
рд╣рдорд╛рд░реЗ рдмреНрд▓реЙрдЧ рдореЗрдВ рднреА рдкрдврд╝реЗрдВ: