-
Notifications
You must be signed in to change notification settings - Fork 2
/
k8s.yaml
163 lines (159 loc) · 3.78 KB
/
k8s.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
# This file deploys Gurobi Cluster Manager and Compute Server Nodes
#
# 1- Create the license file as a secret
# kubectl create secret generic gurobi-lic --from-file="gurobi.lic=$PWD/gurobi.lic"
#
# 2- Deploy the cluster manager with compute server nodes
# kubectl apply -f k8s.yaml
#### To keep the demonstration simple, this deployment file will not persist the database.
#### If you wish to do so, please refer to the MongoDB documentation or a hosted solution (for example MongoDB Atlas).
apiVersion: v1
kind: Service
metadata:
name: gurobi-mongo
labels:
name: gurobi-mongo
spec:
ports:
- port: 27017
targetPort: 27017
selector:
name: gurobi-mongo
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: gurobi-mongo
labels:
name: gurobi-mongo
spec:
selector:
matchLabels:
name: gurobi-mongo
replicas: 1
template:
metadata:
labels:
name: gurobi-mongo
spec:
containers:
- name: gurobi-mongo
image: mongo:latest
args:
- --bind_ip
- 0.0.0.0
- --dbpath
- /var/tmp
resources:
requests:
cpu: 100m
memory: 100Mi
ports:
- containerPort: 27017
---
apiVersion: v1
kind: Service
metadata:
name: "gurobi-manager"
spec:
selector:
app: gurobi-manager
type: LoadBalancer
ports:
- protocol: TCP
port: 61080
targetPort: 61080
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: gurobi-manager
labels:
app: gurobi-manager
spec:
replicas: 2
selector:
matchLabels:
app: gurobi-manager
template:
metadata:
labels:
app: gurobi-manager
spec:
containers:
- name: gurobi-manager
image: gurobi/manager:12.0.0
ports:
- containerPort: 61080
livenessProbe:
initialDelaySeconds: 20
periodSeconds: 30
timeoutSeconds: 5
failureThreshold: 5
httpGet:
port: 61080
path: /api/v1/ping
readinessProbe:
initialDelaySeconds: 20
periodSeconds: 30
timeoutSeconds: 5
failureThreshold: 5
httpGet:
port: 61080
path: /api/v1/ping
env:
- name: GRB_DB_URI
value: "mongodb://$(GUROBI_MONGO_SERVICE_HOST):$(GUROBI_MONGO_SERVICE_PORT)"
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: gurobi-compute
labels:
app: gurobi-compute
spec:
replicas: 2
selector:
matchLabels:
app: gurobi-compute
template:
metadata:
labels:
app: gurobi-compute
spec:
volumes:
- name: gurobi-lic
secret:
secretName: gurobi-lic
optional: true
containers:
- name: gurobi-compute
image: gurobi/compute:12.0.0
ports:
- containerPort: 61000
livenessProbe:
initialDelaySeconds: 20
periodSeconds: 30
timeoutSeconds: 5
failureThreshold: 5
httpGet:
port: 61000
path: /api/v1/ping
readinessProbe:
initialDelaySeconds: 20
periodSeconds: 30
timeoutSeconds: 5
failureThreshold: 5
httpGet:
port: 61000
path: /api/v1/ping
volumeMounts:
- name: gurobi-lic
mountPath: "/opt/gurobi"
readOnly: true
env:
- name: MY_POD_IP
valueFrom:
fieldRef:
fieldPath: status.podIP
args: [ "--manager","http://$(GUROBI_MANAGER_SERVICE_HOST):$(GUROBI_MANAGER_SERVICE_PORT)", "--hostname", "$(MY_POD_IP)" ]