既然k8s 底层是支持 runtime的,那么我们自然也可以通docker run 的方式启动一个Pod。

如何通过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  
  --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
胜象大百科