めもった
Kubernetes evolution and extensibility
@thockin さん
3番目のコミッタ
完全英語セッションですた。
メモ取る余裕がないっす。。。
kubeletってずっとくべれっとって読んでたけど、きゅーべれっとだった。
質問コーナー
Q. kubeletとかスクリプトあるけど使いにくいんだけど
A. 3つの段階に分けて改良中。
- Provisioning
- Deployment
- Configuration
今は使いにくいけど改善していくよ。
Kubernetes Monitoring by Datadog
@spesnova さん
https://speakerdeck.com/spesnova/monitoring-kubernetes-with-datadog
DatadogとのIntegrationについて。
モニタリングの意味とは
- Kubernetes上のコンテナのモニタリング
- Kubernetesのクラスタのモニタリング
Monitoring Theory
Datadog Monitoring Theory
Datadogが作ったベストプラクティス。
https://www.datadoghq.com/blog/monitoring-101-alerting/
なぜモニタリングするか?
- Work Metrics
- アプリがきちんと動いてるかどうか知りたい
- レスポンス来るか
- エラー率が低い
- などなど
- Resource Metrics
- CPU
- Memory
- Events
- CPUが上がってる→なぜ上がったのかわからん
- デプロイか?インフラの障害か?
アラート出すときはWorkMetricsに対して出す。
調査の時にResourceとEventsを見る。
How Monitoring
VMとか物理マシンとコンテナでだいぶ集め方が変わる
物理マシンの時は固定だからハードコーディングで問題なかった
クラウド、VM→サーバーの数がどんどん増える。
→ そこで出てくるやりかた
Auto Registration。
Sensuなどの自分で登録しに行くやつ。
Role Base Aggregation
ロールで抽象化することでオートスケールするときに追えるよね、という考え
監視のエージェントプロセスと分ける
どのホストにどのコンテナがデプロイされるかは分からない。
どこに置かれたか分からないものをどうやって追いかけるのか問題。
- サイドカーパターン
- 複数コンテナをセットで使う
- けっこうシンプル
- 複数コンテナがある場合にセットでエージェントがいることになって効率が悪い
- Agent with service Discovery
- とりあえず置いておいて、エージェント自身が自分で判断する
- kubeletがコンテナの位置を知ってるからkubeletに聞けばいい
- 常に一個だけでいい。
- けど仕組みが複雑になる。
Native Solution
cadvisorが書くホストに必ず配置
kubeletとセット。
kubeletがcadvisorにMetricsを要求
Heapsterが収集、Influxdbに入れる、Kubedashがダッシュボードを提供
Collecting custom metrics
Prometheus使う
or RedisとかElasticsearchを使う
なぜPrometheus?
ほぼ公式ツール。
GoogleのBorgmonからインスパイア。
GOogleの監視システムからインスパイアされて作られた。
Monitoring with Datadog
上記あるのに、なぜDatadogを選ぶのか?
Docker, Kuberrnetes
Long data retention
すごいデータの量になる。
解像度が時間経つ毎に荒くなる。ロールアップされる。
13ヶ月分はそのままで持つ。
Events timeline
k8sは色んなモノが知らない間に起きる。
Auto Healing、Auto Scaling
これらを取ってくれる
Query based monitoring
k8sを使うとホストは抽象化される。
論理的なグルーピングが重要になる。
それを見るためにクエリが必要になる。
How to setup?
各ノードにDatadogのエージェントを配置する。
k8sはプラガブルに色々交換できる
監視テンプレートを作る。
git2etcd、git2consulが便利。
タイムラグがない。
Monitoring Cluster
クラスタ自体のモニタリング。
k8sにはクラスタのモニタリングを見るエンドポイントがない。
正常とは?
- PodsとServicesが動いてるか
- 色んなコンポーネントからできてる
- 全部が並列に存在してる
つまり、コンポーネントは
- kubelet
- Datadogが対応してる
- syncloopが動いてるかを見てる
- etcd
- Datadogにある。
- 色々メトリクス取れる。
- etcdはPrometheusみたいになっていってる
- pods
- たくさんありすぎ
- クエリで取得する
まとめ
Datadog便利
サイドカーかサービスディスバリ
クエリベースモニタリング必須
質問
- ラベルのベストプラクティスは?
- k8sのクラスタ管理は?
Go microservices w/ Kubernetes
@IanMLewis さん
Monolithic Apps
色々成長していくとでかくなって管理しにくくなる、開発コストが高くなる
そこでMicroservices。
サービス指向のアーキテクチャに変えていく。
それぞれのサービスでスケールさせることができる。
モノリシックだと、全部をスケールさせないといけなくて無駄が多い。
Microservices & Containers
コンテナ
スケールとかするのに向いてる。
VM立ち上げるよりも早い。
早い、効率がいい。
ただし、コンテナをデプロイするのに課題がある。
ノードが落ちたら?複数にデプロイするには?
コンテナがクラッシュしたら?アプリ自体をどうデプロイする?
アップデートはどうする?
そこでKubernetes。
代替の課題は解決できる。
Kubeneters
色んなクラウドプロバイダに対応
基本的にはユーザーがAPIを叩く。
状態をずっと監視してる。
その状態を保つようにしてくれる。
Availabilityを守ってくれる
ローリングアップデートできる。
Demo
gRPC使ったデモ
goの場合、バイナリ一個入れるだけで終わりになるからすげー小さくできていい。
LT
Kubernetes helm & helmc
@ladicle さん
https://speakerdeck.com/ladicle/kubernetes-helm-and-helmc
Bashの問題
helmはk8sのパッケージマネージャ
helm classicが元々あったやつ
helm クラサバ型のツール
どっちを使うべきか?
helmc一択。
しかし、今後メンテされなくなる。
Managing Kubernetes manifests
@summerwind さん
https://speakerdeck.com/summerwind/managing-kubernetes-manifests-with-spruce
k8s使って大きなインフラ作ってる
Spruce
YAMLをマージしてくれる
HashicorpのVaultも使える
これを使ってどうやって管理するか?
もうひとつのK8s Paas
Deis
よい子のためのKubernetes絵本w
k8sはミドルウェアを提供しているわけじゃない。PaaSじゃないよ。
3つのデプロイ方法
- Docker Image
- Dockerfile
- Buildpack
簡単にできるよ
Awesome kubectl explain
Deployment Resource作りたいとき
どんな構造だっけ…?
わかりにくい。
どのドキュメント見ればいいか分からん。
kubectl explain
リソースタイプ入れるといろいろ表示してくれる
kubectl explain deployment --recursive
素晴らしいけどターミナルでしか見れない。
電車の中で気になってみたいときがある。
作った
GKE vs Openstack Magnum
What is OpenStack?
IaaS
Magnumって何か?
gcloud container clusters みたいなやつ
BAY==CLUSTER
k8sec
シークレットを手軽にいじるツール
Goで書いてる
https://speakerdeck.com/dtan4/writing-kubenetes-tools-in-go
本番環境と開発環境で使えるコンテナイメージ
Kubernetesを本番で使いたい
越えなければ逝けない壁
- サービスのコンテナ化
- マイクロサービス化
- コンテナイメージの管理
- 開発環境もk8sに
- 本番でどう動くのかが分からなくなる
- データの永続化
コンテナイメージの管理について
黎明期
踏み台用意、Private Registryを置いた。
バックはS3。
SSHキーがあれば誰でもアクセス可能。
Why Microservices Matter by Heroku
独立して働けるようになるの良いね!
全てのコンテナにアクセスできるのいくない。
v2の認証モデル
Authorization Service
Goal
プロビジョニングとテストを自動化したい
どうやって自動化しているかの話
minikube
開発環境で使える
対応早い
DevOpsにおける組織に固有の事情をどうのように整理するべきか
ロールと人のマッピング難しい
イメージ作ってぽいってやるだけだから開発側でデプロイまでいけちゃう
一般論としては便利。
DevOpsの相談で出てくる話。
話が噛み合わない。
作業するのは人。
人をどうマッピングするか。
これは組織にすげー依存する。
一般論で語れないことを話すと良いね!!!
KAMIYACHO.K8S ソフトハウスにおけるK8S導入の取り組み
FinTech分野でコンテナは難しい?
自分が関わってるところはDocker、他はクラウド。
なぜ使わないか?
よくわからない、デプロイ方法が分からない。
Fig->Compose->k8s
Redspread面白そう
苦戦中。