2023 01 07 - deptno/deptno.github.io GitHub Wiki

About Networking

  • ๋™์ผ ์„œ๋ธŒ๋„ท ๋‚ด(L2)์—์„œ๋Š” ์› ํ™‰์— ๋„๋‹ฌ์ด ๊ฐ€๋Šฅํ•˜๋‹ค
  • ์ด๊ฑธ ๋„˜์–ด์„œ๋ผ๋ฉด L3 ๋ผ์šฐํ„ฐ๊ฐ€ ํ•„์š”ํ•˜๊ฒŒ๋œ๋‹ค.
    • 10.48.0.128/26 via 10.0.0.12 dev eth0
    • ์ผ๋ฐ˜์ ์ธ ๋ผ์šฐํŒ… ํ”„๋กœํ† ์ฝœ์€ BGP
  • overlay network <-> underlay network
    • ๋‘˜์€ ์ƒ๋Œ€์ ์ธ ๊ฐœ๋…์ด๋‹ค, ์–ธ๋”๋ ˆ์ด๋Š” ์ผ๋ฐ˜ ๋„คํŠธ์›Œํฌ
    • ์˜ค๋ฒ„๋ ˆ์ด ๋„คํŠธ์›Œํฌ๋Š” ์–ธ๋”๋ ˆ์ด ๋„คํŠธ์›Œํฌ ์œ„์—์„œ ์ด๋ฃจ์–ด์ง€์ง„๋‹ค
    • ์˜ค๋ฒ„๋ ˆ์ด ๋„คํŠธ์›Œํฌ ํŒจํ‚ท ์•ˆ์— ์–ธ๋”๋ ˆ์ด ๋„คํŠธ์›Œํฌ ํŒจํ‚ท์ด ์กด์žฌํ•˜๋Š” ๊ฐœ๋…
    • ์˜ค๋ฒ„๋ ˆ์ด ๋„คํŠธ์›Œํฌ์˜ ์›Œํฌ๋กœ๋Š” ์–ธ๋”๋ ˆ์ด ๋„คํŠธ์›Œํฌ์™€์˜ ํ†ต์‹ ์„ ์œ„ํ•ด NAT, LB ๋“ฑ์„ ํ•„์š”๋กœํ•œ๋‹ค
    • ๋‹ค์†Œ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ์กด์žฌํ•œ๋‹ค
  • NAT(Network Addreess Translation)
    • SNAT(Source ..)
      • ์†Œ์Šค ์–ด๋“œ๋ ˆ์Šค๋ฅผ ๋ณด๋”์— ์žˆ๋Š” ๋ผ์šฐํ„ฐ์˜ ์ž์ฒด IP๋กœ ๊ต์ฒด
      • ๋Œ์•„์˜ฌ๋•Œ ๋ผ์šฐํ„ฐ๊ฐ€ ๋ฐ›์•„์„œ ๋งคํ•‘ ์‹œ์ผœ๋†“์€ ์›๋ž˜์˜ ํ”„๋ผ์ด๋น— IP ๋กœ ๊ต์ฒด
    • DNAT(Destination...)
  • MTU(Maximum Transmission Unit)
    • ๋„คํŠธ์›Œํฌ ๋งํฌ๊ฐ„ ํ•œ๋ฐฉ์— ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋Š” ํŒจํ‚ท ์‚ฌ์ด์ฆˆ
    • ์ผ๋ฐ˜ ์ ์œผ๋กœ ๊ฐ™๊ฒŒ ์„ค์ •๋œ๋‹ค(1500 bytes)
    • TCP๋Š” MTU๋ฅผ ํ•™์Šตํ•œ๋‹ค
    • TCP๋Š” MTU ๋ณด๋‹ค ํฐ ํŒจํ‚ท์„ ์ชผ๊ฐ ๋‹ค
    • ํ”„๋ž˜๊ทธ๋จผํŠธ๋ฅผ ์ชผ๊ฐœ๋Š” ์ž‘์—…์€ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ํฌ๋‹ค
    • MTU๊ฐ€ ํฌ๋ฉด CPU ์‚ฌ์šฉ์œจ์€ ์ ์–ด์ง„๋‹ค

