Kubernetesとは
- On 2020年10月5日
K8とそのDevOpsに対する価値を理解する
Kubernetesは、Googleによって開発され、2014年6月に一般公開されたオープンソースのコンテナ管理システムです。Linuxコンテナの開発者が複雑な分散システムのデプロイや管理を簡単にできるようにと開発されました。クラスタで実行されるアプリケーションの作成経験を持つGoogleエンジニアによって設計されました。
Kubernetes(K8)は、内部使用のみのBorgとOmegaに続き、Googleが開発した3番目のコンテナクラスタマネージャーです。Omegaと同様に、K8sはコアスケジューリングアーキテクチャとそのコアの共有永続ストアを改善しています。Omegaとは異なり、ストアが信頼できるコントロールプレーンコンポーネントに直接公開されず、REST APIを介してアクセスされます。REST操作を処理するKubernetes APIは、他のAPIと似ています。
2015年、Linux FoundationとGoogleは共同でCloud Native Computing Foundation(CNCF)を設立し、Kubernetesがシードテクノロジーとして寄付されました。2017年12月、K8の安定版リリースが開始されました。
Kubernetesでできること
Kubernetesを使用すると、企業はソフトウェアアプリケーションを実行するときに、より多くのコンピューティングパワーを利用できます。プライベート環境、クラウド環境、ハイブリッド環境にある数十万以上マシンのクラスタ上のアプリケーションコンテナの展開、スケジューリング、運用を自動化します。また、開発者は、Kubernetesにデプロイされたコンテナイメージを使用してコンテナ中心の環境を作成したり、継続的インテグレーション(CI)システムと統合したりできます。
プラットフォームとして、K8は他のテクノロジーと組み合わせて機能を追加でき、サポートされるアプリケーションやサービスの種類を制限しません。一部のコンテナベースのサービスとしてのプラットフォーム(PaaS)システムは、Kubernetes上で実行されます。プラットフォームとしてのK8はこれらのPaaSシステムとは異なり、包括的なものではなく、ミドルウェアの提供、ソースコードのデプロイ、アプリケーションのビルド、クリックしてデプロイするマーケットプレイスを備えていません。
Kubernetesとコンテナサービスの価値
Kubernetesとコンテナサービスを使用すると、互換性に関係なく、あるコンピューティング環境から別のコンピューティング環境に移動したときにソフトウェアを確実に実行できます。アプリケーション開発者とIT管理者は、Nodeと呼ばれるサーバのクラスタにまたがる共通の共有オペレーティングシステムで複数のアプリケーションコンテナを実行できます。

