Kubernetesとは?仕組みと構造をわかりやすく解説します
Kubernetesとは、コンテナの運用管理と自動化を目的に設計されたオープンソースのシステムです。
Kubernetesの複雑で難しいイメージを少しでも改善するために、この記事ではポイントを整理しました。KubernetesとDockerやコンテナとの関係、おもな仕組み、そしてインストール方法を中心にわかりやすく解説しています。
Kubernetesとは?コンテナやDockerとの関係性
まずは、Kubernetesに理解にどうしても必要なキーワードをまとめています。
Kubernetesとは?
Kubernetesはクバネティス、またはクーベネティスなどと読みます。ギリシャ語で、操舵手 やパイロットという意味があるそうです。またK8sとも呼ばれています。公式サイトによれば、Kubernetesのスペルで、最初の「K」と最後の「s」の間にある「ubernete」の文字数が8あるため、「K」と「8」と「s」をつなげて「K8s」になっています。
Kubernetesにとって操作の対象は、Dockerなどのコンテナです。この対象が大きくなればなるほど、Kubernetesは威力を発揮します。Dockerなどが増えて、システム全体を効率良く管理したり、効果的に組み合わせたりする力は、Dockerには不足しているからです。
Kubernetesの登場により、複数のDockerなどのコンテナの管理や自動化が進み、この仕組みは「コンテナオーケストレーション」と呼ばれるようになりました。
コンテナ型の仮想化技術とは?
仮想化技術を支える手段には種類があります。具体的には、ハイパーバイザーやホスト型ともにコンテナ型が公開されています。コンテナの仮想化については、以下の記事にて詳しく解説しています。
【関連記事】
【入門】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 Cluster(クラスター)
一般的に、クラスターには「まとまり」という意味があります。IT分野では、コンピュータ・クラスターのように、複数台のコンピュータを結び付けまとめた仕組みを指しています。Kubernetesクラスターも同様で、公式サイトでは「単一のユニットとして機能するように接続された、可用性の高いコンピュータのクラスター」としています。
なお「可用性」とは、システムを継続して稼働させる考え方です。例えば、ひとつの機器が故障しても他の正常な機器に自動的に切り替わり、利用者には影響ができないようにするしくみです。
Kubernetesクラスターを作成するためには、Minikubeというツールを使用します。公式サイトでは、コマンド操作が体験できるデモ環境が用意されています。
namespace
公式サイトによれば、同一の物理クラスター上で動作する複数の仮想クラスターのことです。namespace(名前空間)は、比較的規模が大きい環境で導入が推奨されています。これにより、1つのKubernetesクラスターを複数チームで利用できるようになりました。具体的には、誰がどのような権限があるかを設定し、Kubernetesクラスターを分離しています。
pod
Kubernetesが管理できる最小単位で、Dockerなどのコンテナが 1つ以上含まれています。ポイントは、KubernetesがDockerなどのコンテナを直接管理しているのではなく、pod経由であることです。podにはIP アドレスが自動的に割り当てられ、コンテナ間で共有するストレージが含まれています。こちらも公式サイトに、コマンド操作でpodを体験できるデモ環境が用意されています。
Kubernetesの初期インストール
それでは実際にKubernetesをインストールしていきましょう。ここでは、Kubernetesクラスターを実行するkubeadmなどの基本的なインストール方法をご紹介します。
利用したVPSのプラン
検証用に、こちらのスペックにてVPSにセットアップします。
企業名 | カゴヤ・ジャパン |
---|---|
プラン名 | KAGOYA CLOUD/2のVPS「KVM」プラン |
CPU | 3コア |
メモリー | 3GB |
ストレージ | SSD 30GB |
OSテンプレート | Ubuntu16.04(64bit) |
料金 | 日額 55円/、月額 1,540円 |
Dockerのインストール
まずは以下の記事などを参考に、Dockerをインストールします。
【関連記事】
【入門】Dockerとは?使い方と基本コマンドを分かりやすく解説します
Kubernetesのインストール
今回インストールするパッケージは以下の3つです。
kubeadm | Kubernetesのクラスターを簡単に操作するツール |
---|---|
kubelet | Kubernetesの主要なパッケージ |
kubectl | Kubernetesクラスターを管理するためのコマンド |
公式ページにそって、前準備をしたうえで以下のコマンドを順次実行していきます。rootでの操作が推奨されています。
【コマンド】(Ubuntuの場合)
apt-get update && apt-get install -y apt-transport-https curl
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add –
cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
deb https://apt.kubernetes.io/ kubernetes-xenial main
EOF
apt-get update
apt-get install -y kubelet kubeadm kubectl
apt-mark hold kubelet kubeadm kubectl
初期インストール後について
Kubernetesには多くの機能があるため、優先度に応じて高度な設定をしてから利用していきます。進め方には以下の選択肢から、より適した方法を選ぶ必要があると考えます。
- 公式ページのドキュメントなどを参考に進めていく(かなりの量あり)
- Goggle CloudやAzureなどのサービスを試用してから、正式に申し込む(設定の時間を短縮)
- カゴヤ・ジャパンの「コンテナサービス」ですぐに始める
まとめ
ここまでいかがでしたか。Kubernetesについて概要をご理解いただけたかと思います。あとは、ご利用の目的や規模に合う設定に移ります。Kubernetesの本来の目的と機能であるDocker管理をさらに効率よく進めるため、「Rancher」を導入したサービスの利用がおすすめです。
カゴヤ・ジャパンのコンテナサービスでは、Kubernetesと「Rancher」 が構築済で、すぐに Docker 環境が使えるようになっています。経営資源の有効配分と優先度により、ご検討されてみてはいかがでしょうか。
【参考サイト】
コンテナサービス|カゴヤ・ジャパン