Googleの社内環境がオープンソース化されたコンテナ管理基盤、Kubernetes(クバネティス)とは?
こんにちわ
がじぇったー (@hackmylife7) | Twitter
です。
今日はそもそもKubernetesとはなんぞや、という点をまとめていきます。
TL;DR(要約)
- KubernetesはGoggleが社内で構築/運用していたコンテナ基盤をベースにOpen Source化されたアプリケーションのオーケストレーションツール
- コンテナ化されたアプリケーションのDeploy/管理を容易に行うことができる
- 従来のインフラ構築/運用で必要だった作業の多くが自動化される
- Kubernetesは宣言型である
- ユーザはYAMLファイル(マニフェストファイル)にアプリケーションの実行環境がどういう状態であって欲しいかを宣言し、Kubernetesは管理しているクラスタの状況がマニフェストファイルと相違があれば、変更を加える
What is Kubernetes?
k8sとは
- Open Sourceのコンテナオーケストレーション(※1)Platform
- もともとは米Googleの社内インフラ基盤が2015年Open Source化され、CNCF(※2)に管理が移管された経緯をもつ
※1 オーケストレーション(英: orchestration)は、複雑なコンピュータシステム/ミドルウェア/サービスの配備/設定/管理の自動化を指す用語。
※2 CNCF is an open source software foundation dedicated to making cloud native computing universal and sustainable.
k8sの特徴
k8sは開発者(Dev)にとって何が嬉しいのか?
- アプリケーションの実行/動作/管理環境を容易かつ迅速に手に入れることができる
k8sは管理者(Ops)にとって何が嬉しいのか?
- インフラの構築/変更管理が容易
- 従来のVMベースの環境で必要だった多くのオペレーション作業が自動化される
- リソース管理
- 手動作業によるインフラ変更作業
- アクセス増加時のズケーリング作業
- 各Nodeのリソース管理
- 障害時の復旧
- ロードバランシング
- ベンダーの環境に依存しない
- 従来のVMベースの環境で必要だった多くのオペレーション作業が自動化される
VMベースのインフラ環境だと、アクセスが増えた場合のスケーリング、サービスが停止した場合のロードバランサからの切り離しとMWの再起動等が必要になるが、k8sではそれらのインフラオペレーションが必要がなくなるよう機能が提供されている
ベンダの環境に依存しない、というのはよく特徴として語られますが、実際にサービスをデプロイする際はNWの設定や、バックアップ、データベース等をクラウドベンダの他のサービスのものと組み合わせるので依存度は高くなるとおもいます
サポートするコンテナランタイム(実行環境)
- Docker Engine
- rkt
- Windows Server Containers
宣言型
- k8sは宣言型の特性を持つ
AnsibleやTerraformをやられていた方は宣言性という性質がよくわかると思います。
※1 Kubernetesではこのyamlファイルをマニフェストファイルという
マニフェストファイルの例
apiVersion: v1 kind: Pod metadata: name: static-web labels: role: myrole spec: containers: - name: web image: nginx ports: - name: web containerPort: 80 protocol: TCP
k8sはPaasではない
- k8sはコンテナのオーケストレーションツールであり、アプリケーションのオーケストレーションツールではない
-
- アプリケーション間の依存関係はk8sは考慮してくれない。つまりアプリケーションのDeployの順番は利用者が考える必要がある
CI(継続的インテグレーション)の機能は備わっていない
- CIツールの機能は備わっていない。そのため、Deployを行うにはSpinaker, Jenkins等を用いる必要がある
k8sを構成する要素
Kubernetesを構成する要素は多岐に渡ります。
それぞれの要素についても別記事でまとめていきます。
- Node
- Namespace
- ResourceQuota
- Pod
- Controller
- Service
- Volume
- PersistentVolume
- PersistentVolumeClaim
- Secret
- ConfigMap
Kubernetesの他の記事へは下記の一覧から飛べるようにしているので参照ください。