Skip to content
This repository was archived by the owner on Oct 31, 2019. It is now read-only.

Commit c665a18

Browse files
author
Timothy J Fontaine
committed
use a systemd unit to manage ethtool options
1 parent f051a5f commit c665a18

File tree

8 files changed

+55
-2
lines changed

8 files changed

+55
-2
lines changed

instances/k8smaster/cloud_init/bootstrap.template.yaml

+6
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,12 @@ write_files:
7979
content: |
8080
${kubelet_service_content}
8181
82+
- path: "/root/services/[email protected]"
83+
permissions: "0600"
84+
encoding: "gzip+base64"
85+
content: |
86+
${ethtool_service_content}
87+
8288
# Kube certs, tokens
8389
- path: "/etc/kubernetes/ssl/ca.pem"
8490
permissions: "0600"

instances/k8smaster/datasources.tf

+5
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,10 @@ data "template_file" "kubelet-service" {
5757
}
5858
}
5959

60+
data "template_file" "ethtool-offload-service" {
61+
template = "${file("${path.module}/scripts/ethtool-disable-offload.service")}"
62+
}
63+
6064
data "template_file" "kube-controller-manager" {
6165
template = "${file("${path.module}/manifests/kube-controller-manager.yaml")}"
6266

@@ -132,6 +136,7 @@ data "template_file" "kube_master_cloud_init_file" {
132136
master_kubeconfig_template_content = "${base64gzip(data.template_file.master-kubeconfig.rendered)}"
133137
kube_scheduler_template_content = "${base64gzip(data.template_file.kube-scheduler.rendered)}"
134138
kubelet_service_content = "${base64gzip(data.template_file.kubelet-service.rendered)}"
139+
ethtool_service_content = "${base64gzip(data.template_file.ethtool-offload-service.rendered)}"
135140
ca-pem-content = "${base64gzip(var.root_ca_pem)}"
136141
ca-key-content = "${base64gzip(var.root_ca_key)}"
137142
api-server-key-content = "${base64gzip(var.api_server_private_key_pem)}"
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
[Unit]
2+
Description=ethtool-disable-offload
3+
Requires=network.target
4+
After=network.target
5+
6+
[Service]
7+
ExecStart=/sbin/ethtool -K %i tx off
8+
Type=oneshot
9+
10+
[Install]
11+
WantedBy=multi-user.target

instances/k8smaster/scripts/setup.template.sh

+6-1
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,12 @@ fi
3232
BROADCOM_DRIVER=$(lsmod | grep bnxt_en | awk '{print $1}')
3333
if [[ -n "$${BROADCOM_DRIVER}" ]]; then
3434
echo "Disabling hardware TX checksum offloading"
35-
ethtool --offload $(ip -o -4 route show to default | awk '{print $5}') tx off
35+
#ethtool --offload $(ip -o -4 route show to default | awk '{print $5}') tx off
36+
mv /root/services/[email protected] /etc/systemd/system
37+
systemctl daemon-reload
38+
DEV=$(ip -o -4 route show to default | awk '{print $5}')
39+
systemctl enable ethtool-disable-offload@$DEV
40+
systemctl start ethtool-disable-offload@$DEV
3641
fi
3742

3843
# Download etcdctl client

instances/k8sworker/cloud_init/bootstrap.template.yaml

+6
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,12 @@ write_files:
3636
content: |
3737
${kubelet_service_content}
3838
39+
- path: "/root/services/[email protected]"
40+
permissions: "0600"
41+
encoding: "gzip+base64"
42+
content: |
43+
${ethtool_service_content}
44+
3945
# Kube certs
4046
- path: "/etc/kubernetes/ssl/ca.pem"
4147
permissions: "0600"

instances/k8sworker/datasources.tf

+5
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,10 @@ data "template_file" "kubelet-service" {
6666
}
6767
}
6868

69+
data "template_file" "ethtool-offload-service" {
70+
template = "${file("${path.module}/scripts/ethtool-disable-offload.service")}"
71+
}
72+
6973
data "template_file" "kube_worker_cloud_init_file" {
7074
template = "${file("${path.module}/cloud_init/bootstrap.template.yaml")}"
7175

@@ -76,6 +80,7 @@ data "template_file" "kube_worker_cloud_init_file" {
7680
kube_proxy_template_content = "${base64gzip(data.template_file.kube-proxy.rendered)}"
7781
worker_kubeconfig_template_content = "${base64gzip(data.template_file.worker-kubeconfig.rendered)}"
7882
kubelet_service_content = "${base64gzip(data.template_file.kubelet-service.rendered)}"
83+
ethtool_service_content = "${base64gzip(data.template_file.ethtool-offload-service.rendered)}"
7984
ca-pem-content = "${base64gzip(var.root_ca_pem)}"
8085
ca-key-content = "${base64gzip(var.root_ca_key)}"
8186
api-server-key-content = "${base64gzip(var.api_server_private_key_pem)}"
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
[Unit]
2+
Description=ethtool-disable-offload
3+
Requires=network.target
4+
After=network.target
5+
6+
[Service]
7+
ExecStart=/sbin/ethtool -K %i tx off
8+
Type=oneshot
9+
10+
[Install]
11+
WantedBy=multi-user.target

instances/k8sworker/scripts/setup.template.sh

+5-1
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,11 @@ fi
3333
BROADCOM_DRIVER=$(lsmod | grep bnxt_en | awk '{print $1}')
3434
if [[ -n "$${BROADCOM_DRIVER}" ]]; then
3535
echo "Disabling hardware TX checksum offloading"
36-
ethtool --offload $(ip -o -4 route show to default | awk '{print $5}') tx off
36+
mv /root/services/[email protected] /etc/systemd/system
37+
systemctl daemon-reload
38+
DEV=$(ip -o -4 route show to default | awk '{print $5}')
39+
systemctl enable ethtool-disable-offload@$DEV
40+
systemctl start ethtool-disable-offload@$DEV
3741
fi
3842

3943
## Setup NVMe drives and mount at /var/lib/docker

0 commit comments

Comments
 (0)