Skip to content

Commit a5a3233

Browse files
Merge pull request #447 from tuenti/conntrack-settings
Add configuration options for conntrack settings in v1beta1 and v1beta2
2 parents 4010496 + 6a387a2 commit a5a3233

File tree

5 files changed

+90
-8
lines changed

5 files changed

+90
-8
lines changed

manifests/config/kubeadm.pp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,10 @@
5656
String $cgroup_driver = $kubernetes::cgroup_driver,
5757
String $proxy_mode = $kubernetes::proxy_mode,
5858
Stdlib::IP::Address $metrics_bind_address = $kubernetes::metrics_bind_address,
59+
Integer $conntrack_max_per_core = $kubernetes::conntrack_max_per_core,
60+
Integer $conntrack_min = $kubernetes::conntrack_min,
61+
String $conntrack_tcp_wait_timeout = $kubernetes::conntrack_tcp_wait_timeout,
62+
String $conntrack_tcp_stablished_timeout = $kubernetes::conntrack_tcp_stablished_timeout,
5963
) {
6064
if !($proxy_mode in ['', 'userspace', 'iptables', 'ipvs', 'kernelspace']) {
6165
fail('Invalid kube-proxy mode! Must be one of "", userspace, iptables, ipvs, kernelspace.')

manifests/init.pp

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -448,6 +448,24 @@
448448
# Set the metricsBindAddress (to allow prometheus)
449449
# Default to 127.0.0.1
450450
#
451+
# [*conntrack_max_per_core*]
452+
# Maximum number of NAT connections to track per CPU core.
453+
# Set to 0 to leave the limit as-is and ignore conntrack_min.
454+
# Default to 32768
455+
#
456+
# [*conntrack_min*]
457+
# Minimum number of conntrack entries to allocate, regardless of conntrack-max-per-core.
458+
# Set conntrack_max_per_core to 0 to leave the limit as-is
459+
# Default to 131072
460+
#
461+
# [*conntrack_tcp_wait_timeout*]
462+
# NAT timeout for TCP connections in the CLOSE_WAIT state.
463+
# Default to 1h0m0s
464+
#
465+
# [*conntrack_tcp_stablished_timeout*]
466+
# Idle timeout for established TCP connections (0 to leave as-is).
467+
# Default to 24h0m0s
468+
#
451469
# Authors
452470
# -------
453471
#
@@ -580,6 +598,10 @@
580598
Optional[Array] $ignore_preflight_errors = undef,
581599
Stdlib::IP::Address $metrics_bind_address = '127.0.0.1',
582600
Optional[String] $join_discovery_file = undef,
601+
Integer $conntrack_max_per_core = 32768,
602+
Integer $conntrack_min = 131072,
603+
String $conntrack_tcp_wait_timeout = '1h0m0s',
604+
String $conntrack_tcp_stablished_timeout = '24h0m0s',
583605
) {
584606
if !$facts['os']['family'] in ['Debian', 'RedHat'] {
585607
notify { "The OS family ${facts['os']['family']} is not supported by this module": }

spec/classes/config/kubeadm_spec.rb

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -451,4 +451,60 @@
451451

452452
it { is_expected.to compile.and_raise_error(%r{metrics_bind_address}) }
453453
end
454+
455+
context 'with conntrack settings version = 1.14' do
456+
let(:params) do
457+
{
458+
'kubernetes_version' => '1.14.2',
459+
'conntrack_max_per_core' => 0,
460+
'conntrack_min' => 0,
461+
'conntrack_tcp_wait_timeout' => '0h0m0s',
462+
'conntrack_tcp_stablished_timeout' => '0h0m0s',
463+
}
464+
end
465+
466+
let(:config_yaml) { YAML.load_stream(catalogue.resource('file', '/etc/kubernetes/config.yaml').send(:parameters)[:content]) }
467+
468+
it { is_expected.to contain_file('/etc/kubernetes/config.yaml') }
469+
it 'has 0 in kube_proxy_conntrack_max_per_core:' do
470+
expect(config_yaml[2]['conntrack']['maxPerCore']).to eq(0)
471+
end
472+
it 'has 0 in kube_proxy_conntrack_min:' do
473+
expect(config_yaml[2]['conntrack']['min']).to eq(0)
474+
end
475+
it 'has 0h0m0s in kube_proxy_conntrack_tcp_wait_timeout:' do
476+
expect(config_yaml[2]['conntrack']['tcpCloseWaitTimeout']).to eq('0h0m0s')
477+
end
478+
it 'has 0h0m0s in kube_proxy_conntrack_tcp_stablished_timeout:' do
479+
expect(config_yaml[2]['conntrack']['tcpEstablishedTimeout']).to eq('0h0m0s')
480+
end
481+
end
482+
483+
context 'with conntrack settings version = 1.16' do
484+
let(:params) do
485+
{
486+
'kubernetes_version' => '1.16.2',
487+
'conntrack_max_per_core' => 0,
488+
'conntrack_min' => 0,
489+
'conntrack_tcp_wait_timeout' => '0h0m0s',
490+
'conntrack_tcp_stablished_timeout' => '0h0m0s',
491+
}
492+
end
493+
494+
let(:config_yaml) { YAML.load_stream(catalogue.resource('file', '/etc/kubernetes/config.yaml').send(:parameters)[:content]) }
495+
496+
it { is_expected.to contain_file('/etc/kubernetes/config.yaml') }
497+
it 'has 0 in kube_proxy_conntrack_max_per_core:' do
498+
expect(config_yaml[2]['conntrack']['maxPerCore']).to eq(0)
499+
end
500+
it 'has 0 in kube_proxy_conntrack_min:' do
501+
expect(config_yaml[2]['conntrack']['min']).to eq(0)
502+
end
503+
it 'has 0h0m0s in kube_proxy_conntrack_tcp_wait_timeout:' do
504+
expect(config_yaml[2]['conntrack']['tcpCloseWaitTimeout']).to eq('0h0m0s')
505+
end
506+
it 'has 0h0m0s in kube_proxy_conntrack_tcp_stablished_timeout:' do
507+
expect(config_yaml[2]['conntrack']['tcpEstablishedTimeout']).to eq('0h0m0s')
508+
end
509+
end
454510
end

templates/v1beta1/config_kubeadm.yaml.erb

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -109,10 +109,10 @@ clientConnection:
109109
clusterCIDR: <%= @cni_pod_cidr %>
110110
configSyncPeriod: 15m0s
111111
conntrack:
112-
maxPerCore: 32768
113-
min: 131072
114-
tcpCloseWaitTimeout: 1h0m0s
115-
tcpEstablishedTimeout: 24h0m0s
112+
maxPerCore: <%= @conntrack_max_per_core %>
113+
min: <%= @conntrack_min %>
114+
tcpCloseWaitTimeout: <%= @conntrack_tcp_wait_timeout %>
115+
tcpEstablishedTimeout: <%= @conntrack_tcp_stablished_timeout %>
116116
enableProfiling: false
117117
healthzBindAddress: 0.0.0.0:10256
118118
hostnameOverride: ""

templates/v1beta2/config_kubeadm.yaml.erb

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -111,10 +111,10 @@ clientConnection:
111111
clusterCIDR: <%= @cni_pod_cidr %>
112112
configSyncPeriod: 15m0s
113113
conntrack:
114-
maxPerCore: 32768
115-
min: 131072
116-
tcpCloseWaitTimeout: 1h0m0s
117-
tcpEstablishedTimeout: 24h0m0s
114+
maxPerCore: <%= @conntrack_max_per_core %>
115+
min: <%= @conntrack_min %>
116+
tcpCloseWaitTimeout: <%= @conntrack_tcp_wait_timeout %>
117+
tcpEstablishedTimeout: <%= @conntrack_tcp_stablished_timeout %>
118118
enableProfiling: false
119119
healthzBindAddress: 0.0.0.0:10256
120120
hostnameOverride: ""

0 commit comments

Comments
 (0)