クラウド・仮想化

2019.09.06

Author:

エンタープライズ向けKubernetesのご紹介

前回の「コンテナ技術入門」では仮想マシンとコンテナを比較し、コンテナがどのように独立した実行環境を実現しているのかをご紹介しました。今回のBlogではKubernetesがどのようなものなのかを説明し、エンタープライズ環境で利用することができる商用ディストリビューションをご紹介します。

Kubernetesとは

Kubernetesは2014年にGoogleがオープンソースとして公開したコンテナをクラスター環境でオーケストレーションするためのツールで、現在はクラウドネイティブなテクノロジーのオープンソースプロジェクトを推進するCloud Native Computing Foundation(CNCF)によってKubernetesプロジェクトがホストされています。

Kubernetes上では、Pod、ReplicaSet、Deployment、Service、Persistent Volume等のリソースによってインフラストラクチャが抽象化され、これらのリソースを組み合わせてKubernetes上のワークロードをマニフェストファイルとして宣言的に定義することが可能です。例えば以下のマニフェストファイルは、nginx:1.7.9というコンテナイメージを利用して3台のHTTPサーバーコンテナを構成することを定義しています。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.7.9
        ports:
        - containerPort: 80

マニフェストファイルの例

 

Kubernetesクラスターは、クラスターを制御するMasterとコンテナが起動するNodeの2種類のマシンによって構成されます。Masterはマニフェストファイルの構成内容に基づいて、Nodeに対してコンテナをPodと呼ばれる単位で配置し、必要に応じてネットワークやストレージを提供します。例えば、上記のマニフェストファイルをMasterに渡した場合、下図のようにMasterは3つのPodの起動場所を決定し、各Nodeが”nginx:1.7.9”コンテナイメージを取得してPodを起動します。Masterはマニフェストファイルによって宣言された構成を維持するために自律的に動作するため、Node障害が発生した場合に自動的に別Node上でPodを再作成したり、負荷が上昇した場合にPodを自動的に増やすといった事が可能です。このKubernetesクラスターの特徴によりインフラストラクチャの運用高度化を実現することが可能です。

Kubernetesクラスターのアーキテクチャ
Kubernetesに関する用語
  • Master : API Server、Controller Manager、SchedulerによりKubernetesクラスターの管理・制御を行うホスト。情報はetcdと呼ばれるデータベースで管理される。
  • Node : KubernetesクラスターにおいてワークロードとなるPod(コンテナ)が起動するホスト。kubeletによってMasterと通信を行う。proxyによってPod通信を制御する。
  • kubectl : CLI MasterのAPI Serverと対話するためのインターフェース。マニフェストファイルをKubernetesクラスターに適用する際に利用する。
  • Pod : Kubernetesクラスター上で管理されるワークロードリソース。単一もしくは複数のコンテナによって構成される。
  • ReplicaSet : Podの可用性を高めるためのリソース。Podを管理し、指定した数だけPodを起動する。
  • Deployment : ReplicaSetを介してPodのバージョンを管理するためのリソース。ローリングアップデート等を提供する。
  • Service : Podに対するアクセス方法を提供するためのリソース。
  • Persistent Volume : Podに対して永続的なストレージを提供するためのリソース。
  • マニフェストファイル : Kubernetes上で利用することができるリソースを宣言的に定義するためのファイル。

エンタープライズ環境におけるKubernetes導入・運用の課題

Kubernetesは非常に強力なコンテナオーケストレータですが、オープンソースであるため、実際に導入・運用する際には以下のような課題に直面し、多くのお客様が導入に不安を感じているのが現状です。

  • Kubernetesクラスター構成に必要となる各コンポーネントの可用性を考慮して設計・構築する必要がある
  • クラスターには複数のコンポーネントが採用されており、バージョンの整合性を取ることが煩雑
  • 開発サイクルが早いためクラスターのバージョンアップ作業が頻繁かつ煩雑
  • トラブルが発生した場合、自身で対応するかコミュニティに頼る必要がある

Kubernetesの商用ディストリビューション

上記のようなKubernetesの課題は商用のディストリビューションをご利用いただくことで解決可能です。今回は3種類のKubernetesディストリビューションをご紹介いたします。いずれのディストリビューションもKubernetesクラスターの展開機能や、Kubernetesクラスターのバージョンアップ機能を備えており、導入・運用のハードルを下げることができます。また、CNCFが定めたCertified Kubernetes Conformance Programに準拠しているため、Kubernetes APIの実装が一定のレベルで保証されており、サポートも各ベンダーによって供されるため、エンタープライズ環境でも安心してKubernetesをご利用頂けます。

Cisco Container Platform (CCP)

Cisco社が提供するHCI(Hyper Converged Infrastructure)であるHyperFlexと連携し、ハードウェアが提供する機能をKubernetes利用者が意識すること無く利用することができるのが大きな特徴です。HyperFlexのストレージ領域をコンテナに接続したり、Cisco ACIをコンテナネットワークとして利用することが可能です。CCP導入時にコントロールプレーン用のKubernetesクラスターを作成し、必要に応じてワークロード用Kubernetesクラスターを展開することが可能となります。コントロールプレーン用のKubernetesクラスターにはELK(Elasticsearch/Logstash/Kibana)やPrometheusなどの監視用コンポーネントが配置され、CCPの管理画面からAWS上にEKSクラスターを構成することも可能です。

Red Hat OpenShift Container Platform

OpenShift Container PlatformにはKubernetesが提供する機能に加え、独自のダッシュボードや、ソースコードからコンテナイメージの作成を行いクラスター上で起動するSource-to-Image(s2i)と呼ばれる機能が実装されています。Red Hat Enterprise Linuxや、Red Hat Enterprise CoreOSと呼ばれるコンテナ実行に最適化されたOSをクラスターのノードとして利用することができ、独自のインストーラーにより、ベアメタルサーバーやvSphere、AWS等、広範な環境に対してクラスターを展開することが可能です。コンテナネットワークにはOpenShift SDNが利用されますが、他社が提供するコンテナネットワーク機能を利用することも可能です。

VMware Enterprise PKS

VMware社とPivotal社が共同で開発・販売をしています。Pivotal社が従来から提供している、Pivotal Application Service (旧 Pivotal Cloud Foundry)のコンポーネントとして利用されている、boshと呼ばれるインフラ抽象化機能によりvSphere、AWS、Azure、GCP等の環境にKubernetesクラスターを展開することが可能です。vSphere上で利用する場合、Kubernetesで必要となるMasterやNodeは仮想マシンとして作成され、Kubernetes向けのネットワークもVMware NSX-T Data Centerにより自動構成されます。運用に関してもboshが活用されており、各仮想マシンの監視を行い、Node障害時には自動復旧することが可能です。詳細はこちらの記事もご参照ください。(VMware社からはSaaS版として提供されるVMware Cloud PKSと、より柔軟な構成を可能とするVMware Essential PKSと呼ばれるプロダクトも提供されています。)

まとめ

今回ご紹介したKubernetesの商用ディストリビューションを利用することで、エンタープライズ環境でも、安心してKubernetesをご利用いただくことが可能です。ネットワンシステムズではこれらのディストリビューションをお客様のニーズに応じて提案させていただきます。

次回はコンテナやクラウドネイティブコンピューティングに関する最新の動向に関してご紹介いたします。

※本記事の内容は執筆者個人の見解であり、所属する組織の見解を代表するものではありません。

MORE「クラウド・仮想化」記事