This presentation was used for Japan Container Days 2018.
I explained the important point to use the k8s on Production environment for Japanese Audience.
This presentation was used for Japan Container Days 2018.
I explained the important point to use the k8s on Production environment for Japanese Audience.
2. Who Are you?
Group Name / DOC ID / Month XX, 2020 / ? 2020 IBM Corporation 2
自己紹介
氏名:黒沢 勇
出身:神奈川県川崎市
前職: VMware SE (2017年入社)
現職: IBM CSM (2021/11月入社)
趣味: 自宅ラボ、ゲーム、積みプラモ
前職の登壇: vForum 2019-20, Cloud Operator Days Tokyo 2021
得意技術:仮想化、k8s、クラウド管理自動化可視化
Twitter: https://twitter.com/Torlek96
Linkedin: https://www.linkedin.com/in/kurosaway-b7486714b/
3. 現在の自宅ラボ
Group Name / DOC ID / Month XX, 2020 / ? 2020 IBM Corporation 3
現在はIntel NUC4台をVMware ESXiとして使用
Corei7, 64GB DDR4を4台なので大抵のことはできる
しかしk8sを満足に動かすためには若干力不足.
現在yahoo オークションで
1Uのラックサーバに張り付いて落札を狙ってます。
(ちなみに明日21:00が落札期限)
Skylake以上の世代、
かつ24コア以上のサーバをお持ちの方はぜひご連絡を
Twitter: https://twitter.com/Torlek96
Linkedin: https://www.linkedin.com/in/kurosaway-b7486714b/
4. Agenda
Group Name / DOC ID / Month XX, 2020 / ? 2020 IBM Corporation
1. コンテナ技術が台頭する前の時代のお話
2. PaaS出現
3. コンテナの出現
5. コンテナ技術が
台頭する前の時代
Group Name / DOC ID / Month XX, 2020 / ? 2020 IBM Corporation
昔々のそのまた昔、仮想化ができる前から話は始まります
人類がアプリケーションの起動を祈っていた時代です
(ちなみに私は今でもちゃんと祈りを捧げます)
6. プロセス技術の開発
Group Name / DOC ID / Month XX, 2020 / ? 2020 IBM Corporation 6
chroot
1980年代に開発、ユーザが使用できるディレクトリを
制限する機能としてUnixに追加
セキュリティ技術を向上させ、
ユーザが使えるリソースを制限することが可能
コンテナと仮想マシン技術の肝は
リソースの制限と隔離。
そのため、本技術は仮想化技術の大祖先にあたる
FreeBSD Jail
chrootを発展させ仮想のFreeBSD環境を実行できる環境
を用意できる機能
usr
home
etc
bin
usr
home
etc
bin
dirB
dirA
chroot
root
Jail
7. 仮想マシン技術の開発
Group Name / DOC ID / Month XX, 2020 / ? 2020 IBM Corporation 7
2000年代に時は移動、元祖仮想マシンはVMwareからスタート
仮想マシン (VM) 技術が
コンテナ技術の開発に先立ち、開発が進む.
必要なリソースをファイルとしてパッケージングし、
内部的にはプロセスとしてVMを動かす技術は大ヒット
この技術により全く違うOSも、バージョンが違うOSも
同じホストで動かすことができるようになった。
ハイパーバイザ型の仮想化よりも
ホスト型仮想化の方が先に開発されている
1999?
2007?
2010?
2008?
※あえて古いロゴを使用
8. 仮想マシン技術のサーバへの適用
Group Name / DOC ID / Month XX, 2020 / ? 2020 IBM Corporation 8
サーバを1つずつ管理していくことが困難になってくる
ハイパーバイザー型の仮想技術が発達することで、
仮想マシンを本番環境で運用できるようになる
次第にホスト数が増えていき
単一コンソールでは管理がしきれなくなったため、
VMwareではvCenter Server、
KVMではHorizonと呼ばれる管理ソフトウェアが開発された
2003年にvCenter Server 1.0をリリース
2012年にEssex versionからHorizonをリリース
9. パブリッククラウドの出現
Group Name / DOC ID / Month XX, 2020 / ? 2020 IBM Corporation 9
大量のコンピュートリソースを間借りできるサービスがリリース
2006年リリース 2010年リリース 2008年リリース
2005年リリース
(SoftLayerからカウント)
2016年リリース 2011年リリース
10. Solaris Container と LXC
Group Name / DOC ID / Month XX, 2020 / ? 2020 IBM Corporation 10
一方でコンテナの元となる技術出始める
2004年?
Solaris Unix 上でコンテナ仮想化を実装する技術が
2004年にパブリックベータとして公開。
Solaris Zoneと呼ばれる技術を用いて
Zoneごとに独立したアプリケーションを稼働可能にした
従来の仮想マシンと比較して起動が早く、
仮想化によるオーバーヘッドも少ないという特徴も併せ持つ。
本格的な商用コンテナ初号機
2008年にLinuxでも本格的なコンテナ仮想化が使用可能に
2006年に開発されたProcess Containerがcgroupsと名前を変え、
Linux Namespaceと組み合わせて軽量なVMをデプロイする機能としてリリース
Dockerとは思想が異なるため使い分けが必要
11. 蛇足: Sunのコンテナといえば
Group Name / DOC ID / Month XX, 2020 / ? 2020 IBM Corporation 11
Project Blackboxと呼ばれるコンテナ型DCの発表も!
中にネットワーク機器も入っている小さなDC!
まさにコンテナなので
上に積んでスケールアップもできるし、
横に並べてスケールアウトもできるという
コンテナの考えを引き継いだDC!
※本当にその思想でできたかは知りません
12. 仮想マシン技術について
Group Name / DOC ID / Month XX, 2020 / ? 2020 IBM Corporation 12
ハイパーバイザー仮想化
仮想マシン(VM)
ゲストOS
アプリ
アプリ
仮想マシン(VM)
ゲストOS
アプリ
アプリ
ハードウェア
ホスト仮想化
アプリ
アプリ
仮想マシン(VM)
ゲストOS
アプリ
アプリ
bin/lib
vCPU vRAM vNIC vCPU vRAM vNIC vCPU vRAM vNIC
bin/lib bin/lib
ハイパーバイザー
(専用OS)
ホストOS
bin/lib
ホスト仮想化はオーバーヘッドが大きくゲストOSのパフォーマンスが低くなることもあるが、気軽に扱える。
ハイパーバイザ仮想化は専用OSを用いるため、オーバーヘッドが少なくなるが別途踏み台が必要になる。
また、Intel VT-x, AMD-SVMと呼ばれるCPU側でVMを高速化する技術も発達している。
ハードウェア
CPU RAM NIC
CPU RAM NIC
13. PaaSの出現
Group Name / DOC ID / Month XX, 2020 / ? 2020 IBM Corporation
時は2010年台に移り、VMを使うのが当たり前の時代
VMでみんな大満足したはずなのに何でPaaSができたのでしょうか?
IaaS、SaaSだけでいいんじゃないか?と思いませんか?
16. 仮想マシン技術で開発者の要求は満たせたか?
Group Name / DOC ID / Month XX, 2020 / ? 2020 IBM Corporation
No.
仮想マシンは様々なOSをVMとして
気軽にデプロイすると言う要件を満たした。
しかし、VMの中で実行環境を構築したり、
パイプライン管理ツールなどでテスト管理した
りとやることは非常に煩雑なままであった。
=依然開発者はストレスフルなままであった。
設定
パイプライン処理
Compute Storage Network
クラウドリソース
VM VM VM
Application
開発者
コード
17. 開発者の究極のモチベーション
Group Name / DOC ID / Month XX, 2020 / ? 2020 IBM Corporation 17
開発者はコードを書いて、
素敵な機能を実装し、
ユーザや自社に貢献することがモチベーション
コードを書き終わったらコマンド1つで
さっさとリリースして欲しい
(インフラのことなんか気にしたくない)
Compute Storage Network
クラウドリソース
VM VM VM
Application
開発者 コードだけにしたい
18. 開発者の究極のモチベーション
Group Name / DOC ID / Month XX, 2020 / ? 2020 IBM Corporation 18
Compute Storage Network
クラウドリソース
VM VM VM
Application
開発者
1つのコードだと思いたい
=Infrastructure as a Code (IaC)でやりたい、
もしくは気にせずにプッシュしたらリリースしたい
Application
コードだけ
19. PaaSの台頭
Group Name / DOC ID / Month XX, 2020 / ? 2020 IBM Corporation 19
Rubyの実行環境を提供する商用サービスとして2007年にリリース
様々なコードをアップロードするだけで
簡単にwebサービスを立ち上げることが可能。
無料プログラムがあるためスタートアップ、個人開発にも大人気
内部的にはDynoと呼ばれるコンテナが稼働している
Ruby/PHPの実行環境を提供する商用サービスとして2009年にリリース
Herokuと同じく簡単にWebサービスをリリースできる
プラットフォームとして人気
Javaコードをプッシュするだけでアプリケーションがリリースされる
PaaSのソフトウェアとして2011年リリース
(現在はPHP,Ruby,Goなどにも対応)
VMwareが開発を行っていたがPivotal Softwareに開発を移管
IBM Cloudを含めた様々なクラウドで実行されている
20. IaCに関わるツールの紹介(ごく一部)
Group Name / DOC ID / Month XX, 2020 / ? 2020 IBM Corporation 20
インフラリソースをファイル形式で定義し、
あまねくクラウドへリソースをデプロイする機能を提供
仮想マシンをパッケージとしてデプロイすることが可能
コマンド1つでローカル環境にデフォルトでVirtualbox環境の仮想マシンをデプロイ
PHP, Pyton, Javaなどのコード開発環境をコマンド1つでデプロイ可能
Playbook単位でサーバの構成管理をYamlファイル形式で管理
サーバのあるべき姿を定義してインストールを実行
Ansible towerというGUI管理ソフトウェアを提供
21. 他にもツールはまだまだある
Group Name / DOC ID / Month XX, 2020 / ? 2020 IBM Corporation 21
時間はないので割愛しますが、他にも様々なソフトウェアがあります
22. コンテナの本格利用
Group Name / DOC ID / Month XX, 2020 / ? 2020 IBM Corporation
PaaS環境が整ってきましたが、まだまだ技術の進化は止まりません
ごく一部で使っていたコンテナがあまねく環境に広がっていきます
27. しかし、Dockerの限界も見えてきた
Group Name / DOC ID / Month XX, 2020 / ? 2020 IBM Corporation 27
わがままなのは開発者だけじゃなかった
? コンテナたくさんデプロイしたけど冗長性はどうやって担保?
? マイクロサービス、目指したはいいけれどLBは、まさか手動?
? システム毎にリソースの制限したいけどどうするの?
VM時代はできたよそれ!
? Dockerって基本NATで外に出ていくけど、
どうやって他のホストのコンテナと通信するの?
? このコンテナ絶対にこのホストで動かしたいんだけど?
? コンテナってデータ消えるじゃん!
28. Googleの衝撃的なプレゼン(2014年)
Group Name / DOC ID / Month XX, 2020 / ? 2020 IBM Corporation 28
https://speakerdeck.com/jbeda/containers-at-scale
Googleは全アプリケーションを
コンテナ上で稼働
? 毎週20億コンテナを起動
? リソースの隔離、QoSを実現
? Google App Engineの内部も
コンテナ化をアナウンス
? GoogleはDockerではなく、
lmctfyを使用
29. オーケスレーションシステムの代表例
Group Name / DOC ID / Month XX, 2020 / ? 2020 IBM Corporation 29
Dockerの限界を越えるためにコンテナを自動的にうまく管理する仕組みを導入
事実上この2つが争っているだけだったが現状はKubernetesの勝利
36. 時代は繰り返されているように見える
Group Name / DOC ID / Month XX, 2020 / ? 2020 IBM Corporation 36
開発環境から商用環境へ適用
VMware Workstation
開発環境 商用環境
仮想マシン技術
コンテナ技術
37. 各ベンダーのKubernetesへのコミット
Group Name / DOC ID / Month XX, 2020 / ? 2020 IBM Corporation 37
https://k8s.devstats.cncf.io/d/9/companies-table?orgId=1
多くのITベンダーがk8sコミュニティに投資、
コミットを行っており開発が盛んな状況。
次世代のOSになるというコメントも出ているほど
38. VanillaなKubernetesの課題
Group Name / DOC ID / Month XX, 2020 / ? 2020 IBM Corporation 38
機能が不十分
Dev Ready だが
IT Ops Ready
ではない
Supportが
Communityのみ
Enterpriseで使うには
可視化機能やLog機能が不十分
単体でCI/CDは実現できない
習得には学習コストがかかる
Enterpriseな
ユーザ企業が使うには不安
39. 各ベンダーのKubernetes技術
Group Name / DOC ID / Month XX, 2020 / ? 2020 IBM Corporation 39
Red Hatが開発したコンテナ技術を丸ごとパッケージとして提供
リソース管理、カタログ、デプロイ機能、CI/CD機能を提供
VMwareが開発したコンテナ技術をパーツとして提供
Build自動化やマルチクラウド管理機能なども提供
既存vCenterからKubernetesの管理をすることも可能
Rancher Labsが主導となって開発しているマルチクラウド向けの
KaaS(Kubernetes as a Service) ソリューション
KubernetesをGUI上で簡単に管理できるため、初心者にも易しい。
40. パブリッククラウド上のk8s
Group Name / DOC ID / Month XX, 2020 / ? 2020 IBM Corporation 40
各クラウドベンダーのマネージドk8sを利用できるKaaSサービスを各社でリリース
41. まとめ
Group Name / DOC ID / Month XX, 2020 / ? 2020 IBM Corporation 41
コンテナ技術が生まれ
たモチベーション
歴史は繰り返す 残った課題の対応
開発者の生産性向上から始まり、
本番環境での適用がスタート
コンテナ技術は開発者の生産性
を劇的に向上させるために生ま
れ、実際に向上
様々なベンダーがk8s技術に注力
次世代OSとして期待
42. Group Name / DOC ID / Month XX, 2020 / ? 2020 IBM Corporation 42