Kubernetes

関連ページ:

Getting Started

Documentation

参考:

リファレンス

ベストプラクティス

ケーススタディ

参考:

Versions

How-to

Podの再起動

  • K8sはクラスタの状態を宣言型で記述するので、「再起動する」というのを指示するのは難しいようだ
  • 下の記事にあるように、Deploymentの定義を変えてapplyするのが良いだろう
  • レプリカの数を0にして増やすという手もある

See

複数クラスタを設定する

機密情報や環境設定の扱い

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に達してスロットルされてしまうことが起こり得る

仕組みについては、下の記事が詳しい:

関連リソース:

クラスタが大きくなるとどんな問題があるか?

巷では不安定になるとよく言われるが、どのくらいやばいのか、どんな問題が起こり得るのかを考察する。

起こり得る問題:

Inter-Pod AffinityとAnti-Affinityは、大規模なクラスター上で使用する際にスケジューリングを非常に遅くする恐れのある多くの処理を要します。 そのため、数百台以上のNodeから成るクラスターでは使用することを推奨されません。

GKE (Google Kubernetes Engine) の場合

Child Pages