Kubernetes рдореЗрдВ рдмреИрдХрд╕реНрдЯреЗрдЬ рдиреЗрдЯрд╡рд░реНрдХ

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



рдЗрд╕ рддрдереНрдп рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХрд┐ рдХреЗрд▓реНрд╕реА рд╣рд╛рдИрдЯреЙрд╡рд░ рдХреЗ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдж рд╣рд╛рд░реНрдб рд╡реЗ рдЧрд╛рдЗрдб рд╕рд┐рд░реНрдл рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ ( рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдПрдбрдмреНрд▓реНрдпреВрдПрд╕ рдкрд░ рднреА! ), рдореБрдЭреЗ рдкрд╕рдВрдж рдЖрдпрд╛ рдХрд┐ рдиреЗрдЯрд╡рд░реНрдХ рдХреЛ рд╕рд╛рдл рдФрд░ рд╕рд░рд▓ рд░рдЦрд╛ рдЧрдпрд╛ рдерд╛; рдФрд░ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХрдВрдЯреЗрдирд░ рдиреЗрдЯрд╡рд░реНрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ ( 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} \ # ... --private-network-ip 10.240.0.1${i} \ # ... done 

( controllers_gcp.sh )

AWS рдореЗрдВ рдирд┐рдпрдВрддреНрд░рдХ рдиреЛрдбреНрд╕ рдХреА рд╢реБрд░реБрдЖрдд


 for i in 0 1 2; do declare controller_id${i}=`aws ec2 run-instances \ # ... --private-ip-address 10.240.0.1${i} \ # ... done 

( 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 рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдБред

рдЕрдиреБрд╡рд╛рджрдХ рд╕реЗ рдкреА.рдПрд╕.


рд╣рдорд╛рд░реЗ рдмреНрд▓реЙрдЧ рдореЗрдВ рднреА рдкрдврд╝реЗрдВ:

Source: https://habr.com/ru/post/hi420813/


All Articles