k0s Docker & Self-Hosted Deployment

GitHub

K0s - The Zero Friction Kubernetes

6,537 stars Go Go 1 file ยท ~130,833 tokens #kubernetes
RAW Compose
1. Pull Image (DOCKERHUB) docker pull docker.io/k0sproject/k0s
2. Docker Run (1-Click Launch) docker run -d --name k0s -p 6443:6443 --restart always docker.io/k0sproject/k0s:{{{ k0s_docker_version }}}
3. Podman Run podman run -d --name k0s -p 6443:6443 --restart always docker.io/k0sproject/k0s:{{{ k0s_docker_version }}}
4. Skopeo Inspect (Zero-Pull Manifest) skopeo inspect docker://docker.io/docker.io/k0sproject/k0s:{{{ k0s_docker_version }}}
5. ORAS Pull (OCI Artifact) oras pull docker.io/k0sproject/k0s:{{{ k0s_docker_version }}}
6. Compose Deployment docker compose up -d
docs/compose.yaml
Download .yml
services:
  k0s-controller:
    image: docker.io/k0sproject/k0s:{{{ k0s_docker_version }}}
    container_name: k0s-controller
    hostname: k0s-controller
    network_mode: bridge # other modes are unsupported
    ports:
      - 6443:6443 # publish the Kubernetes API server port
    volumes:
      - /var/lib/k0s # this is where k0s stores its data
      - /var/log/pods # this is where k0s stores pod logs
      - /dev/kmsg:/dev/kmsg:ro # required by kubelets OOM watcher
    tmpfs:
      - /run # this is where k0s stores runtime data
    devices:
      - /dev/kmsg # required by kubelet's OOM watcher
    cap_add:
      - sys_admin
      - net_admin
      - sys_ptrace
      - sys_resource
      - syslog
    security_opt:
      - seccomp:unconfined # allow access to the session keyring
    configs:
      - source: k0s.yaml
        target: /etc/k0s/k0s.yaml

configs:
  k0s.yaml:
    content: |
      apiVersion: k0s.k0sproject.io/v1beta1
      kind: ClusterConfig
      metadata:
        name: k0s
      spec:
        storage:
          type: kine
      # Any additional configuration goes here ...