オープンソース

サーバ構築のデージーネットTOP > OSS情報 > 一押しOSS >Kubernetes〜コンテナ管理ツール〜

Kubernetes〜コンテナ管理ツール〜

Kubernetesとは

Kubernetesとは、コンテナの管理を自動化するためのソフトウェアです。コンテナは完全仮想環境化に比べ、ディスク、メモリ消費量を少量で利用できます。またサービスの起動が高速でバージョン管理を容易に行うことができます。Kubernetesを使用すると、コンテナの長所を最大限に活用することができます。

Kubernetesのコンテナ画像

コンテナの課題

コンテナを利用することで様々なメリットがありますが次のような課題もあげられます。

  • 自ホスト上のコンテナの管理しかできない
  • ソフトウェア同士を連携させる場合、各コンテナ同士のネットワーク情報や、連携情報の管理に手間がかかる
  • ホストに障害が発生した場合の冗長性確保が難しい
  • 大量のコンテナを全て監視しないといけない

このような問題はKubernetesを使用することで解決されます。

Kubernetesのコンテナ管理

Kubernetesでは、コンテナの課題を補うために、様々な機能を持っています。

KubernetsのPodによるコンテナ管理

Kubernetesでは、コンテナをPodという単位で管理します。

Podイメージ画面

Podは、Kubernetesでコンテナを管理するための最小単位で、複数のコンテナの集合体です。コンテナをグループで管理することで、コンテナの使いにくさを解消します。

Kubernetesのレプリカセットによるコンテナ管理

レプリカセットとは、Kubernetesが複数のPodの複製を自動的に作成する機能です。例えば、レプリカ数に3を設定して起動すると、Kubernetesは同じ機能のPodを3つ自動的に起動します。この機能をうまく使うことで、万一コンテナに問題があり停止してしまった場合にも、Kubernetesが自動的にコンテナを起動します。

Kubernetesダッシュボードでのコンテナの管理

Kubernetesには、管理用のダッシュボードが用意されています。ダッシュボードでは、Podの管理や、コンソールでの操作が可能になります。Kubernetesダッシュボードから、次のような管理が可能です。

  • Kubernetesで管理しているリソースの状況の確認
  • Webフォームでのコンテナの設定
  • Kubernetes上で動作しているPodやコンテナの管理・操作
  • ログの管理

Kubernetesの特徴

Kubernetesにはコンテナを管理する上で必須の機能が備わっており、次のような特徴があります。

コンテナのスケジューリング

Kubernetesは、CPUやメモリの状態を見て、自動的に適切なホストを選択して、コンテナを起動します。起動するコンテナの数も容易に指定できます。

アップデートのリスクを低減

Kubernetesでは、コンテナを複製することで容易に検証環境を作成できます。つまり、本番と全く同じ環境での動作確認を行うことが可能です。本番と同じ環境で確実な動作確認を行うことで、ソフトウェアアップデート時に起こる動作不良などのリスクを低減できます。

ネットワークを仮想化しホスト間で通信

コンテナは自ホスト上でしか管理できないという課題があります。Kubernetesを活用することで、複数のノードで構成されている環境を1つの実行環境のように扱うことができます。そうすることで、別のホストにあるコンテナもまとめて管理できます。

セルフヒーリングによる高い耐障害性

Kubernetesは、コンテナの状態を監視しています。そして、万が一コンテナのプロセスが停止した場合、再度コンテナを起動し、自己修復します。そのため、ノード障害が起きたり、ノード退避などを行ったりしても、サービスを継続できます。

Kubernetesのセルフヒーリング画像

Kubernetesとストレージ

コンテナは、基本的にはステートレスに設計することが推奨されます。つまり、コンテナ上にデータを持たず、いつ起動しても同じ状態になるようにします。例えば、Webサーバなどでは、Webドキュメントは永続ストレージにおき、コンテナはそれを参照するだけという構成にするのが一般的です

