Skip to content

Commit c932221

Browse files
authored
Merge pull request #584 from ravisantoshgudimetla/add-descheduler-crds
Descheduler operator CRD, CSV
2 parents 8429cb3 + 2f7fae5 commit c932221

File tree

4 files changed

+169
-1
lines changed

4 files changed

+169
-1
lines changed
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
apiVersion: apiextensions.k8s.io/v1beta1
2+
kind: CustomResourceDefinition
3+
metadata:
4+
name: deschedulers.descheduler.io
5+
spec:
6+
group: descheduler.io
7+
names:
8+
kind: Descheduler
9+
listKind: DeschedulerList
10+
plural: deschedulers
11+
singular: descheduler
12+
scope: Namespaced
13+
version: v1alpha1
14+
validation:
15+
openAPIV3Schema:
16+
properties:
17+
spec:
18+
strategies:
19+
type: array
20+
uniqueItems: true
21+
minItems: 1
22+
maxItems: 4
23+
collectionFormat: pipes
24+
items:
25+
type: string
26+
schedule:
27+
type: string
28+
pattern: '^(\d+|\*)(/\d+)?(\s+(\d+|\*)(/\d+)?){4}$'
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
packageName: descheduler
2+
channels:
3+
- name: alpha
4+
currentCSV: descheduler.v0.0.1
Lines changed: 135 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,135 @@
1+
apiVersion: operators.coreos.com/v1alpha1
2+
kind: ClusterServiceVersion
3+
metadata:
4+
annotations:
5+
categories: openshift optional
6+
certifiedLevel: Primed
7+
containerImage: registry.svc.ci.openshift.org/openshift/origin-v4.0:descheduler-operator
8+
createdAt: 2019/11/15
9+
description: An operator to run the OpenShift descheduler
10+
healthIndex: B
11+
repository: https://github.com/openshift/descheduler-operator
12+
support: Red Hat
13+
name: descheduler.v0.0.1
14+
namespace: openshift-descheduler-operator
15+
spec:
16+
description: |
17+
# Descheduler for Kubernetes
18+
19+
## Introduction
20+
21+
Scheduling in Kubernetes is the process of binding pending pods to nodes, and is performed by
22+
a component of Kubernetes called kube-scheduler. The scheduler's decisions, whether or where a
23+
pod can or can not be scheduled, are guided by its configurable policy which comprises of set of
24+
rules, called predicates and priorities. The scheduler's decisions are influenced by its view of
25+
a Kubernetes cluster at that point of time when a new pod appears first time for scheduling.
26+
As Kubernetes clusters are very dynamic and their state change over time, there may be desired
27+
to move already running pods to some other nodes for various reasons
28+
29+
* Some nodes are under or over utilized.
30+
* The original scheduling decision does not hold true any more, as taints or labels are added to
31+
or removed from nodes, pod/node affinity requirements are not satisfied any more.
32+
* Some nodes failed and their pods moved to other nodes.
33+
New nodes are added to clusters.
34+
35+
Consequently, there might be several pods scheduled on less desired nodes in a cluster.
36+
Descheduler, based on its policy, finds pods that can be moved and evicts them. Please
37+
note, in current implementation, descheduler does not schedule replacement of evicted pods
38+
but relies on the default scheduler for that.
39+
40+
## Note
41+
42+
Any api could be changed any time with out any notice. That said, your feedback is
43+
very important and appreciated to make this project more stable and useful.
44+
45+
customresourcedefinitions:
46+
owned:
47+
- description: Represents an instance of a Descheduler application
48+
displayName: Descheduler Operator
49+
kind: Descheduler
50+
name: deschedulers.descheduler.io
51+
version: v1alpha1
52+
displayName: Descheduler
53+
install:
54+
spec:
55+
clusterPermissions:
56+
- rules:
57+
- apiGroups:
58+
- ""
59+
resources:
60+
- services
61+
- pods
62+
- configmaps
63+
- secrets
64+
- names
65+
- nodes
66+
- pods/eviction
67+
verbs:
68+
- '*'
69+
- apiGroups:
70+
- apps
71+
resources:
72+
- deployments
73+
verbs:
74+
- '*'
75+
- apiGroups:
76+
- batch
77+
- extensions
78+
resources:
79+
- jobs
80+
verbs:
81+
- '*'
82+
- apiGroups:
83+
- descheduler.io
84+
resources:
85+
- '*'
86+
verbs:
87+
- '*'
88+
serviceAccountName: openshift-descheduler
89+
deployments:
90+
- name: descheduler-operator
91+
spec:
92+
replicas: 1
93+
selector:
94+
matchLabels:
95+
app: descheduler-operator
96+
template:
97+
metadata:
98+
labels:
99+
app: descheduler-operator
100+
spec:
101+
containers:
102+
- command:
103+
- descheduler-operator
104+
env:
105+
- name: MY_POD_NAMESPACE
106+
valueFrom:
107+
fieldRef:
108+
fieldPath: metadata.namespace
109+
- name: MY_POD_NAME
110+
valueFrom:
111+
fieldRef:
112+
fieldPath: metadata.name
113+
- name: WATCH_NAMESPACE
114+
valueFrom:
115+
fieldRef:
116+
fieldPath: metadata.namespace
117+
- name: OPERATOR_NAME
118+
value: descheduler-operator
119+
image: registry.svc.ci.openshift.org/openshift/origin-v4.0:descheduler-operator
120+
imagePullPolicy: Always
121+
name: descheduler-operator
122+
restartPolicy: Always
123+
serviceAccount: openshift-descheduler
124+
serviceAccountName: openshift-descheduler
125+
terminationGracePeriodSeconds: 5
126+
strategy: deployment
127+
labels:
128+
olm-owner-enterprise-app: descheduler-operator
129+
olm-status-descriptors: descheduler.v0.0.1
130+
maintainers:
131+
132+
name: Red Hat
133+
provider:
134+
name: Red Hat
135+
version: 0.0.1

pkg/controller/registry/directory_loader_test.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,8 @@ func TestDirectoryLoader(t *testing.T) {
1919
require.Contains(t, catalog.packages, "prometheus")
2020
require.Contains(t, catalog.packages, "amq-streams")
2121
require.Contains(t, catalog.packages, "federationv2")
22-
require.Len(t, catalog.packages, 5)
22+
require.Contains(t, catalog.packages, "descheduler")
23+
require.Len(t, catalog.packages, 6)
2324
}
2425

2526
func TestDirectoryLoaderHiddenDirs(t *testing.T) {

0 commit comments

Comments
 (0)