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

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

RyuSA
December 22, 2020

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

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

RyuSA

December 22, 2020
Tweet

More Decks by RyuSA

Other Decks in Technology

Transcript

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

    View Slide

  2. 本日のおはなし

    View Slide

  3. Service なにもわからない

    View Slide

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

    View Slide

  5. 実際に見てみる

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  9. View Slide

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

    View Slide

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

    View Slide

  12. View Slide

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

    View Slide

  14. View Slide

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

    View Slide

  16. TCP発射

    SvcのIPアドレス着弾

    確率(静的)分散

    DNAT

    (魔法が発動する)

    PodのIPアドレスに転送

    View Slide

  17. 完全に理解した
    (なにもわかっていない)

    View Slide

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

    View Slide

  19. View Slide

  20. View Slide

  21. 更新処理

    View Slide

  22. View Slide

  23. eventhandlers?

    View Slide

  24. View Slide

  25. iptablesのProxiser

    View Slide

  26. View Slide

  27. 同期している?

    View Slide

  28. View Slide

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

    View Slide

  30. View Slide

  31. これが走る

    View Slide

  32. View Slide

  33. それっぽくない?

    View Slide

  34. View Slide

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

    View Slide

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

    View Slide

  37. おしまい

    View Slide