Defaults

k3d reserved settings

When you create a K3s cluster in Docker using k3d, we make use of some K3s configuration options, making them “reserved” for k3d. This means, that overriding those options with your own may break the cluster setup.

Environment Variables

The following K3s environment variables are used to configure the cluster:

VariableK3d DefaultConfigurable?
K3S_URLhttps://$CLUSTERNAME-server-0:6443no
K3S_TOKENrandomyes (—token)
K3S_KUBECONFIG_OUTPUT/output/kubeconfig.yamlno

k3d Loadbalancer

By default, k3d creates an Nginx loadbalancer alongside the clusters it creates to handle the port-forwarding. The loadbalancer can partly be configured using k3d-defined settings.

Nginx settingk3d defaultk3d setting
proxy_timeout (default for all server stanzas)600 (s)settings.defaultProxyTimeout
worker_connections1024settings.workerConnections

Overrides

  • Example via CLI: k3d cluster create --lb-config-override settings.defaultProxyTimeout=900
  • Example via Config File:

    1. # ... truncated ...
    2. k3d:
    3. loadbalancer:
    4. configOverrides:
    5. - settings.workerConnections=2048

Multiple server nodes

  • by default, when --server > 1 and no --datastore-x option is set, the first server node (server-0) will be the initializing server node
    • the initializing server node will have the --cluster-init flag appended
    • all other server nodes will refer to the initializing server node via --server https://<init-node>:6443

API-Ports

  • by default, we expose the API-Port (6443) by forwarding traffic from the default server loadbalancer (nginx container) to the server node(s)
  • port 6443 of the loadbalancer is then mapped to a specific (--api-port flag) or a random (default) port on the host system

Kubeconfig

  • if --kubeconfig-update-default is set, we use the default loading rules to get the default kubeconfig:
    • First: kubeconfig specified via the KUBECONFIG environment variable (error out if multiple are specified)
    • Second: default kubeconfig in home directory (e.g. $HOME/.kube/config)

Networking


Last update: May 12, 2022