「Kubernetesで運用する」その前に Kubernetesを本番環境で利用する際のポイント:キャッチアップが大切(1/3 ページ)
日本マイクロソフトは2018年11月5〜7日に「Microsoft Tech Summit 2018」を開催。MicrosoftでCloud Developer Advocateを務める寺田佳央氏は、Kubernetesを本番環境で活用する際のポイントや、今後のJavaについて語った。
日本マイクロソフトは2018年11月5〜7日に「Microsoft Tech Summit 2018」を開催した。本稿では、Microsoft Cloud Developer Advocateの寺田佳央氏の講演「Javaを活用したマイクロサービスのためのKubernetes活用」の内容を要約してお伝えする。
本番環境で「Kubernetes」を活用する際の注意点
Kubernetesとは、コンテナ型仮想化技術を本番環境で活用するための管理(コンテナオーケストレーション)ツールだ。端的に言えば、コンテナ単体、または複数のコンテナを「Pod」と呼ばれるオブジェクトでまとめ、「クラスタ」として管理する。コンテナの負荷に応じたオートスケールなどの特長を持つ。
参考記事:「Kubernetes」とは何か――コンテナ型仮想化の本番利用に向けた課題
寺田氏は「Kubernetesは数カ月に1回バージョンが上がり、サードパーティー製ツールもどんどん公開されているため、キャッチアップが難しい。『アプリケーションをコンテナ化したい』という理由だけで安易にKubernetesを選択すると、予想以上に大変な思いをするだろう。頻繁にバージョンアップを行うようなアプリケーションのコンテナ化や、アプリケーションのマイクロサービス化をしたいなどの目的があれば、Kubernetesを検討してほしい」と述べる。
寺田氏は、本番環境でKubernetesを活用する際に気を付けるべきポイントとして、以下の3つを紹介した。それぞれ見ていこう。
- Kubernetesのマニフェストファイルの仕様を正しく理解する
- Kubernetesをバージョンアップした後にコンテナが動く保証はない
- Kubernetesの「Persistent Volumes」の利用を極力避ける
Kubernetesのマニフェストファイルの仕様を正しく理解する
Kubernetesでは、YAML形式で記述されたマニフェストファイルを基に、Podの実行や管理を実現する。寺田氏は、マニフェストファイルを最小構成で記述した場合の例を挙げて説明する。
apiVersion: apps/v1 kind: Deployment metadata: name: account-service spec: replicas: 1 selector: matchLabels: app: account-service template: metadata: labels: app: account-service version: v1 env: test spec: securityContext: runAsUser: 1000 containers: name: account-service image: yoshioeastreg.azurecr.io/tyoshio2002/account-service:1.0
「Kubernetesを試しに使ってみるというような“Hello Worldレベル”の記述は容易で、世の中にはそうした情報があふれている。しかし、このような情報をうのみにして、本番環境に使い回すのは避けるべきだろう。本番環境で運用するために必要な設定が記述できているのかどうかを理解する必要がある」
寺田氏は、設定として重要な「labels」の概念について説明する。labelsは、Podをグループ化するための機能だ。複数のPodをグループごとに操作、指定できる。上記のマニフェストファイルの最小構成例では、「labels」という項目の中に「app」「env」「version」というキー、そしてそれぞれに「account-service」「test」「v1」という値が設定されている。これにより「account-service」という名前が付くアプリケーションに対して、開発ステージ、もしくはバージョンごとにグループ化し、特定のバージョンのアプリケーションを開発用の環境(名前空間)にデプロイしたり、特定のバージョンにだけリクエストを転送したりするフィルタリング操作が行える。この動きを確認するには、「kubectl」というコマンドに対して、「--selector」と呼ばれるオプションでラベルのキーと値を指定する必要がある。
例えば、下図のように「versionがv1のPodに対して特定の操作を行う」ということが実現できるわけだ。
「リソースやネットワーク、パフォーマンス、死活監視などを考えてマニフェストファイルを作成することも重要だ。labels以外にも、さまざまな設定項目が用意されているため、本番環境ではどのような設定が必要なのかを十分理解する必要がある」
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- 2000店舗に展開の事例など、エッジでのKubernetesに注目が集まる
全米2000店舗にKubernetesクラスタを展開しているファストフードチェーンの事例などで、エッジにおけるKubernetesへの関心が高まっている。Kubernetesコミュニティーでも議論が始まった。 - Kubernetesを選んだ技術的理由とコンテナをプロジェクトで活用する上でのポイント
本連載では、サービスの開発、提供のアジリティ向上の一助となることを目的として、企業における「Kubernetes」の活用について解説する。今回は、Kubernetesを活用することを決めた理由について「技術」面から解説するとともに、「システムの開発やテスト、デプロイの効率を向上させるために、どのような点に配慮すべきか」について説明する。 - Docker管理ツール、Kubernetes、etcd、flannel、cAdvisorの概要とインストール、基本的な使い方
数多く台頭しているDockerの運用管理に関する製品/サービスの特長、使い方を徹底解説する特集。今回は、グーグルが主導で開発しているOSSであるKubernetes、flannel、cAdvisorの概要や主な機能、環境構築方法、使い方について。