services: k3s-server: image: "rancher/k3s:${K3S_VERSION:-latest}" # command: server --disable traefik --disable servicelb command: server --disable traefik hostname: k3s-server dns: - 10.10.20.100 tmpfs: [ "/run", "/var/run" ] ulimits: nproc: 65535 nofile: soft: 65535 hard: 65535 privileged: true restart: always environment: - K3S_TOKEN=${K3S_TOKEN:-secret} - K3S_KUBECONFIG_OUTPUT=/output/kubeconfig.yaml - K3S_KUBECONFIG_MODE=666 volumes: - k3s-server:/var/lib/rancher/k3s # This is just so that we get the kubeconfig file out - .:/output ports: - 6443 # Kubernetes API Server - 80 # Ingress controller port 80 - 443 # Ingress controller port 443 k3s-agent: image: "rancher/k3s:${K3S_VERSION:-latest}" hostname: k3s-agent dns: - 10.10.20.100 tmpfs: [ "/run", "/var/run" ] ulimits: nproc: 65535 nofile: soft: 65535 hard: 65535 privileged: true restart: always environment: - K3S_URL=https://k3s-server:6443 - K3S_TOKEN=${K3S_TOKEN:-secret} volumes: - k3s-agent:/var/lib/rancher/k3s profiles: [ "cluster" ] # only start agent if run with profile `cluster` volumes: k3s-server: {} k3s-agent: {}