概要
kubernetesをプロダクションで使うならネットに転がっているマニフェストをコピペだけで運用していくのは設定が足りなくなるケースがある。そのために何が必要かをまとめたTIPS的な記事
Pod
- リソースの割り当てを行う。(requestsはサーバのスケジューリングに使われるため)
ライフサイクルの設定
- Entorypointで事前処理を行う
- init Containersを利用する
- Sidecarパターンを使う
- postStartを使う
- preStopを使う
- リスタートのポリシーを書く
- terminationGracePeriodsSecondsを設定する
- ローリングアップデートなりでダウンタイムがない設定を行う
- [Node|Pod]のアフィニティを使う(Nodeセレクターなども)
イメージ
- タグを必ず設定する
- latestタグは使わない
- イメージの元は信頼できるサイトを使っているか
死活監視
- livenessProbeを使う
- readinessProbeを使う
- startupProbeを使う
セキュリティ
- allowPrivilegeEscationsがfalseになっているか
- runAsUserでrootを設定しない
- capabilitiesが不用意に設定されていないか
その他
- ローカルdirとか使ってないか
- HPAが設定されているかどうか