【随時更新】Kubernetesベストプラクティスまとめ一覧

# Kubernetesベストプラクティスまとめ一覧

こんにちは、jackです。

Kubernetesベストプラクティスの和訳兼まとめを書いてますが、各回ごとのTL;DR、記事、原文がざっと見れるまとめページあったほうが見やすそうなのでつくりました。
まだ全七回あるので、随時更新していきます。

言うまでもないですが、TL;DRはその回の重要な部分だけ触れてますので、より詳しく知りたい方は各記事もしくは原文をどうぞ。


## コンテナイメージを小さくする方法とそのメリット

### TL;DR
* ベースイメージは常に**小さいサイズ**のものを使うように心がけよ
* インタープリタ型言語は**Alpine**を使え
* コンパイル型言語は**Alpine**を使った上で**multi-step build**をしろ

---

* 記事：[【第一弾】Kubernetesベストプラクティス：Container Images](https://qiita.com/jackchuka/items/59d5316d50aa2e37fe4a)
* 原文：[Kubernetes best practices: How and why to build small container images](https://cloudplatform.googleblog.com/2018/04/Kubernetes-best-practices-how-and-why-to-build-small-container-images.html)

## 名前空間の整理

### TL;DR
* **namespace**（名前空間）を有効活用せよ
* namespaceを使うことで**開発スピードがあがる**
* デフォルトのnamespaceは**3つ**
    * default
    * kube-system
    * kube-public
* **kubens、kubectxを駆使せよ**

---
* 記事：[【第二弾】Kubernetesベストプラクティス：namespace](https://qiita.com/jackchuka/items/a1456d8cab03651ddbf8)
* 原文：[Kubernetes best practices: Organizing with Namespaces](https://cloudplatform.googleblog.com/2018/04/Kubernetes-best-practices-Organizing-with-Namespaces.html)


## ReadinessとLivenessプローブの設定

### TL;DR
* 分散システムに**health checkは欠かせないもの**である、Kubernetesもまた例外ではない
* Kubernetesの**health checkの種類は2つ**
    * Readiness
    * Liveness
* **Health checkプローブの種類は3つ**
    * HTTP Probes
    * Command Probes
    * TCP Probes
* Livenessの**initialDelaySeconds**に要注意


---
* 記事：[【第三弾】Kubernetesベストプラクティス：Health Check](https://qiita.com/jackchuka/items/5629b1172da6267645f3)
* 原文：[Kubernetes best practices: Setting up health checks with readiness and liveness probes](https://cloudplatform.googleblog.com/2018/05/Kubernetes-best-practices-Setting-up-health-checks-with-readiness-and-liveness-probes.html)

## コンテナとNamespaceのリソース管理

### TL;DR
* プロジェクトやチームが大きくなってきたら、**リソース管理をするべし**
* リソース管理には **Requests** と **Limits** がある
    * Requestsは**最低限割り振られるリソース（CPUやメモリ）**
    * Limitsは**割り振られるリソースの上限**
* CPUユニットは **`m` (millicores)**
* Memoryユニットは **`Mi` (mebibyte)**


---
* 記事：[【第四弾】Kubernetesベストプラクティス：Requests & Limits](https://qiita.com/jackchuka/items/b82c545a674975e62c04)
* 原文：
[Kubernetes best practices: Resource requests and limits](https://cloudplatform.googleblog.com/2018/05/Kubernetes-best-practices-Resource-requests-and-limits.html)


## 正常終了を常に心がけよ

### TL;DR

* 常に**正常終了**処理するアプリケーションを作れ
* Kubernetesの**termination lifecycle**は
    * `Terminating` State
    * preStop Hook
    * SIGTERM
    * terminationGracePeriod (30秒)
    * SIGKILL

---
* 記事：[【第五弾】Kubernetesベストプラクティス：Graceful Shutdown](https://qiita.com/jackchuka/items/87a17059dd52579bf389)
* 原文：[Kubernetes best practices: terminating with grace](https://cloudplatform.googleblog.com/2018/05/Kubernetes-best-practices-terminating-with-grace.html)

## WIP

### TL;DR

---
* 記事：
* 原文：[Kubernetes best practices: mapping external services](https://cloudplatform.googleblog.com/2018/05/Kubernetes-best-practices-mapping-external-services.html)

## WIP

### TL;DR

---
* 記事：
* 原文：[Kubernetes best practices: upgrading your clusters with zero downtime](https://cloudplatform.googleblog.com/2018/06/Kubernetes-best-practices-upgrading-your-clusters-with-zero-downtime.html)