k8s 仕組みと構造

Kubernetesとは?仕組みと構造をわかりやすく解説します

Kubernetesとは、コンテナの運用管理と自動化を目的に設計されたオープンソースのシステムです。

Kubernetesの複雑で難しいイメージを少しでも改善するために、この記事ではポイントを整理しました。KubernetesとDockerやコンテナとの関係、おもな仕組みを中心にわかりやすく解説しています。

Kubernetes-logo

Kubernetesとは?コンテナやDockerとの関係性

kubernetes-container

まずは、Kubernetesに理解にどうしても必要なキーワードをまとめています。

Kubernetesとは?

Kubernetesはクバネティス、またはクーベネティスなどと読みます。ギリシャ語で、操舵手 やパイロットという意味があるそうです。またK8sとも呼ばれています。公式サイトによれば、Kubernetesのスペルで、最初の「K」と最後の「s」の間にある「ubernete」の文字数が8あるため、「K」と「8」と「s」をつなげて「K8s」になっています。

Kubernetesにとって操作の対象は、Dockerなどのコンテナです。この対象が大きくなればなるほど、Kubernetesは威力を発揮します。Dockerなどが増えて、システム全体を効率良く管理したり、効果的に組み合わせたりする力は、Dockerには不足しているからです。

Kubernetesの登場により、複数のDockerなどのコンテナの管理や自動化が進み、この仕組みは「コンテナオーケストレーション」と呼ばれるようになりました。

コンテナ型の仮想化技術とは?

仮想化技術を支える手段には種類があります。具体的には、ハイパーバイザーやホスト型ともにコンテナ型が公開されています。

さらにコンテナにも種類があり、Dockerはその一つです。Kubernetesが対象としているコンテナは、このDockerが標準になっています。その主な理由には、Dockerの動作の速さや移動のしやすさなどの特徴があるからです。

KubernetesとDockerの違い

ここまでみてきたように、この2つは目的が異なります。実はDockerにも、複数のDocker自体の管理や自動化をする機能(Docker Swarm)があります。ただコンテナ間の設定や管理で、できないことがあります。小規模の場合は別途作業すればいいのですが、規模が大きくなるほど煩雑になります。

そこでKubernetesのような専用ツールによって、規模の大きいDockerの管理や自動化をするようになりました。

Kubernetesのメリット

Kubernetes利用による「コンテナオーケストレーション」で、複数のDockerを管理する手間が減り、コストを削減することができます。具体的にはこちらの情報にあるように、Kubernetesの利用により以下の課題を解決できるようになります。Docker自体では、実現がむずかしい項目ばかりです。

  • 複数のDockerホストの管理
  • コンテナのスケジューリング
  • ローリングアップデート
  • スケーリング / オートスケーリング
  • コンテナの死活監視
  • 障害時のセルフヒーリング
  • サービスディスカバリ
  • ロードバランシング
  • データの管理
  • ワークロードの管理
  • ログの管理
  • Infrastructure as Code
  • その他エコシステムとの連携や拡張

【引用元】
なぜKubernetesが必要なのか?

Kubernetesの主な仕組み

kubernetes 仕組み

次にKubernetesの構成を簡単にご説明します。それぞれの機能は複雑ですが、意味のあるものばかりです。繰り返しになりますが、目的は「コンテナオーケストレーション」です。

Kubernetes Cluster(クラスター)

一般的に、クラスターには「まとまり」という意味があります。IT分野では、コンピュータ・クラスターのように、複数台のコンピュータを結び付けまとめた仕組みを指しています。Kubernetesクラスターも同様で、公式サイトでは「単一のユニットとして機能するように接続された、可用性の高いコンピュータのクラスター」としています。

なお「可用性」とは、システムを継続して稼働させる考え方です。例えば、ひとつの機器が故障しても他の正常な機器に自動的に切り替わり、利用者には影響ができないようにするしくみです。

Kubernetesクラスターを作成するためには、Minikubeというツールを使用します。公式サイトでは、コマンド操作が体験できるデモ環境が用意されています。

kubernetes01

namespace

公式サイトによれば、同一の物理クラスター上で動作する複数の仮想クラスターのことです。namespace(名前空間)は、比較的規模が大きい環境で導入が推奨されています。これにより、1つのKubernetesクラスターを複数チームで利用できるようになりました。具体的には、誰がどのような権限があるかを設定し、Kubernetesクラスターを分離しています。

pod

Kubernetesが管理できる最小単位で、Dockerなどのコンテナが 1つ以上含まれています。ポイントは、KubernetesがDockerなどのコンテナを直接管理しているのではなく、pod経由であることです。podにはIP アドレスが自動的に割り当てられ、コンテナ間で共有するストレージが含まれています。こちらも公式サイトに、コマンド操作でpodを体験できるデモ環境が用意されています。

kubernetes02