高可用性ECインフラストラクチャを実行する場合、展開されたサービスを管理する方法が必要です。
Charmは、開発、本番、管理環境で、Rancher管理コンソールを介して管理される複数のKubernetesクラスターを使用します。
スタッフの概要
メンバーA
Kubernetes はコンテナの管理を自動化するためのプラットフォームです。ストレージのマウントやロールアウト・ロールバック、処理が失敗したコンテナの修復など自動で行うことができます。対して、ロギングやモニタリングはできません。
クラスター、ポッド、ノード・サービスによって構成され、垂直的・横断的な管理が可能です。
メンバーB
kubernetesとは
コンテナオーケストレーションツールの一つ。 コンテナオーケストレーショとはコンテナを効率良く運用・開発するための技術です。 コンテナオーケストレーションツールとしては、Dockerの「Swarm」、CoreOSの「fleet」、Rancher Labsの「Rancher」、Mesosの「Marathon」、そしてGoogleがオープンソース化した Kubernetesなどがありました。 今ではkubernetesがデファクトスタンダードとなっています。
kubernetesで実現できること
Docker単体では難しかった以下のようなことが可能になります。 ・複数のDockerホストの管理 ・コンテナのスケジューリング ・ローリングアップデート ・スケーリング / オートスケーリング ・コンテナの死活監視 ・障害時のセルフヒーリング ・サービスディスカバリ ・ロードバランシング ・データの管理 ・ワークロードの管理 ・ログの管理 ・Infrastructure as Code ・その他エコシステムとの連携や拡張
kubernetesの構成
Master(API Server, Scheduler, Controller Manager, etcd) Node(kubelet, kube-proxy, pod) Docker Registry
kubernetesの使い方
マニフェストファイル(yaml)を作って、kubectlで適用する。 Pod、Replicaset、Deployment、Serviceを設定する。
メンバーC
コンテナオーケストレーションシステム 複数のDockerなどのコンテナの管理を自動化してくれる。 オートスケーリング 同じコンテナのレプリカとして展開することで負荷分散や耐障害性の確保をすることができる。 不可に応じてコンテナのレプリカを増減することができる。 スケジューリング 空きリソースの状況に従って自動的にスケジューリングされる。 オートヒーリング コンテナが停止した際には再度スケジュールして自動復旧することができる。 その他にも、、 ・コンテナの死活監視 ・ロードバランシング ・複数のDockerホストの管理
メンバーD
コンテナ化したアプリケーションのデプロイ、スケーリング、および管理を行うための、コンテナオーケストレーションシステム。
元々はGoogleで設計してGoogle内で使用していた。
Kubernetesは複数のアプリ運用ツールと連携して動作し、より効率よく運用ができるものとなっている。
Kubernetesの最大のメリットは、開発したアプリなどの信頼性や利便性が大きく変わるということ。特に機能の追加や不具合の修正など、アプリ運用において重要となる部分で大きく改善することが可能。余分な人員を削減することができるので、コストを大幅に削減できてアプリ開発に集中できる。
アプリ運用の自動化が可能
メンバーE
Kubernetesとは
Kubernetesとは、複数のサーバなどで作成した「コンテナ」を効率よく管理するための「オーケストレーションツール」である。
Kubernetesは、Googleによって開始されたプロジェクトであり、現在ではRedHat、IBM、Microsoftと多くのベンダーが開発に携わっている。Kubernetesの主な機能は以下の通り。
- 必要なコンテナをまとめてマニフェスト(YAML形式)に沿って同時デプロイメント可能
- コンテナへの外部ネットワーク接続機能の提供、および負荷分散が可能
- コンテナの負荷に応じてオートスケールが可能
- 開発環境と本番環境をステージング機能で機能単位で入れ替え可能
Kubernetesのアーキテクチャおよびコンポーネント
コンポーネントは以下4つ
- MasterNode:コンテナの管理(デプロイや死活監視)
- WorkerNodes:コンテナの実行(実際のコンテナの稼働環境)
- マニュフェスト:コンテナの稼働数やオートスケール設定、リソース使用量などYAMLで定義
- etcd:key-valueストア(同じような設定を複製した場合などに、設定をストアに読み込んで置き、新たなデプロイ時に使いまわせるやり方がある)およびネットワーク設定など保存
Kubernetesでコンテナを管理する際は、「Pod」と呼ばれる単位で行う。
「Pod」に1つまたは複数のコンテナを合わせ、ネットワークやIPアドレス、ストレージなどのリソースを共有して動作させる。
「Pod」にIPアドレスが割り当てられるので、Pod間で通信を行うことが可能。
Pod間の通信はNATを利用せずに、flannelなどのOSSを利用して通信をカプセル化して筐体の違うPodとも通信を行うことが可能。
KubernetesとDockerとの関連性
Docker(コンテナ)では、以下の対応を行うことができない。
- ルーティング処理(コンテナ間の通信は実装できるが、ルーティングまでは手が回らない)
- 複数サーバで展開されているコンテナの一括管理および連携
コンテナの欠点を補うためのKubernetesが存在する。