Self-hosted runners are allowed on the free plan, as that is what I have deployed.
The error you have posted does not have enough context to comment on, what I can say is that the docs are not that clear on all the steps needed to get a runner installed and connected to the central system.
Until you have a full understanding of the steps I would recommend you work within a VM instance of the OS you wish to deploy as that will remove kubectl from the mix as getting this all working needs easy (and constant) access to the CLI.
The steps I have for Linux are
Install the CircleCLI - This needs a API token
Create a namespace - One time task for the whole account and is linked to a single repository!
Create runner on namespace - this generates a long auth token string
configure launch-agent-config.yaml with the long auth token
setup the systemd agent
enable the system agent
reboot or start the systems agent
The command “circleci runner instance list vatogo list” should show the defined runner linked to the namespace
The command ‘systemctl status circleci.service --no-pager’ should show the runner running without errors.