运行 docker 容器中的 K3S 服务器,并在另一个 docker 容器中连接 K3S 代理

Run a K3S server in a docker container, and connect a K3S agent in another docker container

我知道 k3d 可以通过 k3d cluster create myname --token MYTOKEN --agents 1 神奇地做到这一点,但我想弄清楚如何做 'manually' 的最简单版本。我想创建一个类似这样的服务器:

 docker run -e K3S_TOKEN=MYTOKEN rancher/k3s:latest server

并连接一个类似这样的代理:

 docker run -e K3S_TOKEN=MYTOKEN -e K3S_URL=https://localhost:6443 rancher/k3s:latest agent

有谁知道这里需要转发什么端口吗?我该如何设置?几乎我尝试的所有事情,代理都会抱怨端口 6444 已经在使用中,即使我使用 --no-deploy servicelb --disable-agent --no-deploy traefik

的任意组合尽可能多地禁用服务器

除了服务器和代理之外,您可以随意禁用所有东西,我正在努力使这个超级简单,但现在只是把我的头撞在墙上。谢谢!

容器必须“看到”彼此。 Docker 默认情况下隔离网络,因此代理容器中的“localhost”就是代理容器本身。

可能的解决方案: 运行 两个容器都没有网络隔离,使用 --net=host,将服务器的 API 端口映射到主机 --port 并使用代理容器中的主机 IP 或使用 docker-撰写。

此处描述了 docker-compose 的工作示例:https://www.trion.de/news/2019/08/28/kubernetes-in-docker-mit-k3s.html