クラウドネイティブ技術の発展に伴い、ますます多くのエンジニアがコンテナとKubernetesによってもたらされる運用の便利さと利点に注目しています。運用チームはKubernetesの強力な推進者となり、多くの企業でクラウドネイティブ技術の実践が進んでいます。
初期の段階では、多くの企業はテストサービスのデプロイメントにKubernetesを使用しています。なぜなら、Kubernetesを使用することで迅速にテスト環境を構築でき、テストリソースの消費を削減できるからです。さらに初期段階の企業ではリソースの制約から、短期間でフルフィジカルのCI/CDパイプラインシステムを構築することが困難な場合もあります。
![](https://i-study.jp/blog/wp-content/uploads/sites/2/2023/06/image.png)
しかし、Kubernetesに基づく既存のCI/CDシステムやソリューション(例:Rancher、Kubesphere、GitLab CI/CD Pipelineなど)が多数存在するため、これらの問題を解消できます。
また、大手公有クラウドサービスプロバイダも独自のコンテナエンジン(EKS、AKS、GKEなど)を提供しており、これを使用すればユーザーは手軽にKubernetesクラスタを構築できるため、企業はそれほど手間をかけずにKubernetesをデータセンターの基盤として選択することが可能となっております。
![](https://i-study.jp/blog/wp-content/uploads/sites/2/2023/06/image-5.png)
すでにKubernetesはコンテナ管理ツールの事実上の標準となっています。そのため将来的にデータセンター(DC)の基盤がkubernetesとなることは、容易に想像できます。実際には、Kubernetesの下位にはネットワークやクラスタの規模などに依存しますので、Kubernetesのデプロイメントの計画はネットワークの計画とクラスタの計画と一致するべきです。
初期の段階でKubernetesのネットワーク計画とクラスタ計画が一致していないと、システム規模が拡大するにつれて問題が出てきます。例えば、クラスタのサイズ設定が不適切であったり、IPリソースが不足していたり、IPの重複割り当てによりインスタンスが通信できなかったり、クラスタ内で利用可能なゾーンのノードが存在し、インスタンス間の遅延が大きいなどの問題があります。
そのため、Kubernetesを本番環境にデプロイする前に、ネットワークの計画に基づいてKubernetesクラスタの建設計画を立てる必要があります。
- ネットワーク計画
Kubernetesクラスタの構築では、クラスタ管理者がPod CIDRとService CIDRの2つのネットワークセグメントを提供する必要があります。- Pod CIDR: 新しいPodが作成されるたびに、クラスタCNIプラグインがPod CIDRからIPを割り当てます。
- Service CIDR: ClusterIPタイプの新しいServiceがクラスタ内で作成されるたびに、ServiceコントローラーがService CIDRからIPを割り当てます。
- クラスタ計画:
クラスタ内の計算ノードは可能な限りデータセンター(DC)を跨がず、絶対にAZやRegionを跨がないようにしてください。これは、クラスタの安定性とパフォーマンスを維持するための重要な考慮事項です。
クラスタのコントロールノードはデータセンター(DC)内の異なるルーム、異なるラックのマシンから選ばれます。大きなメモリを持つマシンが選ばれるのは、クラスタが4000〜5000ノードに拡大した後にメモリ使用量が急増する可能性があるからです。
結論として、Kubernetesを効果的に利用し、データセンター(DC)の運用を効率化し、柔軟にスケールアップするためには、ネットワーク計画とクラスタ計画の両方が必要です。これらはクラウドネイティブ戦略の一部であり、全体的な成功のための重要な要素です。