2018.04.03

Kubernetes Introduction


次世代システム研究室のDLです。
今回はKubernetesの入門記事です。

はじめに

物理マシン、仮想マシンからコンテナが広く利用される時代になりました。コンテナだけではできないところを管理してくれるシステムがContainer Orchestration Systemです。そのシステム中でもKubernetesは注目を浴びていて(ほとんど)業界のスタンダードになっております。

コンテナだけではできないところ

・コンテナのアップデート
・複数のNodeに対してのデプロイ
・コンテナ障害時の復旧
・コンテナのロードバランシング
もちろんのことなんですが基本的にContainerは自分の管理しかできません。それでLocal開発環境での検証や運用は問題ございませんがコンテナを本番で運用しようとすると大きい壁にぶつかります。

コンテナを本番で運用するには

本番で運用するには安定・安全な運用を考えないといけません。
そこでContainer Orchestration Systemが必要になります。

Container Orchestrationとは?

・KubernetesはContainer Orchestrationを行うSystemです。
・基本的には起動されているContainerized Applicationsのリソースを監視(Memory/CPU/GPU/Volumes/Ports/IPs)して負荷分散やスケーリング、再配置、デプロイなどを行います。

Container Orchestration System?

・Kubernetes以外にDocker SwarmやApache Mesos、Hashicorp Nomadなどがあります。
Container Orchestrator ・Google Trendを見るとKubernetesがどのぐらい注目されているのかが見えてきます。

これからはKubernetesをより詳細なところを紹介します。

Kubernetes Basic Concepts

・Kubernetesはひとつまたは二つ以上のコンテナを「Pod」との単位で管理しています。
・KubernetesはMaster/(Worker)Nodeクラスタ構成です。

Kubernetes Architecture

Kubernetesが利用できる環境

今では多くのPublic/Private Cloudで利用可能です。
・Google Kubernetes Engine
・AWS (EKS)
・Azure Container Service
・IBM Cloud Container Service
・openstack
・cloudstack
・vSphere

ローカル環境での利用方法

ローカルでの検証もすごく簡単です。
・Minikube (How to Install Minikube)
・Kubernetes on Docker (下記のように簡単に設定できます。)
クラスタが構成されたのかを確認 ( kubectl cluster-info )

まとめ

・Kubernetesはスタンダード(かも)
・Kubernetesは本番でコンテナされているアプリケーションを管理してくれる
・Googleからスタートしたプロジェクトで今はOSSとしてCNCFが管理している。(今は卒業生)
・Kubernetesはひとつのmasterと複数の(Worker)Nodeでクラスタ構成になっている
・今ではローカル環境でも簡単にKubernetesが利用できる( minikube, kubernetes on dockerなど )

Reference

Kubernetes Introductionスライド
Large-scale cluster management at Google with Borg
Borg, Omega, and Kubernetes
Kubernetes®が初のCNCFグラデュエート(卒業)プロジェクトに
Google Omega
Kubernetes Official Tutorial

最後に

次世代システム研究室では、グループ全体のインテグレーションを支援してくれるアーキテクトを募集しています。インフラ設計、構築経験者の方、次世代システム研究室にご興味を持って頂ける方がいらっしゃいましたら、ぜひ募集職種一覧からご応募をお願いします。

皆さんのご応募をお待ちしています。