CoreOS Meetup Tokyo #1 に参加してきた #coreosjp
参加してきたので個人的メモをまとめました。 k8sは自分で触ってなくて、調べながら聞いてたのでほとんどメモ取ってません。 最後に個人的な所感をまとめてます。
Opening & Overview of CoreOS (@deeeet)
CoreOSとは
Motivation
- インターネットのセキュリティを根本的に改善したい
- 常にソフトウェアをupdateを出来る仕組みを持つOS
特徴
- Minimal(シンプル)
- No package manager
- No language runtime
- Update System
- Omaha(OS自身のBlue-Green Deployment)
- Container
- Clustering
- Data Center as a Computer
提供している機能
- etcd
- 分散型KVS
- fleet(flt)
- 分散initシステム
- etcdで作ったクラスタに対してスケジューラ的に
- Rocket(rkt)
- AppC runtime
- flannel
- kubernetes
Latest News
- TECHTONIC
- CoreOS Stack + Kubernetes
- 商用パッケージ
CoreOS/Rocket (@mopemope)
RKT from Yutaka Matsubara
www.slideshare.net
rktとは?
- Application Containerを動かすためのもの
- 2つのコンポーネントを持つ
- Application Container Executor(ACE)
- Metadata Service
- コンテナ外にCredential情報を置く仕組み
キーワード
- App Container Image
- App Container Image Discovery
- イメージを配信するための仕組み
- App Container Pod
- Containerをひとまとめにする仕組み
- まとめて配信
- App Container Executor - Runtime
Manifest
- jsonで持つ
- pod manifestも同様
Dockerとの違い
Composable
- no central daemon
- docker formatではなく共通formatでupload/download
Security
- イメージを暗号化、認証
Image distribution
- rktはマニフェストがない、自由
rktでできること
- Application Container Imageをダウンロード
- Docker imageもDL化
- セキュリティ証明書
- コンテやなPodを立ち上げる
- 動いているコンテナの中に入れる(Docker exec的な)
- Private network
- private(NAT)
- bridge
- macvlan
- Metadata Service
CoreOS OEM on NIFTY Cloud (@higebu)
www.slideshare.net
- 爬虫類大好き
CoreOS OEMとは
- CoreOSをいろんなプラットフォームで動かせる仕組み
- Nifty Cloud
- Community-Supported Platformsの中
CoreOSのOEMをするには
- Community-Supported Platformsの中
- 自身のプラットフォームで動くイメージを作成するための修正をPRしてMergeしてもらう
- ドキュメントを書いてPRしてMergeしてもらう
OpenShift v3 でDockerのPaaSを作る話 (@jacopen)
www.slideshare.net
OpenShiftの機能
- Kubeternetes
- 適した場所へコンテナを配備(スケジューリング)
- Docker image指定してのデプロイ
- Multi Tenant
- source-to-image
- githubのURLからdocker buildしてregistryに送る→kubernetesが配備
- Request Routing
- HAProxy
- Trigger
- GitHub Hookとか
まとめ
- OpenShift3=Docker+Kubernetes+PaaSの機能
- PaaSとしてはまだまだ未完成
- 現時点ではβ
- 正式リリースは2015夏くらい?
OpenShiftの構成
- docker
- kubernetes
- PROJECT ATOMIC
- 今回CoreOSで動かした
CoreOS運用の所感 (@spesnova)
- CoreOS on EC2
- 画像リサイズのホストに使っている
- &ElasticSearch
デプロイ
- ELB配下でBlue-Green
ログ
- logentries
- systemdのjournalを全部送る
モニタリング
- Datadogを全台に
etcd / fleet
- 全部使っていない
- ダイナミックオーケストレーション
- リソースマネジメントは?
- 使っていなくてもメリットはある
- ホストマシン構築タスクはほぼない
- AMI焼く必要すらない
- コンテナとホストの分離が楽
自動アップデート
- 今はオフ
- 今は手動アップデート
- locksmith(依存でetcd)が必要
- etcdの安定運用が前提条件
遭遇した問題
- CoreOSがEC2でクラッシュ
CoreOS channel選び
- alphaは品質的にalphaではない
- アップデートの頻度を表している
- ただしalphaは致命的なアップデートもくる
やりたいこと
まとめ
Docker + Checkpoint/Restore (@kawamuray)
- Checkpoint/Restore(CRIU)を用いてコンテナの起動を高速化
Checkpoint/Restore(CRIU)
- VMのスナップショットみたいなイメージ
使い道
- Startup acceleration
- Live migration
使う目的
- 起動の遅いサービスの高速化
- リソースの効率の最大化
- n台のサーバで構成されるPaaSクラスタのサービスキャパシティの最大化
- かつ低コスト
Kubernetes on CoreOS (@ianmlewis)
Kubernetesとは?
- クラスタのマネジメントシステム
- 0.14.2 released
- 200over contributors
#### Labels - Podに対して付ける
Kubetenetes on CoreOS
- kubernetes-apiserver
- kube-controller-manager
- kube-scheduler
CoreOSで運用する際に考えないといけないこと (@harukasan)
pixivにおけるCoreOS
デプロイ
- fleetctlをキックしてquay.ioからpullしてデプロイ
- デプロイ職人によるローリングデプロイ
- コンテナの外の状態を気にする必要がない
- 依存関係をOpsではなくDevの人が管理できる
モニタリング
- dd-agent
なぜCoreOSを採用したか
- アプリケーショの依存管理をコンテナ内に閉じ込めたかった
- コンテナしか動かさない運用をしたい
- なるべく状態を気にしたくない
- Immutable
- コンテナの状態は変えない
- Disposable
- コンテナをいつでも捨てることができる
CoreOSをどう捉えているか
- コンテナをいつでも捨てることができる
- Immutable
- systemd + etcd/fleet/docker
- サービスの管理はすべてsystemd
- だいたいのことはsystemdがやる
- fleetを使ってデプロイ
- 開発時のDockerコンテナを動かすインスタンスとして便利
CoreOSを使う上で考えないといけないこと
- 外部に依存しない状態を作るか
- まだうまい方法が見つかってない
- デプロイメント
- fleetだとローリングリスタートできない
- 自前でスクリプトを書く必要
- fleetだとローリングリスタートできない
- システムオーケストレーション
- fleetでできるのは「このsystemdのサービスをクラスタ内でいくつ動かすか」
- このサービスメンバをオートスケーリングとかは管理できない
- kubernetesならできそう
- fleetでできるのは「このsystemdのサービスをクラスタ内でいくつ動かすか」
- etcdにおける最小構成
- 最低4台
- 3台だと1台落ちるとスプリットブレインが起こる
- コンテナに対するロードバランシング
- モニタリング
- ログ転送
- 各ノードにtd-agentを立てている
- ※CoreOS上にtd-agentインストールして動かしてるっぽい?
- 障害対応
- 今のところホスト依存の障害は遭遇していない
個人的所感
- rktはimage distribution周りの自由度が高い分、本番運用を考えた時にイメージの取り回しや配信でとても悩みそう
- CheckPoint/Restore(というかCRIU)の話、色々すごすぎてついていけなかった
- Kubernetes周りは自分で触ってないのでほとんどついていけず... いきなり本番で使うのは厳しいっていう話を @spesnova さんも話していた。とはいえうちもずっとCapistrano使い続けるのはどうなのかなあっていう感じだったので試してみる。
- DevとOpsをいい意味で分離という切り口は確かにとてもおもしろい。今までDockerを触ってこなかったエンジニアへのアプローチにもなる。
- そういえばうち今CoreOSはalphaチャンネルのもので動かしてた。@spesnovaさん曰くCoreOSのチャンネルは現状beta使うのが良さそうとのこと。チャンネル周りはalphaもstableも一長一短で消去法的にbetaしかない、っていう現状が結構つらみ。