アプリケーションコンテナは互いに分離されていますが、OSカーネルを共有し、ホスト(オペレーティングシステムの共有部分)は読み取り専用です。このように、アプリケーションのすべてのコンポーネントは、基盤となるホストインフラから分離されているため、さまざまなクラウドやOS環境でのデプロイとスケーリングが容易になります。
コンテナは、ギガバイトからメガバイトへと軽量化され、仮想マシン(VM)よりも少ないリソースを使用します。コンテナは通常、アプリケーション、その依存関係、ライブラリ、バイナリ、設定ファイルで構成されます。反対に、VMにはランタイム環境と独自のオペレーティングシステムが含まれているため、煩雑で移植性が低くなっています。
Kubernetesオーケストレーションプラットフォームは、 OSレベルでの仮想化です。これは、REST APIを介して呼び出されるOSリソースでアプリケーションを実行するための仮想プラットフォームを提供します。これは、ソフトウェアとそのすべての依存関係を含むポータブルな実行可能イメージを使用したマイクロサービスアーキテクチャの一形態です。
かつては重い、移植性のないアプリケーションが標準でした。現在では、Kubernetesのような自動化されたコンテナシステムを使用すると、プラットフォームに関係なく、さまざまなコンピューティング環境で複数のコンテナをサポートする単一のOS操作でアプリケーションを構築できます。たとえば、Googleは毎週数十億のコンテナを実行しています。
Kubernetesの用語
K8を使い始めるときに知っておくと役立つKubernetes固有の用語がいくつかあります。
Kubernetes API :クラスタの状態を保存するRESTfulインターフェイスを備えた柔軟なAPI(直接またはツールを使用してアクセスできる)
Kubectl:コマンドを実行するためのコマンドラインインターフェイス
Kubelet:PodSpecsを使用して、コンテナが仕様通りに正常に動作することを保証するエージェント
Image:コンテナ内で実行されるアプリケーションを構成するファイル
Pod:クラスタで実行されているコンテナのセット
Cluster:コンテナでアプリケーションを実行する複数のワーカーマシン(ノードと呼ばれる)を持つマスター
Node:マスターコンポーネントによって管理される、ポッドを実行するためのサービスを備えたワーカーマシン
Minikube:ローカルコンピューター上のVM内でクラスタノードを実行するツール
Controller:望ましい状態が観測されたクラスタの状態と一致することを保証する制御ループ
DaemonSet:ノードがクラスタに追加されたときに、NodeがPodのコピーを実行することを保証する
そのほかの用語とその定義が記載された用語集は、Kubernetes Standardized Glossaryにあります。
Kubernetesを使ってみる
Kubernetesコンテナ管理システムにより、企業は自動化された仮想のマイクロサービスアプリケーションプラットフォームを作成できます。コンテナサービスを使用することにより、複数の種類のサーバホスト、クラウド環境、その他のインフラにまたがる軽量アプリケーションをより効率的にビルド、デプロイ、水平スケーリングできます。
Google Container Engine(GCE)でKubernetesの使用を開始するには、GCEでクラスタを作成するためのステップバイステップガイドをご覧ください。
本記事は米国Sumo Logic社のサイトで公開されているものをDigital Stacksが日本語に訳したものです。無断複製を禁じます。原文はこちらです。
- Dockerとは Dockerは、ソフトウェアコンテナのコンテナ化プラットフォームとして知られているオープンソースの仮想化テクノロジーです。コンテナは、独自のファイルシステムを含むアプリケーションを単一の複製可能なパッケージに含める手段を提供します。 2013年にソロモン・ハイクスによって開始されたDockerプラットフォームは、Linuxオペレーティングシステム用に特別に構築され、それ以来、コンテナの作成とデプロイを簡素化、自動化できることから、開発者とクラウドサービスプロバイダーの間で広く普及しています。 コンテナテクノロジーを使用すると、アプリケーションとそのすべての依存関係を標準化されたユニットにパッケージ化できるため、コンテナはすぐに仮想化の推奨アプローチになりつつあります。Dockerによる自動化は、その成功に不可欠です。
Dockerコンテナ
コンテナは新しいテクノロジーではありません。仮想マシン(VM)と同様に、これらは何年も前から存在している仮想化の形式です。ただし、VMとは異なる点は、フットプリントのサイズです。 VMは仮想オペレーティングシステム全体を作成しますが、コンテナはアプリの実行に必要で、まだホストコンピュータで実行されていないファイルのみを持ち込みます。実行しているシステムのカーネルを共有することで無駄を省き、可能な場合はアプリ間の依存関係も共有します。つまり、パフォーマンスがよりスムーズになり、アプリケーションのサイズが小さくなり、デプロイメントがより速くなります。Docker Engine
Dockerコンテナは効率を提供するコンポーネントであり、Docker Engineはそれを可能にするものです。Dockerコンテナはイメージファイルから実行されます。これは基本的に、特定のオペレーティングシステムで特定のアプリケーションを実行するために作成されるファイルです。Docker Engineはそのイメージファイルを使用してコンテナを構築し、実行します。 軽量のDockerエンジンとそれが提供する簡単な自動化こそが、Dockerを成功したツールにした真の革新的ツールです。コンテナのデプロイを自動化する機能は、Dockerが一躍脚光を浴びるようになった理由です。仮想化環境におけるスケーラビリティの向上という利点を提供し、ビルドとテストの高速化を可能にします。DockerはDevOps環境にどのように貢献するか
DevOpsチームは、Dockerを使用することで多くの利点を得ます。OSリソースの即時起動と信頼性の向上により、このプラットフォームはアジャイル開発の高速な反復に最適です。開発環境は、同じバイナリと言語ランタイムを使用して、チーム全体で一貫しています。 コンテナ化されたアプリケーションはシステム全体でリソースの使用と環境が一貫しているため、DevOpsエンジニアは本番環境でも自分のマシンと同じようにアプリが動作することを確信することができます。また、Dockerコンテナはコンパイルの問題を解決し、開発プロセスにおける複数の言語バージョンの使用を簡素化するのにも役立ちます。 本記事は米国Sumo Logic社のサイトで公開されているものをDigital Stacksが日本語に訳したものです。無断複製を禁じます。原文はこちらです。" target="_blank">


0 Comments