既然k8s 底層是支持Docker runtime的,那么我們自然也可以通docker run 的方式啟動(dòng)一個(gè)Pod。
首先我們創(chuàng)建一個(gè)Pod 級(jí)別的cgroup
sudo cgcreate -g cpu,memory:/pod-foo
# 查看創(chuàng)建的 cgroup
ls -l /sys/fs/cgroup/cpu/pod-foo/
ls -l /sys/fs/cgroup/memory/pod-foo/
啟動(dòng)我們的sandbox 容器
docker run -d --rm
--name foo_sandbox
--cgroup-parent /pod-foo
--ipc 'shareable'
alpine sleep infinity
通過cgroup-parent 指定 cgroup
然后啟動(dòng)我們的業(yè)務(wù)容器
$ docker run -d --rm
--name App
--cgroup-parent /pod-foo
--network container:foo_sandbox
--ipc container:foo_sandbox
kennethreitz/httpbin
主要是通過 --network 共享sandbox 網(wǎng)絡(luò),通過 --ipc 共享sandbox ipc。
如果有必要的話,我們還可以啟動(dòng)一個(gè)sidecar 容器
$ docker run -d --rm
--name sidecar
--cgroup-parent /pod-foo
--network container:foo_sandbox
--ipc container:foo_sandbox
curlimages/curl sleep 365d