Skip to content
This repository was archived by the owner on Jun 29, 2022. It is now read-only.

Commit 5038d83

Browse files
committed
Expose --conntrack-max-per-core kube-proxy flag
This commit exposes --conntrack-max-per-core kube-proxy flag in kubernetes Helm chart and adds required plumbing to expose it to the user using HCL. It also adds sample usage to CI configuration and e2e tests to verify that settings are properly applied. Closes #1081 Signed-off-by: Mateusz Gozdek <mateusz@kinvolk.io>
1 parent b419acf commit 5038d83

File tree

29 files changed

+511
-125
lines changed

29 files changed

+511
-125
lines changed

assets/charts/control-plane/kubernetes/templates/kube-proxy.yaml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,9 @@ spec:
4242
- --proxy-mode=iptables
4343
- --metrics-bind-address=$(HOST_IP)
4444
- --healthz-bind-address=$(HOST_IP)
45+
{{- if not (eq (int .Values.kubeProxy.conntrackMaxPerCore) 32768) }}
46+
- --conntrack-max-per-core={{ .Values.kubeProxy.conntrackMaxPerCore }}
47+
{{- end }}
4548
env:
4649
- name: NODE_NAME
4750
valueFrom:

assets/charts/control-plane/kubernetes/values.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ kubeProxy:
1212
image: k8s.gcr.io/kube-proxy:v1.19.4
1313
podCIDR: 10.2.0.0/16
1414
trustedCertsDir: /usr/share/ca-certificates
15+
conntrackMaxPerCore: 32768
1516
kubeScheduler:
1617
image: k8s.gcr.io/kube-scheduler:v1.19.4
1718
controlPlaneReplicas: 1

assets/terraform-modules/aws/flatcar-linux/kubernetes/bootkube.tf

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,4 +33,6 @@ module "bootkube" {
3333
encrypt_pod_traffic = var.encrypt_pod_traffic
3434

3535
ignore_x509_cn_check = var.ignore_x509_cn_check
36+
37+
conntrack_max_per_core = var.conntrack_max_per_core
3638
}

assets/terraform-modules/aws/flatcar-linux/kubernetes/variables.tf

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -196,3 +196,8 @@ variable "ignore_x509_cn_check" {
196196
type = bool
197197
default = false
198198
}
199+
200+
variable "conntrack_max_per_core" {
201+
description = "--conntrack-max-per-core value for kube-proxy. Maximum number of NAT connections to track per CPU core (0 to leave the limit as-is and ignore conntrack-min)."
202+
type = number
203+
}

assets/terraform-modules/bare-metal/flatcar-linux/kubernetes/bootkube.tf

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,4 +26,6 @@ module "bootkube" {
2626
encrypt_pod_traffic = var.encrypt_pod_traffic
2727

2828
ignore_x509_cn_check = var.ignore_x509_cn_check
29+
30+
conntrack_max_per_core = var.conntrack_max_per_core
2931
}

assets/terraform-modules/bare-metal/flatcar-linux/kubernetes/variables.tf

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -195,3 +195,8 @@ variable "ignore_x509_cn_check" {
195195
type = bool
196196
default = false
197197
}
198+
199+
variable "conntrack_max_per_core" {
200+
description = "--conntrack-max-per-core value for kube-proxy. Maximum number of NAT connections to track per CPU core (0 to leave the limit as-is and ignore conntrack-min)."
201+
type = number
202+
}

assets/terraform-modules/bootkube/assets.tf

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,7 @@ resource "local_file" "kubernetes" {
8282
serviceaccount_key = base64encode(tls_private_key.service-account.private_key_pem)
8383
etcd_endpoints = var.etcd_endpoints
8484
enable_tls_bootstrap = var.enable_tls_bootstrap
85+
conntrack_max_per_core = var.conntrack_max_per_core
8586
})
8687
}
8788

assets/terraform-modules/bootkube/resources/charts/kubernetes.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ kubeProxy:
1212
image: ${kube_proxy_image}
1313
podCIDR: ${pod_cidr}
1414
trustedCertsDir: ${trusted_certs_dir}
15+
conntrackMaxPerCore: ${conntrack_max_per_core}
1516
kubeScheduler:
1617
image: ${kube_scheduler_image}
1718
controlPlaneReplicas: ${control_plane_replicas}

assets/terraform-modules/bootkube/variables.tf

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -179,3 +179,8 @@ variable "encrypt_pod_traffic" {
179179
type = bool
180180
default = false
181181
}
182+
183+
variable "conntrack_max_per_core" {
184+
description = "--conntrack-max-per-core value for kube-proxy. Maximum number of NAT connections to track per CPU core (0 to leave the limit as-is and ignore conntrack-min)."
185+
type = number
186+
}

assets/terraform-modules/packet/flatcar-linux/kubernetes/bootkube.tf

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,4 +46,6 @@ module "bootkube" {
4646
encrypt_pod_traffic = var.encrypt_pod_traffic
4747

4848
ignore_x509_cn_check = var.ignore_x509_cn_check
49+
50+
conntrack_max_per_core = var.conntrack_max_per_core
4951
}

0 commit comments

Comments
 (0)