🀄
Kubernetes簡単まとめ
Kubrenetesとは
- コンテナ化されたアプリのデプロイ、スケーリング等の管理を自動化するプラットフォーム。
- Docker単体では複数ホストで構成される規模の大きなプロダクション利用に耐えうるシステム構築は難しいので、Kubernetesを利用するのが一般的である。
- k8s(クベネティス、クーバネティス)との略称で呼ばれる。
Kubernetesのメリット
-
複数ノード管理、 コンテナのスケジューリング
- どのコンテナノードに配置するかを決定する。
- I/O処理が多いコンテナをSSDディスクのノードに配置するなどの制御が可能
-
ローリングアップデート
-
稼動状態を維持しながら、1台ずつ順番にアップデートできる
-
自動スケーリング
- k8sはコンテナクラスタを形成し、複数ノードを管理する。
- コンテナイメージを元にk8s上にデプロイする際、同じコンテナイメージを元にした複数コンテナをデプロイすることで、負荷分散や耐障害性の確保が可能。
- CPUやメモリの空き具合によってノードの増減を自動的に行う。
-
コンテナ死活監視、障害のセルフヒーリング
-
コンテナプロセス監視を行っており、停止検知すると自動的にコンテナを再デプロイする。
-
サービスディスカバリ
-
サービスの IP アドレスにマッピングされた自動生成サービス名(DNSみたいなもの)
-
データ管理
-
k8sのバックエンドのデータストアはetcd(分散KVS)
-
クラスタを組んで安全かつ冗長化されて保存される
-
Infrastructure as Code
- YMALで記述したコード(マニフェスト)によってデプロイするコンテナやリソースを管理できる。
Kubernetes環境について
環境は大きく3種類ある。
開発、ステージング、プロダクションに使用する環境は同じにするのが吉。
ローカルKubernetes (プロダクション環境には不向き)
- ローカル1台に構築して使用する
- Minikube
- Docker Desktop for Mac/Win
- kind (推奨)
- kindは、パッケージマネージャのHomebrewを使用してインストールするのが吉。
Kubernetes構築ツール
- 任意環境(オンプレ/クラウド)にクラスタを構築して使用する
- kubeadm
- Ansible Kubespray
- OpenStack Magnum
- Rancher (推奨)
マネージドサービス
- クラウドが提供するクラスタを構築して使用する
- GKE (GCP)
- AKS (Azure)
- EKS (AWS)
番外偏としてPlay with KubernetesというWEBサービスがある。
WEBブラウザで手軽にk8sを試すことができるためとても便利である。
気が向いたらPlay with Kubernetesについても記事を書きたいと思います。
以上です。
Discussion