/
init-job.yaml
129 lines (122 loc) · 5.59 KB
/
init-job.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
{{- $job_version := include "init.job.version" . }}
{{- if .Values.extender.init_job }}
kind: Job
apiVersion: batch/v1
metadata:
name: {{ .Values.name }}-init-job
namespace: {{ .Values.namespace }}
{{ include "local.labels" . | indent 2 }}
app.kubernetes.io/component: {{ .Values.name }}-init-job
spec:
completions: {{ or .Values.global.NumOfMasters 3 }}
parallelism: {{ or .Values.global.NumOfMasters 3 }}
template:
metadata:
{{ include "local.labels" . | indent 6 }}
app.kubernetes.io/component: {{ .Values.name }}-init-job
spec:
hostNetwork: true
tolerations:
- effect: NoSchedule
operator: Exists
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: node-role.kubernetes.io/control-plane
operator: In
values:
- ""
podAntiAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- labelSelector:
matchExpressions:
- key: app.kubernetes.io/component
operator: In
values:
- {{ .Values.name }}-init-job
topologyKey: "kubernetes.io/hostname"
containers:
- name: init
image: {{ .Values.global.RegistryURL }}/{{ .Values.images.local.image }}:{{ .Values.images.local.tag }}
imagePullPolicy: {{ .Values.global.ImagePullPolicy }}
command:
- sh
- "-c"
- |
{{ if eq $job_version "new" }}
set -ex
sleep 4
echo "generating kubeScheduler-config.yml..."
cat >/etc/kubernetes/kubeScheduler-config.yml <<EOF
apiVersion: kubescheduler.config.k8s.io/v1
kind: KubeSchedulerConfiguration
clientConnection:
kubeconfig: /etc/kubernetes/scheduler.conf
extenders:
- urlPrefix: 'http://{{ .Values.extender.name }}.{{.Values.namespace}}:{{ .Values.extender.port }}/scheduler'
filterVerb: predicates
prioritizeVerb: priorities
preemptVerb: ''
bindVerb: ''
weight: 10
enableHTTPS: false
nodeCacheCapable: true
ignorable: true
EOF
echo "modifying kube-scheduler.yaml..."
if ! grep "^\ dnsPolicy: ClusterFirstWithHostNet" /etc/kubernetes/manifests/kube-scheduler.yaml; then
sed -i "/ hostNetwork: true/a \ dnsPolicy: ClusterFirstWithHostNet" /etc/kubernetes/manifests/kube-scheduler.yaml
fi
if ! grep "^\ - --config=*" /etc/kubernetes/manifests/kube-scheduler.yaml; then
sed -i "/ - --kubeconfig=/a \ - --config=/etc/kubernetes/kubeScheduler-config.yml" /etc/kubernetes/manifests/kube-scheduler.yaml
fi
if ! grep "^\ name: scheduler-config" /etc/kubernetes/manifests/kube-scheduler.yaml; then
sed -i "/ volumeMounts:/a \ - mountPath: /etc/kubernetes/kubeScheduler-config.yml\n name: scheduler-config\n readOnly: true" /etc/kubernetes/manifests/kube-scheduler.yaml
sed -i "/ volumes:/a \ - hostPath:\n path: /etc/kubernetes/kubeScheduler-config.yml\n type: File\n name: scheduler-config" /etc/kubernetes/manifests/kube-scheduler.yaml
fi
{{- else }}
set -ex
sleep 4
echo "generating scheduler-policy-config.json..."
cat >/etc/kubernetes/scheduler-policy-config.json <<EOF
{
"kind" : "Policy",
"apiVersion" : "v1",
"extenders" : [{
"urlPrefix": "http://{{ .Values.extender.name }}.{{.Values.namespace}}:{{ .Values.extender.port }}/scheduler",
"filterVerb": "predicates",
"prioritizeVerb": "priorities",
"preemptVerb": "",
"bindVerb": "",
"weight": 10,
"enableHttps": false,
"nodeCacheCapable": true,
"ignorable": true
}],
"hardPodAffinitySymmetricWeight" : 10
}
EOF
echo "modifying kube-scheduler.yaml..."
if ! grep "^\ dnsPolicy: ClusterFirstWithHostNet" /etc/kubernetes/manifests/kube-scheduler.yaml; then
sed -i "/ hostNetwork: true/a \ dnsPolicy: ClusterFirstWithHostNet" /etc/kubernetes/manifests/kube-scheduler.yaml
fi
if ! grep "^\ - --policy-config-file=*" /etc/kubernetes/manifests/kube-scheduler.yaml; then
sed -i "/ - --kubeconfig=/a \ - --policy-config-file=/etc/kubernetes/scheduler-policy-config.json" /etc/kubernetes/manifests/kube-scheduler.yaml
fi
if ! grep "^\ name: scheduler-policy-config" /etc/kubernetes/manifests/kube-scheduler.yaml; then
sed -i "/ volumeMounts:/a \ - mountPath: /etc/kubernetes/scheduler-policy-config.json\n name: scheduler-policy-config\n readOnly: true" /etc/kubernetes/manifests/kube-scheduler.yaml
sed -i "/ volumes:/a \ - hostPath:\n path: /etc/kubernetes/scheduler-policy-config.json\n type: File\n name: scheduler-policy-config" /etc/kubernetes/manifests/kube-scheduler.yaml
fi
{{- end }}
volumeMounts:
- name: kube-dir
mountPath: /etc/kubernetes/
restartPolicy: OnFailure
volumes:
- name: kube-dir
hostPath:
path: /etc/kubernetes/
type: DirectoryOrCreate
{{- end }}