什么是 Pod?
Pod 是一个或多个容器的组合。这些容器共享存储、网络和命名空间,以及运行规范。在 Pod中,所有容器都被统一安排和调度,并运行在共享的上下文中。对于具体应用而言,Pod 是它们的逻辑主机,Pod 包含业务相关的多个应用容器。所以,Pod 是一组具有共享命名空间、IP 地址和端口的容器的集合。
Pod 可以简单的理解为一组、一个或多个容器,每个 Pod 还包含一个 Pause 容器,Pause 容器是 Pod 的父容器,主要负责僵尸进程的回收管理。同时,通过 Pause 容器可以使同一个 Pod里面的不同容器共享存储、网络、PID、IPC等,容器之间可以使用 Localhost:Port 的方式相互访问,可以使用 volume 实现数据共享。根据 Docker 的构造,Pod 可以被创建为一组具有共享命名空卷、IP 地址和端口的容器。
pod的状态
1.Pending(等待中)
状态描述:Pod被创建后,正在等待调度器为其分配所需的节点资源。这可能包括下载镜像、分配IP地址、执行初始化容器等操作。
可能原因:资源不足、调度问题、镜像拉取失败、节点故障等。
2. Running(运行中)
状态描述:Pod已经被调度到节点上,并且至少其中一个容器正在运行。Pod中的容器可能正在运行、启动或重启。
注意:即使Pod处于Running状态,也不代表所有容器都正常运行,因为可能存在容器正在重启或初始化的情况。
3. Succeeded(已完成)
状态描述:Pod中的所有容器都已成功执行完任务并退出,且不会再自动重启。这种状态通常出现在Job任务完成后。
特点:Pod完成了其预定的任务,并成功终止。
4. Failed(失败)
状态描述:Pod中的一个或多个容器由于某种原因失败。容器可能以非零状态码退出或被系统终止。
可能原因:容器内部错误、依赖资源不可用、初始化容器失败等。
5. Unknown(未知)
状态描述:无法获取Pod的状态信息。这通常是由于与API服务器的通信问题、节点故障或网络问题等导致的。
影响:在这种情况下,管理员需要检查集群的健康状况和节点状态,以确定为何无法获取Pod的状态信息。
6. Terminating(终止中)
状态描述:Pod正在被删除或终止,Kubernetes正在尝试停止容器并清理资源。
过程:在这个过程中,Pod可能会经历一系列清理操作,如停止容器、释放资源等。
7. ContainerCreating(创建容器中)
状态描述:Pod的容器正在被创建中。这通常发生在容器镜像下载或初始化容器执行的过程中。
可能原因:镜像拉取速度慢、网络问题、节点资源不足等。
8. 特殊状态
除了上述基本状态外,Pod还可能处于一些特殊状态,如:
CrashLoopBackOff:容器退出后,kubelet正在尝试重启它,但连续多次失败。
ImagePullBackOff:正在重试拉取镜像,但连续多次失败。
Evicted:Pod被驱逐出节点,通常是因为节点资源不足。
Pod状态
(1)kubectl命令创建pod
kubectl run nginx --image=nginx:1.7.9 --labels="app=nginx"
(2)查看pod
kubectl get pod
(3)显示pod的更多信息
kubectl get pod nginx -o wide
(4)查看pod日志
kubectl logs nginx
(5)以yaml格式显示pod详细信息
kubectl get pod nginx -o yaml
(6)显示资源的详细描述信息
kubectl describe pod nginx
(7)在pod的容器中执行命令
kubectl exec nginx -c nginx -- date
(8)登录到pod中的容器中
kubectl exec -it nginx -c nginx -- bash
(9)在线编辑运行中的资源对象
kubectl edit pod nginx
(10)将pod的端口映射到宿主机
kubectl port-forward --address 0.0.0.0 pod/nginx 8080:80
(11)在宿主机和pod的容器之间拷贝文件
kubectl cp nginx:/etc/fstab /opt/aaa.txt
(12)删除pod
kubectl delete pod nginx