반응형
1. 개념
- kube-Scheduler를 활용하지 않고 개별 스케줄러를 생성하여 리소스 배포 시 사용 가능
- 또한 1개가 아닌 여러개의 스케줄러를 동시에 사용 가능
2. 다중 스케줄러 생성
- 쿠버네티스 공식 문서를 참고해 yaml 파일 생성
apiVersion: v1
kind: ServiceAccount
metadata:
name: zero-scheduler
namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: zero-scheduler-as-kube-scheduler
subjects:
- kind: ServiceAccount
name: zero-scheduler
namespace: kube-system
roleRef:
kind: ClusterRole
name: system:kube-scheduler
apiGroup: rbac.authorization.k8s.io
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: zero-scheduler-as-volume-scheduler
subjects:
- kind: ServiceAccount
name: zero-scheduler
namespace: kube-system
roleRef:
kind: ClusterRole
name: system:volume-scheduler
apiGroup: rbac.authorization.k8s.io
---
apiVersion: v1
kind: ConfigMap
metadata:
name: zero-scheduler-config
namespace: kube-system
data:
zero-scheduler-config.yaml: |
apiVersion: kubescheduler.config.k8s.io/v1beta2
kind: KubeSchedulerConfiguration
profiles:
- schedulerName: zero-scheduler
leaderElection:
leaderElect: false
---
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
component: scheduler
tier: control-plane
name: zero-scheduler
namespace: kube-system
spec:
selector:
matchLabels:
component: scheduler
tier: control-plane
replicas: 1
template:
metadata:
labels:
component: scheduler
tier: control-plane
version: second
spec:
serviceAccountName: zero-scheduler
containers:
- command:
- /usr/local/bin/kube-scheduler
- --config=/etc/kubernetes/zero-scheduler/zero-scheduler-config.yaml
image: <set-your-scheduler-image or k8s.gcr.io/kube-scheduler:v1.24.0>
livenessProbe:
httpGet:
path: /healthz
port: 10259
scheme: HTTPS
initialDelaySeconds: 15
name: kube-second-scheduler
readinessProbe:
httpGet:
path: /healthz
port: 10259
scheme: HTTPS
resources:
requests:
cpu: '0.1'
securityContext:
privileged: false
volumeMounts:
- name: config-volume
mountPath: /etc/kubernetes/zero-scheduler
hostNetwork: false
hostPID: false
volumes:
- name: config-volume
configMap:
name: zero-scheduler-config
3. 스케줄러 생성 확인
- 스케줄러 생성 확인
4. 다중 스케줄러 적용
- schedulerName에 생성한 스케줄러 이름 명시 후 배포
apiVersion: v1
kind: Pod
metadata:
labels:
run: nginx
name: nginx
spec:
containers:
- image: nginx
name: nginx
schedulerName: zero-scheduler
5. 배포 시 다중 스케줄러 적용 확인
- 파드 정상 배포 확인
- 다중 스케줄러 적용 확인(kubectl get events -o wide)
반응형
'Kubernetes' 카테고리의 다른 글
Kubernetes 배포 전략(RollingUpdate, Blue/Green, Canary) 및 롤백(Rollback) 개념과 설정 (0) | 2023.03.16 |
---|---|
Kubernetes 리소스 모니터링을 위한 metrics-server 설치 (0) | 2023.03.16 |
Kubernetes 정적 파드(Static Pod) 개념과 설정 (0) | 2023.03.16 |
Kubernetes 데몬셋(DaemonSet) 개념과 명령어 (0) | 2023.03.16 |
Kubernetes 테인트(Taints)/톨러레이션(Tolerations)과 노드 어피니티(Node Affinity) 복합 활용 (0) | 2023.03.16 |