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

GKE -IP体系のはなし-

GKE -IP体系のはなし-

朝のLT向けに作った、GKEのIP体系設計の話

Yasuhiro Murata

November 27, 2019
Tweet

More Decks by Yasuhiro Murata

Other Decks in Technology

Transcript

  1. GKE – IP体系のはなし -
    morn ng alk
    Yasuhiro Murata
    2019.11.27

    View full-size slide

  2. GKEのIP体系設計
    ミスっちゃいました

    View full-size slide

  3. GKEのIP体系設計ミスっちゃいました
    u Shared VPC下でVPC-nativeなPrivateクラスタを構築しました
    Host Project
    Sub Project
    VPC Peering
    GCP Managed-Project
    my-subnet
    VPC Managed VPC
    GKE-master
    GKE-node-pool
    GKE-pod
    GKE-service

    View full-size slide

  4. GKEのIP体系設計ミスっちゃいました
    u 今回IP設計を行ったのは4箇所
    Host Project
    Sub Project
    VPC Peering
    GCP Managed-Project
    my-subnet
    VPC Managed VPC
    GKE-master
    GKE-node-pool
    GKE-pod
    GKE-service
    ①IP address range
    ②Master address range
    ③Pod address range
    ④Service address range

    View full-size slide

  5. GKEのIP体系設計ミスっちゃいました
    u どんな設計にしたかというと...
    ① IP address range → 利用できるIP範囲に制限もあり「/21」
    ② Master address range → ドキュメント合わせる形で「/28」
    ③ Pod address range → Pod数に余裕をみて「/20」
    ④ Service address range → Service数に余裕をみて「/20」

    View full-size slide

  6. どこをミスったの?

    View full-size slide

  7. どこをミスったの?
    u PodのIP設計がNGでした
    ① IP address range → 利用できるIP範囲に制限もあり「/21」
    ② Master address range → ドキュメント合わせる形で「/28」
    ③ Pod address range → Pod数に余裕をみて「/20」
    ④ Service address range → Service数に余裕をみて「/20」

    View full-size slide

  8. どこをミスったの?
    u こんな感じになると思っていました
    Sub Project
    GKE-node
    GKE-pod
    GKE-service
    GKE-node
    GKE-pod
    GKE-service
    GKE-node
    GKE-pod
    GKE-service
    GKE-node
    GKE-pod
    GKE-service
    GKE-node
    GKE-pod
    GKE-service
    GKE-node
    GKE-pod
    GKE-service
    Podのアドレスは必要に応じて
    各ノードに割り当てられる(嘘⼄)
    node-pool node-pool

    View full-size slide

  9. 違いました...

    View full-size slide

  10. 違いました...
    https://cloud.google.com/kubernetes-engine/docs/how-to/alias-ips?hl=ja#cluster_sizing

    View full-size slide

  11. つまり...

    View full-size slide

  12. つまり...
    u こういうこと
    Sub Project
    GKE-node
    GKE-pod
    GKE-service
    GKE-node
    GKE-pod
    GKE-service
    GKE-node
    GKE-pod
    GKE-service
    GKE-node
    GKE-pod
    GKE-service
    GKE-node
    GKE-pod
    GKE-service
    GKE-node
    GKE-pod
    GKE-service
    node-pool node-pool
    /24
    /24
    /24
    /24
    /24
    /24
    「/24」ごとにNodeへ割り当て

    View full-size slide

  13. つまり...
    u 必要なIP数は「Node数 * 256」で計算しなければなりませんでした
    l Pod address range
    l Pod数に余裕をみて(みたつもりで)「/20」と定義していた
    l 利用可能なIP数は「4096」個
    l 作成可能なNode数はたったの「
    16」個

    View full-size slide

  14. This is 知見

    View full-size slide

  15. This is 知見
    u GKEのIP体系設計で気をつけなければいけないこと
    l Pod address rangeは「/24」で各Nodeに割り振られる
    l 必要なPodのIPは「Node数 * 256」で計算すること

    View full-size slide

  16. そもそも

    View full-size slide

  17. 業務内容ごとに
    Node-poolを分割したのが
    Node数増大の根源

    View full-size slide

  18. やっぱアプリとインフラは
    切り離して考えるべきだったよね

    View full-size slide

  19. いったん
    Fin.
    後日談へ続く...

    View full-size slide

  20. さっそくの
    後日談

    View full-size slide

  21. 後日談
    https://cloud.google.com/kubernetes-engine/docs/how-to/flexible-pod-cidr?hl=ja
    u 最大Pod数を減らすことで割り当てCIDR範囲を小さくすることが可能

    View full-size slide