kube-scheduler ダッシュボード
要求事項
-
WhaTap Kubernetesエージェント1.8.1バージョン以降が必要です。
-
Kubernetesクラスタープロジェクト(
CP)の場合、該当メニューを照会できます。 -
Vanilla Kubernetesまたは
kube-schedulerPodを観測できるクラスターの場合は、そのメニューを使用できます。
kube-schedulerはKubernetes環境でPodのスケジューリングを担当する主要なコンポーネントです。 WhaTapはkube-schedulerの性能、スケジューリング状態をリアルタイムでモニタリングできるkube-scheduler ダッシュボードを提供します。 kube-scheduler ダッシュボードこれにより、クラスターがスケジューリング不能に陥ったり、スケジューラの負荷による問題を事前に回避できます。
基本画面ガイド

kube-scheduler ダッシュボードは、最近1時間収集された主要な指標を1分単位で視覚化して提供します。 ダッシュボードで確認できる主メトリクスは次の通りです。 メトリクス詳細は、下段のメトリクス案内を参照してください。
-
kube-schedulerが使用するリ ソースの推移、Pod再起動の回数、そして詳細ログを提供します。 -
kube-schedulerの先取り試行の回数と先取りによる被害者数の推移を提供します。 -
kube-schedulerPod内部のPending Queueに割り当てられたPending PodのReason別推移を提供します。
kube-schedulerモニタリングの活性化
活性化の要求条件
-
kubectl get pods -n kube-system -l component=kube-schedulerコマンドを通じてkube-schedulerPodを観測できるようにする必要があります。 -
kube-schedulerとのセキュリティ通信のため--bind-addressの設定を外部からアクセスできるように変更する必要があります。 一般的に0.0.0.0を使います。
活性化の過程
活性化の順序
-
whatap service accountのRBACに
secretsに対するGET権限を追加します。 -
whatap service accountをもとに
secretsを作成します。 -
whatap-master-agentdeploymentにkube-schedulerモニタリングの活性化オプションを適用してくだ活性化
-
権限設定
whatap-monitoringのネームスペース内でwhatap ClusterRoleのrulesにアクセス可能なリソースにsecretsリソースを追加します。 次の内容をyamlファイルに作成した後、kubectl apply -f <yamlファイル名>.yamlを実行して適用します。ClusterRole.yamlapiVersion: "rbac.authorization.k8s.io/v1"
kind: "ClusterRole"
metadata:
annotations:
rbac.authorization.kubernetes.io/autoupdate: "true"
name: "whatap"
namespace: "whatap-monitoring"
rules:
- apiGroups:
- "*"
resources:
- "namespaces"
- "pods"
- "pods/log"
- "configmaps"
- "services"
- "endpoints"
- "daemonsets"
- "ingresses"
- "deployments"
- "nodes"
- "persistentvolumes"
- "persistentvolumeclaims"
- "events"
- "secrets"
- "replicasets"
- "roles"
- "rolebindings"
- "clusterroles"
- "clusterrolebindings"
- "jobs"
- "cronjobs"
- "statefulsets"
- "serviceaccounts"
- "configmaps"
- "storageclasses"
- "horizontalpodautoscalers"
- "replicationcontrollers"
verbs:
- "get"
- "list"
- "watch"
- apiGroups:
- ""
resources:
- "pods/exec"
verbs:
- "create"
- apiGroups:
- ""
resources:
- "configmaps"
verbs:
- "*"
- nonResourceURLs:
- "/metrics"
verbs:
- "*" -
Secret生成
次の内容をyamlファイルに作成した後、
kubectl apply -f yamlファイル名.yamlを実行して適用します。secrets.yamlapiVersion: v1
kind: Secret
type: kubernetes.io/service-account-token
metadata:
name: whatap-scheduler-monitoring-token
namespace: whatap-monitoring
annotations:
kubernetes.io/service-account.name: "whatap" -
Deployment修正
whatap-master-agentdeploymentの内容を修正した後、kubectl apply -f <yamlファイル名>.yamlのコマンドを使って適用します。-
環境変数の追加
containers項目下位のwhatap-master-agentコンテナのenvセクションに次の内容を追加します。env:
- name: "collect_kube_scheduler_monitoring_enabled"
value: "true" -
コマンド因子の追加
containers項目下位のwhatap-control-plane-helperコンテナのargsセクションに次の内容を追加します。- args:
- "-collect_kube_scheduler_monitoring_enabled=true"
環境変数およびコマンド因子を追加する場合は、次の例を参照してください。
apiVersion: "apps/v1"
kind: "Deployment"
metadata:
name: "whatap-master-agent"
namespace: "whatap-monitoring"
spec:
replicas: 1
selector:
matchLabels:
name: "whatap-master-agent"
template:
metadata:
labels:
name: "whatap-master-agent"
spec:
priorityClassName: high-priority
containers:
- command:
- "/bin/entrypoint.sh"
env:
- name: "WHATAP_LICENSE"
value: "c1024123i1kko-241245127abdbe-612632344235"
- name: "WHATAP_HOST"
value: "192.168.1.0"
- name: "WHATP_MEM_LIMIT"
valueFrom:
resourceFieldRef:
containerName: "whatap-master-agent"
resource: "limits.memory"
- name: "collect_kube_scheduler_monitoring_enabled"
value: "true"
image: "whatap/kube_mon"
name: "whatap-master-agent"
ports:
- containerPort: 6600
resources:
limits:
cpu: "200m"
memory: "350Mi"
requests:
cpu: "100m"
memory: "300Mi"
volumeMounts:
- mountPath: "/bin/entrypoint.sh"
name: "start-script-volume"
readOnly: true
subPath: "entrypoint.sh"
- mountPath: "/whatap_conf"
name: "whatap-config-volume"
- args:
- "-collect_kube_scheduler_monitoring_enabled=true"
command:
- "/data/agent/master/whatap_control_plane_helper"
image: "whatap/kube_mon"
imagePullPolicy: "Always"
name: "whatap-control-plane-helper"
ports:
- containerPort: 9496
serviceAccount: "whatap"
volumes:
- configMap:
defaultMode: 448
name: "master-start-script"
name: "start-script-volume"
- emptyDir: {}
name: "whatap-config-volume" -
kube-schedulerのメトリック
| 区分 | 説明 |
|---|---|
| Pod数 | 現在実行中のkube-scheduler Podの数 |
| kube-schedulerの再起動数の推移 | kube-scheduler Podの再起動回数の合計推移 |
| CPUの合計使用量 | kube-scheduler Podの総CPU使用量 |
| CPU使用量 | kube-scheduler PodのCPU使用量推移 |
| Memoryの合計使用量 | kube-scheduler Podの総メモリ使用量 |
| Memory使用量 | kube-scheduler Podのメモリ使用量の推移 |
| kube-scheduler ログ | kube-scheduler Podで発生したログ |
| 先取り試みの回数推移 | Podスケジューリングのために先取りを試みた回数の推移 |
| 先取り被害者数の推移 | 先取りによって追い出されたPod数の推移 |
| Pending Pod Reason別の推移 | スケジューリングされずにPending状態で待機中のPodの原因別推移 |