modules/python/clusterloader2/slo/config/deployment_template.yaml (61 lines of code) (raw):
{{$CpuRequest := DefaultParam .CpuRequest "5m"}}
{{$MemoryRequest := DefaultParam .MemoryRequest "20M"}}
{{$cnp_test:= .cnp_test}}
{{$ccnp_test:= .ccnp_test}}
{{$Image := DefaultParam .Image "mcr.microsoft.com/oss/kubernetes/pause:3.6"}}
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{.Name}}
labels:
group: {{.Group}}
{{if .SvcName}}
svc: {{.SvcName}}-{{.Index}}
{{end}}
spec:
replicas: {{.Replicas}}
selector:
matchLabels:
name: {{.Name}}
strategy:
type: RollingUpdate
rollingUpdate:
maxUnavailable: 20%
maxSurge: 20%
template:
metadata:
labels:
name: {{.Name}}
group: {{.Group}}
{{if .SvcName}}
svc: {{.SvcName}}-{{.Index}}
{{end}}
restart: {{.deploymentLabel}}
spec:
nodeSelector:
slo: "true"
containers:
- env:
- name: ENV_VAR
value: a
image: {{$Image}}
imagePullPolicy: IfNotPresent
name: {{.Name}}
ports:
resources:
requests:
cpu: {{$CpuRequest}}
memory: {{$MemoryRequest}}
# Add not-ready/unreachable tolerations for 15 minutes so that node
# failure doesn't trigger pod deletion.
tolerations:
- key: "node.kubernetes.io/not-ready"
operator: "Exists"
effect: "NoExecute"
tolerationSeconds: 900
- key: "node.kubernetes.io/unreachable"
operator: "Exists"
effect: "NoExecute"
tolerationSeconds: 900
- key: "slo"
operator: "Equal"
value: "true"
effect: "NoSchedule"