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 full-size slide

  2. 本日のおはなし

    View full-size slide

  3. Service なにもわからない

    View full-size slide

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

    View full-size slide

  5. 実際に見てみる

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  13. TCP発射

    SvcのIPアドレス着弾

    確率(静的)分散

    DNAT

    (魔法が発動する)

    PodのIPアドレスに転送

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  16. 更新処理

    View full-size slide

  17. eventhandlers?

    View full-size slide

  18. iptablesのProxiser

    View full-size slide

  19. 同期している?

    View full-size slide

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

    View full-size slide

  21. これが走る

    View full-size slide

  22. それっぽくない?

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  25. おしまい

    View full-size slide