zerosant memo

zerosantのメモ帳

最終更新日: 2022.02.26
公開日: 2022.02.26

Kubernetes について

Kubernetes についてざっくりググったのでメモしておく。

Kubernetes とは

コンテナ仮想化ソフトウェア(Dockerなど)の運用管理・自動化を行うために開発されたオープンソースソフトウェア。

コンテナは単体でアプリケーションを実行できるが、コンテナを管理したり他のサーバと連携させたりする機能は持っていない。

コンテナオーケストレーションツールのひとつ(コンテナオーケストレーションとは、複数あるコンテナを管理する技術のこと)。複数のコンテナを運用する場合、ネットワークやストレージなどの連携管理を行う必要がある。コンテナオーケストレーションツールはこれらの管理を行ってくれる。コンテナがダウンしたり、アプリケーションに高負荷がかかったりした場合もスムーズに運用できる。

Kubernetes で登場する用語

  • Pod: 複数のコンテナを管理する。Kubernetesで実行できるアプリケーションの最小単位。
  • Node: 複数のPodをまとめる
  • クラスター: Nodeが集まったもの

Kubernetes Image (画像出典: Kubernetesのコンポーネント | Kubernetes

Kubernetes のメリット

たくさんあるが3つピックアップする。

  • サービスディスカバリー
  • 自己回復機能
  • ストレージ管理

以下それぞれの話。

サービスディスカバリー

サーバにあるアプリケーションのポート番号やIPアドレスなどを知ることができる。また、どのようなアプリケーションが動いているのかを知ることもできる。

自己回復機能

コンテナがダウンしてしまったり誤って削除してしまったりした場合も自動で回復させることができる。(耐障害性が強い)

ストレージの管理

ストレージが管理できる。データはコンテナに記録され、有効期限が定められた状態でPod内に保存される。

Docker との違い

Dockerは、アプリケーションをコンテナの中で管理し、実行できるようにする実行環境およびツール群のこと。Kubernetesはクラスターという場所で実行されるのに対し、Dockerはシングルノードで実行される。クラスターとは、コンテナの配置や削除を行うときに指示を出す部分で、ノードとは、クラスタを構成している各サーバーを指す。

Docker はアプリケーションを各コンテナに分離するところまで。Kubernetes は、それぞれのコンテナを管理するところ(管理する手間を削減してくれるところ)を担当する。

各クラウドサービスのマネージド Kubernetes サービス

GCPの場合

GKE(Google Kubernetes Engine)

https://cloud.google.com/kubernetes-engine

Kubernetes を使わないコンテナオーケストレーターサービスはない。

Azureの場合

AKS(Azure Kubernetes Service)

https://azure.microsoft.com/ja-jp/services/kubernetes-service/#overview

Kubernetes を使わないコンテナオーケストレーターサービス

Service Fabric

https://docs.microsoft.com/ja-jp/azure/service-fabric/service-fabric-overview

AWSの場合

EKS(Amazon Elastic Container Service for Kubernetes)

https://aws.amazon.com/jp/eks/

Kubernetes を使わないコンテナオーケストレーターサービス

ECS(Amazon Elastic Container Service)

https://aws.amazon.com/jp/ecs/

参考URL

https://kubernetes.io/ja/docs/concepts/overview/

https://udemy.benesse.co.jp/development/system/kubernetes.html

https://www.kagoya.jp/howto/cloud/container/kubernetes/

https://cloud-ace.jp/column/detail229/

https://www.redhat.com/ja/topics/containers/what-is-kubernetes