kubernetes meetup tokyo #2


めもった

## 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絵本ｗ
k8sはミドルウェアを提供しているわけじゃない。PaaSじゃないよ。

3つのデプロイ方法

- Docker Image
- Dockerfile
- Buildpack

簡単にできるよ

### Awesome kubectl explain

Deployment Resource作りたいとき
どんな構造だっけ…？
わかりにくい。

どのドキュメント見ればいいか分からん。

```
kubectl explain
```

リソースタイプ入れるといろいろ表示してくれる

```
kubectl explain deployment --recursive
```

素晴らしいけどターミナルでしか見れない。
電車の中で気になってみたいときがある。

作った

https://kubectl-expla.in

### GKE vs Openstack Magnum

What is OpenStack?

IaaS

Magnuｍって何か？
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面白そう
苦戦中。