通りすがりのminami-engineerのブログ

常に気持ちは新人エンジニア。

kubernetes紐解き講座~vol.1~

皆さんこんにちはー。4月になり新人エンジニアの教育係担当中の南です。

本日の話題は、kubernetesk8s)です。長くレガシーな技術の塊になるので今から数回に分けて話そうと思います!

 

FargateやEKSを学習する上で、kubernetesの知識や考え方はとても大事になるので、聞いて損は無いです。

 

kubernetesを一言で説明すると コンテナが稼働する複数のサーバーを束ねつつ、コンテナ自体も管理することができるオーケストレーションツール です。

これだけではピンとこないので、一つ一つの用語を考えます。

 

(1)コンテナ技術とは

 コンテナ技術とは 既存のOS上にて複数のアプリケーションを、分離した環境で動かす技術 です。コンテナ自体は10年以上前からある技術であり、決して最近のものではありません。

ただ、コンテナを導入しようと考えたとき、流行っているから、すべてが便利になる

の考えは危険です。

他の仮想環境と比べて、コンテナ型のメリットとしては下記の3点です。

  1. 仮想サーバと比べてコンテナは起動が非常に速く、わずかのメモリ使用量ですむ
  2. コンテナが起動できるサーバならば、どのサーバでコンテナを起動しても一貫性のある環境が利用できるようになる
  3. 開発環境とテスト環境で動作検証したコンテナを、そのまま本番サーバにコピーして起動させて運用することも可能

(2)コンテナの活用例

 昨今のアプリケーション設計では機能別にモジュールを分けてアジャイル開発を用いて、モジュール単位でのリファクタリングや機能拡張を行うことが多いと聞きます。

これにより 他のモジュールで障害が発生しても、自分のモジュールは実行し続けることができ、アプリケーション全体の信頼性が高まる というメリットがあります。

機能別に分けたモジュール を コンテナという単位で動作 させて それぞれを連携させる ことで 大きな一つのサービスとして提供できる ようにします。

 またこの段階で、最近に注目されるようになってきたある概念について触れようと思います。それがDevOpsという概念です。

(3)DevOpsという考え方

 正直DevOpsの考え方は今回で説明しきれないくらい深いので、簡単に説明すると、

DevOpsとは 開発(Development)と運用(Operations)が、お互いに協力しながらサービスを作り上げるというものです。

(4)kubernetesの登場

 コンテナ技術をスムーズかつ簡単に扱うために、整ったインフラ環境が必要になってきます。そこでいよいよ kubernetes の登場です。

最初にも触れましたが、 kubernetesはコンテナ技術のオーケストレーションツール です。オーケストレーションツールとは コンポーネントとの連携や、煩雑・複雑な設定管理を自動化するツール です。

 昨今は多くの情報に溢れ、技術ページもたくさんあり、専門的な知識がなくてもkubernetesを構築することは可能です。

 システム設計の最終的な目標は、顧客の要件を満たしたシステムを安定的に稼働させることです。作ったはいいが、運用上問題がある、頻繁に障害が発生しますではダメということです。

 

次回vol.2ではkubernetesを支える技術について考えていきましょう!