About Kubernetes Networking

  • Goal
    • The fundamental network behaviors the Kubernetes network model defines.
    • How Kubernetes works with a variety of different network implementations.
    • What Kubernetes Services are.
    • How DNS works within Kubernetes.
    • What โ€œNAT outgoingโ€ is and when you would want to use it.
    • What โ€œdual stackโ€ is.
  • ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํŒŒ๋“œ๊ฐ„ ํ†ต์‹ ์—๋Š” NAT์ด ์กด์žฌํ•˜์ง€ ์•Š์Œ
  • isolation ์€ policy ๋กœ ๊ตฌํ˜„ํ•˜์—ฌ ๋„คํŠธ์›Œํฌ์˜ ๋‹จ์ˆœ์„ฑ์„ ๊ฐ€์ ธ๊ฐ„๋‹ค -> flat network isolation ์ด ์—†๋‹ค๋Š” ์˜๋ฏธ
  • ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋Š” ๊ฑฐ์˜์•ˆ์“ฐ์ด๊ธดํ•˜์ง€๋งŒ host port -> pod port ๋งคํ•‘ ๋˜๋Š” host ip ๋ฅผ ์ด์šฉํ•œ ๋„คํŠธ์›Œํฌ๋ฅผ ์ง€์›
  • kubenet ์ด๋ผ๋Š” first party ๊ฐ€ ์žˆ์ง€๋งŒ ์•ˆ์“ฐ๊ณ  cni ๋ฅผ ์‚ฌ์šฉ
  • cni ์˜ ๋‘๊ฐ€์ง€ ์ฑ…์ž„
    • ipam ์„ ํ†ตํ•ด pod ์— ip ํ• ๋‹น
    • ํŒŒ๋“œ๊ฐ„ ํ†ต์‹ 
  • Kubernetes DNS <-> virtual ip(cluster ip?)
  • kube-proxy ๊ฐ€ vip ๋ฅผ ๋กœ๋“œ๋ฐธ๋Ÿฐ์‹ฑ
  • nodeport ์„œ๋น„์Šค๋Š” every node
  • Note that when using Calico in on-prem deployments you can also advertise service IP addresses, allowing services to be conveniently accessed without going via a node port or load balancer.
  • Kubernetes dns ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ coreDNS๋ฅผ ํ†ตํ•ด์„œ๋น„์Šค๋กœ ๊ตฌํ˜„(์ผ๋ฐ˜ ํŒŒ๋“œ)
  • ์ผ๋ฐ˜์ ์œผ๋กœ ์˜ค๋ฒ„๋ ˆ์ด ๋„คํŠธ์›Œํฌ์˜ ํด๋Ÿฌ์Šคํ„ฐ๊ฐ„ ํ†ต์‹ ์—์„œ SNAT ์ด node ์—์„œ ์ด๋ฃจ์–ด์ง„๋‹ค pod -> node

