diff --git a/deployments/scheduler/README.md b/deployments/scheduler/README.md index 1ca18fb9f..9716918c7 100644 --- a/deployments/scheduler/README.md +++ b/deployments/scheduler/README.md @@ -18,7 +18,10 @@ # Deployment examples -## Scheduler +YuniKorn can be deployed in two different modes: standard and plugin. +Detailed description are here: [Deployment Modes](https://yunikorn.apache.org/docs/next/user_guide/deployment_modes) + +## Scheduler Standard mode Deploys scheduler-core + scheduler-web @@ -27,9 +30,14 @@ Deploys scheduler-core + scheduler-web Deployment: [scheduler.yaml](scheduler.yaml) +## Scheduler Plugin mode + +Deployment: [plugin.yaml](plugin.yaml) + ## Scheduler configuration -This deployment contains a minimal queue configuration for YuniKorn. +This deployment contains a default configuration for YuniKorn. +Detailed description are here: [Service Configuration](https://yunikorn.apache.org/docs/next/user_guide/service_config) Deployment: [yunikorn-configs.yaml](yunikorn-configs.yaml) @@ -42,13 +50,9 @@ Deployment: [yunikorn-rbac.yaml](yunikorn-rbac.yaml) ## Load Balancer -Deploys scheduler-core + scheduler-web - -* Scheduler pod runs 2 containers, 1 for scheduler-core, 1 for scheduler-web -* UI port is `9889` -* A load balancer that helps to expose web UI link directly on K8s +A load balancer that helps to expose web UI link directly on K8s -Deployment: [scheduler-load.yaml](scheduler-load.yaml) +Deployment: [service.yaml](service.yaml) ## Admission Controller diff --git a/deployments/scheduler/plugin.yaml b/deployments/scheduler/plugin.yaml index 889518618..165a34996 100644 --- a/deployments/scheduler/plugin.yaml +++ b/deployments/scheduler/plugin.yaml @@ -15,27 +15,6 @@ # See the License for the specific language governing permissions and # limitations under the License. ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: yunikorn-admin - ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: yunikorn-rbac -subjects: - - kind: ServiceAccount - name: yunikorn-admin - namespace: default -roleRef: - kind: ClusterRole - name: cluster-admin - apiGroup: rbac.authorization.k8s.io - ---- apiVersion: apps/v1 kind: Deployment metadata: @@ -54,15 +33,14 @@ spec: component: yunikorn-scheduler name: yunikorn-scheduler spec: + hostNetwork: true serviceAccountName: yunikorn-admin containers: - name: yunikorn-scheduler-k8s - image: apache/yunikorn:scheduler-plugin-latest + image: apache/yunikorn:scheduler-plugin-amd64-latest imagePullPolicy: IfNotPresent ports: - - name: http1 - containerPort: 9080 - protocol: TCP + - containerPort: 9080 env: - name: NAMESPACE valueFrom: @@ -70,50 +48,20 @@ spec: fieldPath: metadata.namespace resources: requests: - cpu: 1 + cpu: 200m memory: 1Gi limits: cpu: 4 memory: 2Gi - livenessProbe: - httpGet: - path: /ws/v1/scheduler/healthcheck - port: 9080 - initialDelaySeconds: 20 - periodSeconds: 600 - failureThreshold: 1 - name: yunikorn-scheduler-web - image: apache/yunikorn:web-latest + image: apache/yunikorn:web-amd64-latest imagePullPolicy: IfNotPresent - ports: - - name: http2 - containerPort: 9889 - protocol: TCP resources: requests: - memory: "100Mi" - cpu: "100m" + cpu: 100m + memory: 100Mi limits: - memory: "500Mi" - cpu: "200m" - ---- -apiVersion: v1 -kind: Service -metadata: - name: yunikorn-service - labels: - app: yunikorn-service -spec: - ports: - - port: 9080 - targetPort: http1 - protocol: TCP - name: yunikorn-core - - port: 9889 - targetPort: http2 - protocol: TCP - name: yunikorn-service - selector: - app: yunikorn - type: LoadBalancer + cpu: 200m + memory: 500Mi + ports: + - containerPort: 9889 \ No newline at end of file diff --git a/deployments/scheduler/scheduler-load.yaml b/deployments/scheduler/scheduler-load.yaml deleted file mode 100644 index e6e7f83ef..000000000 --- a/deployments/scheduler/scheduler-load.yaml +++ /dev/null @@ -1,83 +0,0 @@ -# -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -apiVersion: apps/v1 -kind: Deployment -metadata: - labels: - app: yunikorn - name: yunikorn-scheduler -spec: - replicas: 1 - selector: - matchLabels: - app: yunikorn - template: - metadata: - labels: - app: yunikorn - component: yunikorn-scheduler - name: yunikorn-scheduler - spec: - hostNetwork: true - serviceAccountName: yunikorn-admin - containers: - - name: yunikorn-scheduler-k8s - image: apache/yunikorn:scheduler-amd64-latest - env: - - name: NAMESPACE - valueFrom: - fieldRef: - fieldPath: metadata.namespace - resources: - requests: - cpu: 200m - memory: 1Gi - limits: - cpu: 4 - memory: 2Gi - imagePullPolicy: IfNotPresent - ports: - - containerPort: 9080 - - name: yunikorn-scheduler-web - image: apache/yunikorn:web-amd64-latest - imagePullPolicy: IfNotPresent - resources: - requests: - cpu: 100m - memory: 100Mi - limits: - cpu: 200m - memory: 500Mi - ports: - - containerPort: 9889 ---- -apiVersion: v1 -kind: Service -metadata: - name: yunikorn-service - labels: - app: yunikorn-service -spec: - ports: - - name: yunikorn-service - port: 9889 - - name: yunikorn-core - port: 9080 - selector: - app: yunikorn - type: LoadBalancer diff --git a/deployments/scheduler/service.yaml b/deployments/scheduler/service.yaml new file mode 100644 index 000000000..769cc5c63 --- /dev/null +++ b/deployments/scheduler/service.yaml @@ -0,0 +1,35 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: v1 +kind: Service +metadata: + name: yunikorn-service + labels: + app: yunikorn +spec: + ports: + - port: 9080 + targetPort: http1 + protocol: TCP + name: yunikorn-core + - port: 9889 + targetPort: http2 + protocol: TCP + name: yunikorn-service + selector: + app: yunikorn + type: LoadBalancer