Pod
官网
英文官网
https://kubernetes.io/docs/concepts/workloads/pods/pod-overview/
中文官网
https://kubernetes.io/zh/docs/concepts/workloads/pods/
概述
1.Pod是K8S之中可部署的最小单位;
2.一个Pod中可以包含一个或者多个容器(Container)
3.一个Pod一个ip地址
kubectl apply -f pod_nginx.yaml [Pod创建]
1.创建配置ymal文件
apiVersion: v1
kind: Pod
metadata:
name: nginx
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx
ports:
- containerPort: 80
2.启动Pod
[root@manager-node demo]# ls -la
total 4
drwxr-xr-x. 2 root root 36 Jan 5 01:28 .
dr-xr-x---. 7 root root 243 Jan 2 04:24 ..
-rw-r--r--. 1 root root 353 Jan 2 04:25 pod_nginx_kubeadm.yaml
[root@manager-node demo]# vi pod_nginx.yaml
[root@manager-node demo]# kubectl apply -f pod_nginx.yaml
pod/nginx created
[root@manager-node demo]# kubectl get pods
NAME READY STATUS RESTARTS AGE
nginx 0/1 ContainerCreating 0 6s
[root@manager-node demo]#
[root@manager-node demo]# kubectl get pods
NAME READY STATUS RESTARTS AGE
nginx 1/1 Running 0 43m
[root@manager-node demo]#
1.上面开始创建pod的时候,状态是变化的,由ContainerCreating 慢慢的变为RUNNING;
3.kubectl exec -it nginx bash[Pod的进入]
[root@manager-node demo]# kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
nginx 1/1 Running 0 50m 192.168.38.73 worker02-node <none> <none>
[root@manager-node demo]# kubectl exec -it nginx bash
root@nginx:/#
4.容器的查看
1.通过kubectl get pods -o wide命令的查看,我们可以发现,我们nginx这个pod在worker02-node节点上
2.我们接下来去worker02-node节点上去查看一下Container
[root@worker02-node ~]# pwd
/root
[root@worker02-node ~]# docker ps |grep nginx
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3983c3ff3ed9 nginx "nginx -g 'daemon of…" About an hour ago Up About an hour k8s_nginx_nginx_default_dad3587f-2f5a-11ea-baf4-5254008afee6_0
4d649d08cb2d k8s.gcr.io/pause:3.1 "/pause" About an hour ago Up About an hour k8s_POD_nginx_default_dad3587f-2f5a-11ea-baf4-5254008afee6_0
[root@worker02-node ~]#
1.如上,我们在worker02-node节点上,我们可以看到nginx的Container容器已经被创建
2.这里注意下,同时通过k8s.gcr.io/pause:3.1镜像创建一个了一个容器 4d649d08cb2d
那么这个容器我们怎么理解他的作用呢?见下面的解释[k8s.gcr.io/pause:3.1]的解释
k8s.gcr.io/pause:3.1 [中间容器]
1.我们都知道,一个Pod可能会包含一个或者多个容器(Container),因此,这里就涉及到一个先后其他的问题,
因为同一个Pod之中,容器A的启动可能依赖于容器B的存在,
2.同一个Pod之中,需要共享网络Network Namespace(网络空间)
3.同一个Pod之中,需要共享Volume(挂载的目录,大家可以理解为存储空间)
4.这个时候K8S引入了一个k8s.gcr.io/pause这个镜像,在Pod启动的时候,会拉取k8s.gcr.io/pause这个镜像
启动容器,然后其他的容器启动,都共享这个网络和volume;