Determine best networking option

  • flat netowrk ์ด๋ฏ€๋กœ network segmentation ์€ policy ๋ฅผ ํ†ตํ•ด ๊ตฌํ˜„๋œ๋‹ค

  • cni plugins

    • network
      • adding/deleting from pod network
      • creating/deleting pod's network interface
      • connecting/disconnecting
    • ipam
      • allocating/releasing ip addresses for pods when they are created or deleted
      • ํ”Œ๋Ÿฌ๊ทธ์ธํ˜น์€ cloud ๋ฒค๋”์— ๋”ฐ๋ผ ํ•˜๋‚˜์˜ ๋…ธ๋“œ์— ์—ฌ๋Ÿฌ cidr ๊ฐ€ ํ• ๋‹น๋  ์ˆ˜ ์žˆ์Œ
  • kubenet

    • ๊ธฐ๋ณธ์ด์ง€๋งŒ node ๊ฐ„ ํ†ต์‹ ์„ ๊ตฌํ˜„ ์•ˆํ•ด๋†“์•˜๋‹ค
  • overlay network

    • underlay network ์œ„์— ์˜ฌ๋ผ๊ฐ€์„œ ํŒจํ‚ท์„ ์ธ์บก์А๋ ˆ์ด์…˜
    • ์ธ์บก์А๋ ˆ์ด์…˜ ํ”„๋กœํ† ์ฝœ๋กœ๋Š” vxlan, ip in ip ๊ฐ€ ์œ ๋ช…ํ•˜๋‹ค
    • underlay network ์— ๋Œ€ํ•œ ๋ณ€๊ฒฝ ์—†์ด ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•œ๊ฒŒ ์žฅ์ 
    • ๋‹จ์ 
      • pod ip ๊ฐ€ ํด๋Ÿฌ์Šคํ„ฐ ๋ฐ–์—์„œ ๋ผ์šฐํŒ… ๋˜์ง€ ์•Š์Œ
      • ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ๋ฐœ์ƒ, ํŒจํ‚ท ๊ฐ์‹ธ๊ณ  ํ’€๊ณ  ํ•ด์•ผํ•ด์„œ
    • ์‹ฑ๊ธ€ ์„œ๋ธŒ๋„ท์—์„œ๋Š” ์ธ์บก์А๋ ˆ์ด์…˜์ด ๋˜์ง€ ์•Š์•„ ํผํฌ๋จผ์Šค ์˜ํ–ฅ์ด ์—†๋‹ค๊ณ  ํ•จ
    • ์„œ๋ธŒ๋„ท ๋งˆ๋‹ค ๋‹ค๋ฅธ ์ธ์บก์А๋ ˆ์ด์…˜์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Œ
  • IP routablility outside of cluster, cni ๊ตฌํ˜„์— ๋”ฐ๋ฅธ

    • not routable
      • inside -> outside
        • pod ip -> host ip SNAT์ด ํ˜ธ์ŠคํŠธ์— ์ผ์–ด๋‚จ
      • outside -> inside
        • kubernetes service or ingress ๋ฅผ ํ†ตํ•ด์„œ๋งŒ ์ ‘๊ทผ๋˜๋ฉฐ pod ip ๋กœ๋Š” ์ ‘๊ทผ์ด ๋ถˆ๊ฐ€
    • routable
      • SNAT ์ด ๋ถˆํ•„์š”ํ•˜๋ฉฐ service, ingress ์—†์ด direct ๋กœ pod ์— ์ ‘๊ทผ ๊ฐ€๋Šฅ
      • ๋‹จ์ ์€ broader network ์—์„œ ip๊ฐ€ unique
  • overlay network ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์ผ๋ฐ˜์ ์œผ๋กœ ์™ธ๋ถ€๋ผ์šฐํŒ…์ด ๋ถˆ๊ฐ€๋Šฅ

  • overlay network ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ + ์™ธ๋ถ€๋ผ์šฐํŒ…์ด ๊ฐ€๋Šฅ ํ•œ ๊ฒฝ์šฐ

  • BGP Border Gateway Protocol

  • Host local ipam

    • ํ˜ธ์ŠคํŠธ๋งˆ๋‹ค ipam (a/24) ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์–ด์„œ ์ดํ•ดํ•˜๊ธฐ ํŽธํ•˜๋‹ค
    • ip ํ• ๋‹น์ด ๋น„ํšจ์œจ์ ์ด๋‹ค (๋…ธ๋“œ๋ณ„ a/24 ์ด๊ธฐ ๋•Œ๋ฌธ)
  • vxlan ์€ BGP๋ฅผ ์ด์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค, ipinip๋ณด๋‹ค ํŒจํ‚ท ์‚ฌ์ด์ฆˆ๊ฐ€ ์กฐ๊ธˆ ๋” ํฌ๋‹ค, ipip๊ฐ€ ์ง€์›๋˜์ง€ ์•Š๋А ๊ณณ์—์„œ ์‚ฌ์šฉ๋œ๋‹ค

  • ipinip ipv4 ๋งŒ์ง€์›

  • encapsulation mode ๋Š” cross subnet ์ด ํผํฌ๋จผ์Šค์ƒ ์ข‹๋‹ค

  • host ๊ฐ€ l3 ๋ผ์šฐํŒ… (veth)

โš ๏ธ **GitHub.com Fallback** โš ๏ธ