👨💻
kubernetes schedulerについて
schedulerについて
- taints and talorations
- taintsはpodを配置したくないノードに対してtaint(汚れ)という名の印をつける
- tolerationsはpodがtaint(汚れ)をtolerations(許容)できるPodのみスケジューリングを許可するポリシー
taintの付与
kubectl taint node zenn01(ノード名) zenn=geek:NoSchedule
付与したtaintの削除
kubectl taint node zenn01(ノード名) zenn=geek:NoSchedule-
tolerationsの付与
apiVersion: v1
kind: Pod
metadata:
name: zenn
spec:
containers:
- name: zenn
image: nginx
tolerations:
- key: zenn
value: geek
effect: NoSchedule
operator: Equal
Effectの種類 | 概要 |
---|---|
PreferNoScheduler | 可能な限りスケジューリングしない |
NoSchedule | スケジューリングしない(既にスケジューリングされているPodはそのまま) |
NoExecute | 実行を許可しない(既にスケジューリングされているPodは停止される) |
operatorの種類 | 概要 |
---|---|
Equal | keyとvalueが等しい |
Exit | keyが存在する |
- nodeselector
- 簡易的にpodが起動されるNodeを選択できる。
※nodeSelectorで設定するkey=valueの値はnode側でlabelで設定されてる必要あり。
- 簡易的にpodが起動されるNodeを選択できる。
apiVersion: v1
kind: Pod
metadata:
name: zenn
spec:
containers:
- name: zenn
image: nginx
nodeSelector:
key: value
- nodeaffinity
- Podを特定のノード上へスケジューリングするポリシー。
- Pod定義内のspec.affinity.nodeAffinityに書くことで設定する
apiVersion: v1
kind: Pod
metadata:
name: zenn
spec:
containers:
- name: zenn
image: nginx
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectotTerms:
- matchExpressions:
- key: colour
operator: In
values:
- red
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 1
preference:
matchExpressions:
- key: another-node-label-key
operator: In
values:
- another-node-label-value
設定項目 | 概要 |
---|---|
requiredDuringSchedulingIgnoredDuringExecution | 必須のスケジューリングポリシー |
preferredDuringSchedulingIgnoredDuringExecution | 優先的に考慮されるスケジューリングポリシー |
operatorの種類 | 使い方 | 意味 |
---|---|---|
In | A In [B,...] | ラベルAの値が[B,...]の中のいずれか一つ以上と一致する |
NotIn | A NotIn[B,...] | |
Exists | A Exists[] | ラベルAが存在する |
DoesNotExit | A DoesNotExist[] | ラベルAが存在しない |
Gt | A Gt [B] | ラベルAの値がBよりも大きい |
Lt | A Lt [B] | ラベルAの値がBよりも小さい |
- Daemoset
- DaemonSetは各NodeにPodを1つづつ配置するリソース
- レプリカ数は指定できないが、nodeSelectorやNodeAffinityでスケジューリングを除外するNodeを設定することは可能。
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: zenn
spec:
selector:
matchLabels:
name: zenn
template:
metadata:
labels:
name: zenn
spec:
containers:
- name: zenn
image: nginx
Discussion