Upgrade to Pro — share decks privately, control downloads, hide ads and more …

「L3以下は魔法で動いている!」と言いながらiptablesとkube-proxyを読んでみた話

928b1395afedebb5ee48d44ab917c5f1?s=47 RyuSA
December 22, 2020

 「L3以下は魔法で動いている!」と言いながらiptablesとkube-proxyを読んでみた話

社内LTでKubernetesのServiceを少し深堀した話を再編

928b1395afedebb5ee48d44ab917c5f1?s=128

RyuSA

December 22, 2020
Tweet

Transcript

  1. と言いながら iptablesと kube-proxyを読んでみた話 L3以下は魔法で動いている!!!

  2. 本日のおはなし

  3. Service なにもわからない

  4. 知っていること - Serviceはkube-proxyが深くかかわっている - Serviceはデフォルトでiptablesを使っているらしい - L3以下は魔法で動いている 知らないこと - iptablesの使いどころさん

    - kube-proxyが何をしている?
  5. 実際に見てみる

  6. (DeploymentとServiceを作成) Podを3つとSvcを作成

  7. Workerノードのiptablesを眺める

  8. iptables わからん \(^o^)/ 我、アプリ(?)の人間ぞ??

  9. None
  10. 送信元192.168.0.0/16 から 送信先10.109.35.24/32 宛の TCPを転送しているっぽい?

  11. 送信元192.168.0.0/16 から 送信先10.109.35.24/32 宛の TCPを転送しているっぽい? nginxサービスのIPアドレス Kubeadmで設定したPodSubnet

  12. None
  13. 確率で3つの場所に転送している……?

  14. None
  15. 転送の最終宛先は各PodのIPアドレス

  16. TCP発射 ↓ SvcのIPアドレス着弾 ↓ 確率(静的)分散 ↓ DNAT ↓ (魔法が発動する) ↓

    PodのIPアドレスに転送
  17. 完全に理解した (なにもわかっていない)

  18. ということでkube-proxy読んできた

  19. None
  20. None
  21. 更新処理

  22. None
  23. eventhandlers?

  24. None
  25. iptablesのProxiser

  26. None
  27. 同期している?

  28. None
  29. どこかで初期化されているはず

  30. None
  31. これが走る

  32. None
  33. それっぽくない?

  34. None
  35. 確率計算とレコード追加 Endpoint一覧をforで回す PodへのDNAT

  36. 完全に理解した (なにもわからなくなった)

  37. おしまい