既然k8s 底层是支持Docker runtime的,那么我们自然也可以通docker run 的方式启动一个Pod。
首先我们创建一个Pod 级别的cgroup
sudo cgcreate -g cpu,memory:/pod-foo
# 查看创建的 cgroup
ls -l /sys/fs/cgroup/cpu/pod-foo/
ls -l /sys/fs/cgroup/memory/pod-foo/
启动我们的sandbox 容器
docker run -d --rm
--name foo_sandbox
--cgroup-parent /pod-foo
--ipc 'shareable'
alpine sleep infinity
通过cgroup-parent 指定 cgroup
然后启动我们的业务容器
$ docker run -d --rm
--name App
--cgroup-parent /pod-foo
-.NETwork container:foo_sandbox
--ipc container:foo_sandbox
kennethreitz/httpbin
主要是通过 --network 共享sandbox 网络,通过 --ipc 共享sandbox ipc。
如果有必要的话,我们还可以启动一个sidecar 容器
$ docker run -d --rm
--name sidecar
--cgroup-parent /pod-foo
--network container:foo_sandbox
--ipc container:foo_sandbox
curlimages/curl sleep 365d