现象
在k8s中生成中每当我们创建一个pod,都会伴随着一个pause容器产生,因此我们在node上面有很多的pause容器。
例如:
# master节点[root@test-3-217 ~]# kubectl apply -f busybox.yaml[root@test-3-217 ~]# kubectl get pod -o wideNAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATESbusybox-pod 1/1 Running 0 30m 10.244.2.45 test-3-219 # node节查看busybox容器[root@test-3-219 ~]# docker ps -aCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES0969c5802814 1c35c4412082 "sleep 3600" 52 seconds ago Up 50 seconds k8s_busybox_busybox-pod_default_ec874d6b-9d08-4a16-8f48-e22fd8bfca0a_0434df7bbc3fb registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.2 "/pause" 53 seconds ago Up 51 seconds k8s_POD_busybox-p
由上可以看出,pause是一个容器,但不是pod,而且先于busybox容器产生,那么pause容器有什么作用呢?
在kubernetes中,pod是可以创建和管理的最小单元,由一个或多个相关联的容器组成。pod中的多个容器共享同一个网络命名空间,因此这些容器可以共享pod的IP和端口。
其中共享的网络名称apche就是通过pause容器实现的。
下面我们通过创建一个由nginx,ghost,busybox组成的pod来演示下。
pause功能演示network namesapce
1.创建pod资源
# 配置文件vim pause-test.yamlapiVersion: v1kind: Podmetadata: name: pause-testspec: containers: - name: busybox command: - sleep - "3600" image: busybox imagePullPolicy: IfNotPresent - na