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

kube-vipで作るお手軽 高可用クラスター ~外出しHAProxyからの卒業~ / Say good-bye to HAProxy and Keepalived with kube-vip on your K8s

Kohei Ota
February 25, 2021

kube-vipで作るお手軽 高可用クラスター ~外出しHAProxyからの卒業~ / Say good-bye to HAProxy and Keepalived with kube-vip on your K8s

Kohei Ota

February 25, 2021
Tweet

More Decks by Kohei Ota

Other Decks in Technology

Transcript

  1. kube-vipで作るお手軽
    高可用クラスター
    ~外出しHAProxyからの卒業~
    Presented by @_inductor_

    View full-size slide

  2. じこしょうかい
    apiVersion: inductor.apps/v1
    kind: Person
    metadata:
    name: “Kohei Ota”
    Twitter: “@_inductor_”
    GitHub: “@inductor”
    org: “HPE”
    role: “Solutions Architect”
    community: “CNCF Ambassador, CloudNative Days organizer, Docker Meetup
    Tokyo organizer”
    spec:
    replicas: 1

    View full-size slide

  3. 免責事項
    - 今回作成するクラスターはkubeadmの利用を前提としています
    - kube-vip v0.3.1時点での要求
    - kube-vipについて説明をしますが、HAProxyやKeepalivedについての説明はLTな
    ので省略します
    - kube-vipはまだバージョンが若いので、今回の手順や構成図は今後変更される可
    能性があります

    View full-size slide

  4. HAProxyからの卒業?

    View full-size slide

  5. これまでのオンプレKubernetesにおける
    高可用性クラスターの基本構成

    View full-size slide

  6. Kubernetesのノード
    Kubernetes外リソース

    View full-size slide

  7. HAProxy+Keepalivedによるロードバランシング
    - ふつーにオンプレでサーバー建てるのと同じHAProxy構成
    - バックエンドにKubernetes Control planeを複数台配置
    - HAProxyはVM/ベアメタルで配置するのでKubernetesとは別で管理
    - Kubernetes上でHAProxyの管理はしない
    ※このHAProxyはIngressとは違い、kube-apiserverを冗長化するための
    ロードバランサーです

    View full-size slide

  8. HAProxy+Keepalivedによるロードバランシング
    - ふつーにオンプレでサーバー建てるのと同じHAProxy構成
    - バックエンドにKubernetes Control planeを複数台配置
    - HAProxyはVM/ベアメタルで配置するのでKubernetesとは別で管理
    - Kubernetes上でHAProxyの管理はしない
    ※このHAProxyはIngressとは違い、kube-apiserverを冗長化するための
    ロードバランサーです
    Kubernetesで全部管理したい!!!!
    ・・・したくない???

    View full-size slide

  9. そこでkube-vip

    View full-size slide

  10. kube-vip
    - kube-vipはKubernetesの「中と外」に負荷分散機能を与える OSS
    - api-serverの負荷分散
    - HAProxyの代替
    - Type: LoadBalancer機能の提供(with Plunder Cloud Provider)
    - MetalLBなどの代替
    これらの機能が「ハイブリッドに」提供できるのが便利

    View full-size slide

  11. kube-vip
    - kube-vipはKubernetesの「中と外」に負荷分散機能を与える OSS
    - api-serverの負荷分散
    - HAProxyの代替
    - Type: LoadBalancer機能の提供(with Plunder Cloud Provider)
    - MetalLBなどの代替
    これらの機能が「ハイブリッドに」提供できるのが便利

    View full-size slide

  12. kube-vip
    - kube-vipはKubernetesの「中と外」に負荷分散機能を与える OSS
    - api-serverの負荷分散
    - HAProxyの代替
    - Type: LoadBalancer機能の提供(with Plunder Cloud Provider)
    - MetalLBなどの代替
    これらの機能が「ハイブリッドに」提供できるのが便利
    Tanzu Kubernetes Grid(🥚かけ🍚)でも
    バージョン1.2から採用

    View full-size slide

  13. kube-vipの構成

    View full-size slide

  14. kube-vipの構成

    View full-size slide

  15. 192.168.0.100
    (VIP)
    192.168.0.201 192.168.0.202 192.168.0.203
    Kubernetes control plane nodes
    Incoming traffic
    Global Endpoint
    192.168.0.204 192.168.0.205 192.168.0.206
    Kubernetes control worker nodes
    kubectl
    https://global-endpoint:6443
    https://192.168.0.100:6443
    Static Pod
    or
    DaemonSet

    View full-size slide

  16. kube-vipの構成
    - Static Pod
    - 単一の構成なら一番簡単
    - kubeadmでクラスターを作るときに Pod manifestを/etc/kubernetes/manifests配下に配置
    - 各コントロールプレーンノードに配置もできるっぽいけどやり方がよく分からない()
    - DaemonSet(推奨)
    - コントロールプレーンごとに LB Podが立ち上がってVIPでやりとりするので本番向け
    他にも、APIのLBだけ構成するかServiceでも使うようにしたいか、LBの構成にBGPを
    使うかARPを使うかや、DDNS、DHCPなど様々な動的設定もできるようになっている
    (詳細はドキュメント参照)

    View full-size slide

  17. さいごに
    - 使ってみた記事を英語で上げてます
    https://inductor.medium.com/say-good-bye-to-haproxy-and-keepalived-with-k
    ube-vip-on-your-ha-k8s-control-plane-bb7237eca9fc
    - 説明の都合上一番シンプルなStatic Pod + API LBのみにしましたが、実際にPod
    で立ち上がってきたので面白かったです(小並感)

    View full-size slide

  18. 手軽におうちで
    高可用クラスター生活が
    捗りますね!!!!!

    View full-size slide

  19. ご清聴ありがとうございました

    View full-size slide