Kubernetes之Pod组件深入

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;

在这里插入图片描述

发布了261 篇原创文章 · 获赞 37 · 访问量 20万+

猜你喜欢

转载自blog.csdn.net/u014636209/article/details/103939211