Kubernetes(クバネティス / K8s) は、コンテナ化されたアプリケーションを自動デプロイ、スケーリング、管理するためのオープンソースのコンテナオーケストレーションツールです。
基本概要
- 主な目的:
コンテナの運用を簡素化し、大規模なシステムでも安定したアプリケーションの実行を可能にする。
システム全体の統括をして、複数のコンテナを管理します。複数台の物理的マシン、または仮想マシンがあり、さらに、その物理的/仮想マシンの中に複数のコンテナがある場合などに活用する。 - 開発元:Google(現在はCNCF – Cloud Native Computing Foundation によって管理)
- GitHub: https://github.com/kubernetes/kubernetes
- ライセンス:Apache License 2.0
- 公式サイト:Kubernetes
主な機能
- 自動デプロイとローリングアップデート
- コンテナアプリのデプロイ・更新を自動化
- ローリングアップデートやブルーグリーンデプロイが可能
- 負荷分散とサービスディスカバリ
- 複数のコンテナにトラフィックを分散
- 内部でサービス名を通じたディスカバリ機能を提供
- 自己修復
- 異常なコンテナを自動で再起動
- ヘルスチェックを行い、正常なコンテナのみ動作
- オートスケーリング
- リソース負荷に応じて自動的にPod(コンテナ群)の数を増減
- ストレージ管理
- ローカルディスク、クラウドストレージ(AWS EBS, GCP Persistent Disk など)を統合的に管理
- アクセス管理とセキュリティ
- RBAC(Role-Based Access Control)でアクセス権を制御
- ネットワークポリシーを活用した通信制御
主要なコンポーネント
コンポーネント | 説明 |
---|---|
Pod | 最小単位のコンテナグループ(コンテナと(ボリューム)がセットになったもの) |
Node | Podを実行するサーバー(物理 or 仮想) |
Cluster | 複数のNodeから構成される環境 |
Deployment | アプリケーションのデプロイ方法を定義 |
Service | ネットワーク越しにPodを管理(ロードバランサー(負荷分散装置)の役割) |
Ingress | 外部からのHTTP/HTTPSリクエストをルーティング |
ConfigMap/Secret | 環境変数や機密情報の管理 |
PersistentVolume(PV) | 永続ストレージの管理 |
Kubernetes クラスターのコンポーネント

Ingress がすべてのトラフィックを 1 つのサービスに送信する例

Kubernetesを使うメリット
- 開発と運用の分離
- マイクロサービスの管理が容易
- マルチクラウド対応(AWS, GCP, Azure など)
- インフラ管理の自動化による運用負荷削減
- スケーラブルなシステム構築が可能
実際の利用例
- マイクロサービスアーキテクチャの運用
- クラウドネイティブアプリケーション
- データ分析や機械学習ワークロードの実行
- エッジコンピューティング
- CI/CD(継続的インテグレーション/デリバリー)の基盤
Kubernetesは、クラウド環境やオンプレミス環境でのコンテナ管理を効率化し、DevOpsやSREにおいて欠かせない技術となっています。
目次
参考
- 公式サイト:Kubernetes
https://kubernetes.io/ - 公式ドキュメント:Kubernetes Docs
https://kubernetes.io/docs/home/ - 公式ドキュメント:Kubernetes チュートリアル
https://kubernetes.io/ja/docs/tutorials/ - 公式ドキュメント:Deploy and Access the Kubernetes Dashboard
https://kubernetes.io/docs/tasks/access-application-cluster/web-ui-dashboard/ - GitHub:kubernetes
https://github.com/kubernetes/kubernetes - Docker(コンテナの実行環境)
https://www.docker.com/
コメント