Skip to content

Commit ba50502

Browse files
authored
ci: Fixes CPU scheduling issues for 1.26 and 1.27 (prometheus-operator#2132)
1 parent dc0ad5e commit ba50502

File tree

4 files changed

+209
-17
lines changed

4 files changed

+209
-17
lines changed

.github/workflows/ci.yaml

+2-16
Original file line numberDiff line numberDiff line change
@@ -99,23 +99,9 @@ jobs:
9999
image: ${{ matrix.kind-image }}
100100
wait: 10s # Without default CNI, control-plane doesn't get ready until Cilium is installed
101101
config: .github/workflows/kind/config.yml
102-
- name: Setup Helm
103-
uses: azure/setup-helm@v3.5
104-
- name: Install Cilium
102+
- name: Install kube-router for NetworkPolicy support
105103
run: |
106-
helm repo add cilium https://helm.cilium.io/
107-
helm install cilium cilium/cilium --version 1.9.13 \
108-
--namespace kube-system \
109-
--set nodeinit.enabled=true \
110-
--set kubeProxyReplacement=partial \
111-
--set hostServices.enabled=false \
112-
--set externalIPs.enabled=true \
113-
--set nodePort.enabled=true \
114-
--set hostPort.enabled=true \
115-
--set bpf.masquerade=false \
116-
--set image.pullPolicy=IfNotPresent \
117-
--set ipam.mode=kubernetes \
118-
--set operator.replicas=1
104+
kubectl apply -f .github/workflows/kind/kube-router.yaml
119105
- name: Wait for cluster to finish bootstraping
120106
run: kubectl wait --for=condition=Ready pods --all --all-namespaces --timeout=300s
121107
- name: Create kube-prometheus stack

.github/workflows/kind/config.yml

+10-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,15 @@
11
kind: Cluster
22
apiVersion: kind.x-k8s.io/v1alpha4
33
networking:
4-
disableDefaultCNI: true
54
podSubnet: "10.10.0.0/16"
65
serviceSubnet: "10.11.0.0/16"
6+
nodes:
7+
- role: control-plane
8+
extraMounts:
9+
- hostPath: /home/runner/work/kube-prometheus/kube-prometheus/.github/workflows/kind/patches
10+
containerPath: /patches
11+
kubeadmConfigPatches:
12+
- |
13+
kind: InitConfiguration
14+
patches:
15+
directory: /patches
+186
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,186 @@
1+
apiVersion: v1
2+
kind: ConfigMap
3+
metadata:
4+
name: kube-router-cfg
5+
namespace: kube-system
6+
labels:
7+
tier: node
8+
k8s-app: kube-router
9+
data:
10+
cni-conf.json: |
11+
{
12+
"cniVersion":"0.3.0",
13+
"name":"mynet",
14+
"plugins":[
15+
{
16+
"name":"kubernetes",
17+
"type":"bridge",
18+
"bridge":"kube-bridge",
19+
"isDefaultGateway":true,
20+
"ipam":{
21+
"type":"host-local"
22+
}
23+
}
24+
]
25+
}
26+
---
27+
apiVersion: apps/v1
28+
kind: DaemonSet
29+
metadata:
30+
labels:
31+
k8s-app: kube-router
32+
tier: node
33+
name: kube-router
34+
namespace: kube-system
35+
spec:
36+
selector:
37+
matchLabels:
38+
k8s-app: kube-router
39+
tier: node
40+
template:
41+
metadata:
42+
labels:
43+
k8s-app: kube-router
44+
tier: node
45+
spec:
46+
priorityClassName: system-node-critical
47+
serviceAccountName: kube-router
48+
containers:
49+
- name: kube-router
50+
image: docker.io/cloudnativelabs/kube-router
51+
imagePullPolicy: Always
52+
args:
53+
- --run-router=true
54+
- --run-firewall=true
55+
- --run-service-proxy=false
56+
- --bgp-graceful-restart=true
57+
env:
58+
- name: NODE_NAME
59+
valueFrom:
60+
fieldRef:
61+
fieldPath: spec.nodeName
62+
- name: KUBE_ROUTER_CNI_CONF_FILE
63+
value: /etc/cni/net.d/10-kuberouter.conflist
64+
livenessProbe:
65+
httpGet:
66+
path: /healthz
67+
port: 20244
68+
initialDelaySeconds: 10
69+
periodSeconds: 3
70+
resources:
71+
requests:
72+
memory: 250Mi
73+
securityContext:
74+
privileged: true
75+
volumeMounts:
76+
- name: lib-modules
77+
mountPath: /lib/modules
78+
readOnly: true
79+
- name: cni-conf-dir
80+
mountPath: /etc/cni/net.d
81+
- name: kubeconfig
82+
mountPath: /var/lib/kube-router/kubeconfig
83+
readOnly: true
84+
- name: xtables-lock
85+
mountPath: /run/xtables.lock
86+
readOnly: false
87+
initContainers:
88+
- name: install-cni
89+
image: docker.io/cloudnativelabs/kube-router
90+
imagePullPolicy: Always
91+
command:
92+
- /bin/sh
93+
- -c
94+
- set -e -x;
95+
if [ ! -f /etc/cni/net.d/10-kuberouter.conflist ]; then
96+
if [ -f /etc/cni/net.d/*.conf ]; then
97+
rm -f /etc/cni/net.d/*.conf;
98+
fi;
99+
TMP=/etc/cni/net.d/.tmp-kuberouter-cfg;
100+
cp /etc/kube-router/cni-conf.json ${TMP};
101+
mv ${TMP} /etc/cni/net.d/10-kuberouter.conflist;
102+
fi
103+
volumeMounts:
104+
- mountPath: /etc/cni/net.d
105+
name: cni-conf-dir
106+
- mountPath: /etc/kube-router
107+
name: kube-router-cfg
108+
hostNetwork: true
109+
tolerations:
110+
- effect: NoSchedule
111+
operator: Exists
112+
- key: CriticalAddonsOnly
113+
operator: Exists
114+
- effect: NoExecute
115+
operator: Exists
116+
volumes:
117+
- name: lib-modules
118+
hostPath:
119+
path: /lib/modules
120+
- name: cni-conf-dir
121+
hostPath:
122+
path: /etc/cni/net.d
123+
- name: kube-router-cfg
124+
configMap:
125+
name: kube-router-cfg
126+
- name: kubeconfig
127+
hostPath:
128+
path: /var/lib/kube-router/kubeconfig
129+
- name: xtables-lock
130+
hostPath:
131+
path: /run/xtables.lock
132+
type: FileOrCreate
133+
---
134+
apiVersion: v1
135+
kind: ServiceAccount
136+
metadata:
137+
name: kube-router
138+
namespace: kube-system
139+
---
140+
kind: ClusterRole
141+
apiVersion: rbac.authorization.k8s.io/v1
142+
metadata:
143+
name: kube-router
144+
namespace: kube-system
145+
rules:
146+
- apiGroups:
147+
- ""
148+
resources:
149+
- namespaces
150+
- pods
151+
- services
152+
- nodes
153+
- endpoints
154+
verbs:
155+
- list
156+
- get
157+
- watch
158+
- apiGroups:
159+
- "networking.k8s.io"
160+
resources:
161+
- networkpolicies
162+
verbs:
163+
- list
164+
- get
165+
- watch
166+
- apiGroups:
167+
- extensions
168+
resources:
169+
- networkpolicies
170+
verbs:
171+
- get
172+
- list
173+
- watch
174+
---
175+
kind: ClusterRoleBinding
176+
apiVersion: rbac.authorization.k8s.io/v1
177+
metadata:
178+
name: kube-router
179+
roleRef:
180+
apiGroup: rbac.authorization.k8s.io
181+
kind: ClusterRole
182+
name: kube-router
183+
subjects:
184+
- kind: ServiceAccount
185+
name: kube-router
186+
namespace: kube-system
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
apiVersion: v1
2+
kind: Pod
3+
metadata:
4+
name: kube-controller-manager
5+
namespace: kube-system
6+
spec:
7+
containers:
8+
- name: kube-controller-manager
9+
resources:
10+
requests:
11+
cpu: 1m

0 commit comments

Comments
 (0)