昨日までのはこちら
100日後にエンジニアになるキミ - 95日目 - 開発環境 - Docker について
100日後にエンジニアになるキミ - 94日目 - 開発環境 - 仮想化について
100日後にエンジニアになるキミ - 91日目 - 運用 - 監視について
100日後にエンジニアになるキミ - 90日目 - 開発 - CIについて
100日後にエンジニアになるキミ - 88日目 - データ - データ転送について
100日後にエンジニアになるキミ - 86日目 - データベース - Hadoopについて
100日後にエンジニアになるキミ - 76日目 - プログラミング - 機械学習について
100日後にエンジニアになるキミ - 70日目 - プログラミング - スクレイピングについて
100日後にエンジニアになるキミ - 66日目 - プログラミング - 自然言語処理について
100日後にエンジニアになるキミ - 63日目 - プログラミング - 確率について1
100日後にエンジニアになるキミ - 59日目 - プログラミング - アルゴリズムについて
100日後にエンジニアになるキミ - 53日目 - Git - Gitについて
100日後にエンジニアになるキミ - 42日目 - クラウド - クラウドサービスについて
100日後にエンジニアになるキミ - 36日目 - データベース - データベースについて
100日後にエンジニアになるキミ - 24日目 - Python - Python言語の基礎1
100日後にエンジニアになるキミ - 18日目 - Javascript - JavaScriptの基礎1
100日後にエンジニアになるキミ - 14日目 - CSS - CSSの基礎1
100日後にエンジニアになるキミ - 6日目 - HTML - HTMLの基礎1
本日はKubernetes
についてです。
Kubernetesについて
公式などの説明だと、コンテナ化したアプリケーションのデプロイ、スケーリング
および管理を行うための、オープンソースのコンテナオーケストレーションシステム
と言うことだそうです。
簡単に言うとコンテナの運用管理と自動化を行うためのツール
と言ったところでしょうか。
K8s
と略記され、ギリシャ語で「操舵手」や「パイロット」という意味があり
知事やサイバネティックスの語源にもなっています。
ロゴも舵な感じですね。
K8s
は8文字のubernete
を8
に置き換えた略語だそうです。
コンテナを使う意義
とその前にコンテナ
を使うことの意味ですが
昔の開発環境では1つのサーバーにライブラリをたくさんインストールして
その上で動くアプリケーションを配置していました。
1つ1つの環境は重めになります。
それに対して現在の開発の主流はアプリケーションごとに
使用するライブラリ群を切り離すことで実行環境を軽くし
ビルドやデプロイなどの時間がかからないようにすることを目指しています。
アプリケーションの開発では開発環境の構築から始まりので
それを1からまとめてコンテナ
に集約し
開発現場と本番環境に差異がないようにしたり
環境整備にかかる時間の圧縮をしています。
そのような開発のメリットからコンテナ
を用いた開発が増えています。
コンテナオーケストレーション
当然開発するアプリケーション群が増えていくと
コンテナ
も増えていくことになります。
複数のコンテナ
を管理して自動化を行なって、複数制御してと言うことが
必要になって来ました。
Kubernetes
の登場により、複数のコンテナ
の管理や自動化が進んだため
この仕組みはコンテナオーケストレーション
と呼ばれるようになりました。
コンテナにも種類がありDocker
はその一つです。
Kubernetes
が対象としているコンテナはDocker
が標準になっています。
参考:https://www.kagoya.jp/howto/rentalserver/kubernetes/
Kubernetesを使うと何が出来るのか
プロダクションで利用しようとすると下記のようなことを考えなければなりません。
複数のDockerホストの管理
コンテナの死活監視
コンテナのスケジューリング、アップデート
スケーリング / オートスケーリング
ロードバランシング
障害時のセルフヒーリング
データやワークロード、ログの管理
その他システムとの連携、拡張、同期
Kubernetes
を利用することでこれらの課題を解決することができます。
Kubernetes
を利用しない場合には
これらの自動化の仕組みを1から作り上げる必要があります。
フルマネージドのサービス
クラウドサービスではKubernetes
を取り扱うことのできる
フルマネージドのサービスが存在したりします。
Google Kubernetes Engine(GKE)
Amazon Elastic Kubernetes Service(EKS)
これらを用いることで、自前で組むよりも簡単に
Kubernetes
を用いた環境を構築することができます。
まとめ
データ分析くらいであれば、コンテナ1つ使ってくらいで事足りますが
大規模開発になると数百とかのコンテナ数になり
管理もしきれなくなって来ます。
1からコンテナ管理の仕組みを作るのも大変ですし
既にコンテナ管理の仕組みは存在しているので
それを利用する方が得策です。
モダンな開発現場で仕事をしたい場合は
こう言ったコンテナ環境の制御の仕組みがあることを
押さえておく必要があると思います。
君がエンジニアになるまであと01日
作者の情報
乙pyのHP:
http://www.otupy.net/
Youtube:
https://www.youtube.com/channel/UCaT7xpeq8n1G_HcJKKSOXMw
Twitter:
https://twitter.com/otupython