kubernetes中,pod中的容器共享命名空间

kubernetes编排和调度的基本单元是一个个的pod,其中每个pod中会包含一个或者多个容器,例如,如下的配置定义了一个pod,包含有两个container:

apiVersion: v1
kind: Pod
metadata:
  name: nginx
spec:
  shareProcessNamespace: true
  containers:
  - name: nginx
    image: nginx
  - name: shell
    image: busybox
    stdin: true
    tty: true


调度到kubernetes平台之后,会发现有两个容器在运行:

这里要强调的是同一个pod中的各容器是共享一些资源的,其实就是namespace是打通的,比如pid namespace、network namespace以及存储的namespace等。

共享pid namespace,也就是说你在一个容器中能看到另外一个容器的进程列表

pod级别的共享控制参数:ShareProcessNamespace 默认是开启的,

可以通过禁用:

--feature-gates=PodShareProcessNamespace=false

 

比如,可以尝试在busybox容器中运行ps,可以看到nginx相关的进程。

命名空间的共享在底层是通过docker来支持的。: https://docs.docker.com/engine/reference/run/

同样的,也有控制网络命名空间相关的配置

 

为了确认这一点,docker insepect相关的容器

 

看一看到,两个容器的命名空间是共享的。

 

最后,一共pod中的容器可以共享的资源有:

  • PID命名空间:Pod中的不同应用程序可以看到其他应用程序的进程ID;
  • 网络命名空间:Pod中的多个容器能够访问同一个IP和端口范围;
  • IPC命名空间:Pod中的多个容器能够使用SystemV IPC或POSIX消息队列进行通信;
  • UTS命名空间:Pod中的多个容器共享一个主机名;
  • Volumes(共享存储卷):Pod中的各个容器可以访问在Pod级别定义的Volumes;

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值