Kubernetes
関連ページ:
Getting Started
Documentation
- https://kubernetes.io/docs/home/ … ドキュメント
- https://kubernetes.io/docs/tutorials/ … チュートリアル
- https://kubernetes.io/docs/tasks/ … How-toガイド
- Standardized Glossary - Kubernetes … 用語集
参考:
リファレンス
- https://kubernetes.io/docs/reference/
- APIリファレンス
- CLIリファレンス
- etc.
ベストプラクティス
ケーススタディ
参考:
Versions
How-to
Podの再起動
- K8sはクラスタの状態を宣言型で記述するので、「再起動する」というのを指示するのは難しいようだ
- 下の記事にあるように、Deploymentの定義を変えてapplyするのが良いだろう
- レプリカの数を0にして増やすという手もある
See
複数クラスタを設定する
- https://kubernetes.io/docs/tasks/access-application-cluster/configure-access-multiple-clusters/ …
kubectl config use-context
で複数クラスタを切り替えられるようにする設定チュートリアル
機密情報や環境設定の扱い
SecretsやConfigMapを使う。
参考:
Namespaceの削除
https://kubernetes.io/docs/tasks/administer-cluster/namespaces/#deleting-a-namespace
kubectl delete namespace my-ns
kubectl delete -f my-ns.yml
参考:
全リソースオブジェクト取得
kubectl get all
では一部しか取れない。
こんな感じで行ける。
kubectl api-resources --verbs=list --namespaced -o name \
| xargs -n 1 kubectl get --show-kind --ignore-not-found -l <label>=<value> -n <namespace>
参考: https://github.com/kubernetes/kubectl/issues/151#issuecomment-402003022
Topics
CFS quotaが有効のときCPU limits設定によってコンテナがストールする問題
2018年には起こっていた問題。
2023-01-17現在の状況は不明。
TL;DR:
- KubeletでCPU CFS quota有効だと問題
- OS kernelのスケジューラがCFSだったらデフォルト有効だと思う
- デフォルトの
cpu.cfs_period_us
が100ms … この単位時間でクォータがリセットされる - マルチコアのマシン上に複数Podがスケジュールされたとき、複数のPodが同時にCPUを使うと、すぐにlimitsに達してスロットルされてしまうことが起こり得る
仕組みについては、下の記事が詳しい:
関連リソース:
- https://github.com/kubernetes/kubernetes
- CFS quotas can lead to unnecessary throttling · Issue #67577 · kubernetes/kubernetes … 2020-11-01にクローズされたが、スレッドが伸びすぎたから閉じたという理由で、必ずしも解決したわけではなさそう(?)
- CPU Throttling on Linux kernel 5.4.0-1029-aws · Issue #97445 · kubernetes/kubernetes … 2023-01-17現在、オープン
- Optimizing Kubernetes Resource Requests/Limits for Cost-Efficiency an… pp.24-43
- Control CPU Management Policies on the Node - Kubernetes
- Kubernetesのresource requests, limits - Carpe Diem
- Kubeletの設定:
クラスタが大きくなるとどんな問題があるか?
巷では不安定になるとよく言われるが、どのくらいやばいのか、どんな問題が起こり得るのかを考察する。
起こり得る問題:
- Pod Affinityを使っている場合に、スケジューリングが遅くなる。
Inter-Pod AffinityとAnti-Affinityは、大規模なクラスター上で使用する際にスケジューリングを非常に遅くする恐れのある多くの処理を要します。 そのため、数百台以上のNodeから成るクラスターでは使用することを推奨されません。
GKE (Google Kubernetes Engine) の場合
- 内部TCP/UDPロードバランサのバックエンドVMの最大数が250
Child Pages
エコシステム
関連ソフトウェア製品など
最終更新 2023-01-17: [k8s] Update about cpu throttling issue (a3505864e)