[Unit] Description=Lightweight Kubernetes Documentation=https://k3s.io {% for requires_unit in k3s_service_requires %} Requires={{ requires_unit }} {% endfor %} Wants=network-online.target {% for wants_unit in k3s_service_wants %} Wants={{ wants_unit }} {% endfor %} {% for before_unit in k3s_service_before %} Before={{ before_unit }} {% endfor %} After=network-online.target {% for after_unit in k3s_service_after %} After={{ after_unit }} {% endfor %} [Service] Type={{ 'notify' if k3s_control_node else 'exec' }} {% if k3s_service_env_vars is defined and k3s_service_env_vars is iterable %} {% for env_var in k3s_service_env_vars %} Environent={{ env_var }}={{ k3s_service_env_vars[env_var] }} {% endfor %} {% endif %} {% if k3s_service_env_file is defined and k3s_service_env_file %} EnvironmentFile={{ k3s_service_env_file }} {% endif %} ExecStartPre=-/sbin/modprobe br_netfilter ExecStartPre=-/sbin/modprobe overlay {% filter regex_replace('\s+', ' ') %} {% filter replace('\n', ' ') %} ExecStart={{ k3s_install_dir }}/k3s {% if k3s_debug is defined and k3s_debug %} --debug {% endif %} {% if k3s_control_node %} server {% if (k3s_etcd_datastore is defined and k3s_etcd_datastore) and (k3s_primary_control_node is not defined or not k3s_primary_control_node) and k3s_controller_list | length > 1 %} --server https://{{ k3s_registration_address }}:{{ k3s_control_plane_port | default(6443) | string }} {% endif %} {% if k3s_server is defined %} --config {{ k3s_config_file }} {% endif %} {% if k3s_control_node and not k3s_primary_control_node %} --token-file {{ k3s_token_location }} {% endif %} {% else %} agent --server https://{{ k3s_registration_address }}:{{ k3s_control_plane_port | default(6443) | string }} --token-file {{ k3s_token_location }} {% if k3s_agent is defined %} --config {{ k3s_config_file }} {% endif %} {% endif %} {% endfilter %} {% endfilter %} KillMode=process Delegate=yes LimitNOFILE=1048576 LimitNPROC=infinity LimitCORE=infinity TasksMax=infinity TimeoutStartSec=0 Restart=always RestartSec=5s [Install] WantedBy=multi-user.target