Give system.slice and the k3s unit CPUWeight 1000 so the control plane wins CPU against pods
This commit is contained in:
@@ -0,0 +1,36 @@
|
|||||||
|
# kubelet gives kubepods.slice a cpu.weight from its allocatable CPUs (313 on
|
||||||
|
# 8 cores), while system.slice and k3s.service keep the default 100. Under load
|
||||||
|
# the pods then outweigh etcd, apiserver and kubelet. Weight 1000 lets the
|
||||||
|
# control plane win that contention.
|
||||||
|
- name: Set the CPUWeight of system.slice and the k3s unit
|
||||||
|
vars:
|
||||||
|
k3s_unit: "{{ 'k3s' if type == 'server' else 'k3s-agent' }}.service"
|
||||||
|
block:
|
||||||
|
- name: Create the drop-in directories
|
||||||
|
ansible.builtin.file:
|
||||||
|
path: "/etc/systemd/system/{{ item }}.d"
|
||||||
|
state: directory
|
||||||
|
mode: "0755"
|
||||||
|
loop:
|
||||||
|
- system.slice
|
||||||
|
- "{{ k3s_unit }}"
|
||||||
|
|
||||||
|
- name: Write the CPUWeight drop-ins
|
||||||
|
ansible.builtin.copy:
|
||||||
|
dest: "/etc/systemd/system/{{ item.unit }}.d/50-cpu-weight.conf"
|
||||||
|
mode: "0644"
|
||||||
|
content: |
|
||||||
|
[{{ item.section }}]
|
||||||
|
CPUWeight=1000
|
||||||
|
loop:
|
||||||
|
- unit: system.slice
|
||||||
|
section: Slice
|
||||||
|
- unit: "{{ k3s_unit }}"
|
||||||
|
section: Service
|
||||||
|
register: cpu_weight
|
||||||
|
|
||||||
|
# Only daemon-reload: the weight applies to the running k3s unit without a restart
|
||||||
|
- name: Reload systemd for the CPUWeight drop-ins
|
||||||
|
ansible.builtin.systemd_service:
|
||||||
|
daemon_reload: true
|
||||||
|
when: cpu_weight is changed
|
||||||
@@ -2,5 +2,8 @@
|
|||||||
|
|
||||||
- import_tasks: ./node.yml
|
- import_tasks: ./node.yml
|
||||||
|
|
||||||
|
- import_tasks: ./cpu_weight.yml
|
||||||
|
tags: cpu_weight
|
||||||
|
|
||||||
- import_tasks: ./install.yml
|
- import_tasks: ./install.yml
|
||||||
when: target_host is not defined or inventory_hostname == target_host
|
when: target_host is not defined or inventory_hostname == target_host
|
||||||
|
|||||||
Reference in New Issue
Block a user