そのため、Kubernetesでコンテナを管理する時にも、コンテナから接続可能な永続ストレージを用意する必要があります。永続ストレージとしては、NFS、Ceph、DRBD-SDS、オブジェクトストレージなどを使うことができます。

Kubernetesのアーキテクチャ

Kubernetesは、マスターサーバとノードサーバからなるクラスタとして動作します。これをKubernetesクラスタと呼びます。

kubernetesアーキテクチャ画面

ノードサーバは、実際にコンテナを動作させるコンポーネントです。マスターサーバは、ノードサーバ上で動作するコンテナを管理します。また、ノード上で動作するコンテナを監視し、必要に応じてレプリカセットをデプロイメントしたりするなどの制御を行います。

Kubernetesのインストール

Kubernetesのインストール自体は、それほど難しくありません。マスタサーバもノードサーバも基本的なソフトウェアのインストール手順はほぼ同じです。

  1. Dockerをインストールする
  2. Kubernetesのパッケージレポジトリを登録する
  3. kubernetesのパッケージをインストールする

こうした準備を行った後、マスタサーバではkubeletサービスを起動した後、kubeadm initでマスタサーバの初期化処理を行います。この時、Kubernetesクラスタのトークンが作成されます。ノードサーバでは、kubeadm joinにこのトークンを指定して実行することで、Kubernetesクラスタに参加することができます。

デージーネットの取り組み

デージーネットでは、Kubernetesを活用したIot開発基盤を構築しています。Kubernetesを使用してオンプレミスでIot開発基盤を構築することで、一定のコストで継続的につかえるIot構築基盤を実現することができます。

OSSのKubernetes「構築事例/情報の一覧」

IoT開発基盤構築でのKubernetes活用構築事例

Kubernetes活用構築事例の画像

IoT開発基盤構築にKubernetesを活用しました。これまで、プロジェクト単位でクラウドを契約していましたが、以前よりも多くの部門がIoTを扱うようになりました。IoT開発基盤では大量のデータを扱います。そのため、クラウドを利用するコストメリットが薄れてしまいました。そこで、オンプレミスで大容量のIoT開発基盤を構築し、一定のコストで継続的に使えるIoT開発基盤を実現しました。

Kubernetes調査報告書

調査報告書ダウンロードの画像

Kubernetesは、Dockerコンテナを始めとするコンテナを管理するためのソフトウェアです。コンテナ間のネットワーク制御や、コンテナの監視、異常時のセルフヒーリング機能など、コンテナを管理する上で必須の機能が備わっています。本書では基本的なKubernetesの概念と使い方を紹介しています。

デモのお申込み

もっと使い方が知りたい方へ
Kubernetesの操作方法や操作性をデモにてご確認いただけます。使い方のイメージを把握したい、使えるか判断したい場合にご活用下さい。Kubernetesのデモをご希望の方は、下記よりお申込みいただけます。


デモをご希望の方


OSS情報「Kubernetes」

Kubernetes〜コンテナ管理ツール〜
ここでは、コンテナの管理を自動化するためのソフトウェア「Kubernetes」を紹介します。
Kubernetesクラスタの構築
ここでは、CentOS7に最小限のKubernetesクラスタを構築する方法について説明いたします。
KubernetesのPod機能
ここではPod機能について説明いたします。
Kubernetesのレプリカセットとデプロイメント
ここではデプロイメントという機能を利用してレプリカセットを作成する方法について説明いたします。
Kubernetesのアーキテクチャ
ここではアーキテクチャについて説明いたします。
Kubernetesのコンテナアップデート
ここでは、Kubernetesでソフトウェアをアップデートする場合の手法について説明いたします。
Kubernetesのローリングアップデート
ここでは、Kubernetesのローリングアップデート機能の概要について説明いたします。
Kubernetesのダッシュボード
ここでは管理用のダッシュボードについて説明いたします。
Kubernetesの永続ストレージ
ここでは永続ストレージについて説明いたします。

Kubernetes〜コンテナ管理ツール〜の先頭へ