Pods概述
Pod 容器组是一个k8s中一个抽象的概念,用于存放一组 container(可包含一个或多个 container 容器,即图上正方体),以及这些 container 的一些共享资源。这些资源包括:
- 共享存储,称为卷,即图上紫色圆柱
- 网络,每个 Pod在集群中有个唯一的 IP,pod中的 container共享该IP地址
- container(的基本信息,例如容器的镜像版本,对外暴露的端口等
Pod是 k8s 集群上的最基本的单元。当我们在 k8s 上创建 Deployment 时,会在集群上创建包含容器的 Pod (而不是直接创建容器)。每个Pod都与运行它的 worker 节点绑定,并保持在那里直到终止或被删除。如果节点发生故障,则会在群集中的其他可用节点上运行相同的 Pod(从同样的镜像创建 Container,使用同样的配置,IP 地址不同,Pod 名字不同)。
Nodes概述
Pod总是在 Node 上运行。Node是 kubernetes 集群中的计算机,可以是虚拟机或物理机。每个 Node都由 master 管理。一个 Node可以有多个Pod,kubernetes master 会根据每个 Node上可用资源的情况,自动调度 Pod到最佳的 Node上。
每个 Kubernetes Node至少运行:
- Kubelet,负责 master 节点和 worker 节点之间通信的进程;管理 Pod)和 Pod内运行的 Container。
- 容器运行环境(如Docker)负责下载镜像、创建和运行容器等。
kubectl get - 显示资源列表
kubectl get deployments #获取类型为Deployment的资源列表
kubectl get pods #获取类型为Pod的资源列表
kubectl get nodes #获取类型为Node的资源列表
kubectl get deployments <-A|--all-namesapces> #获取所有名称空间的Deployment
kubectl get deployments -n kube-system #获取kube-system名称空间的Deployment
kubectl describe - 显示有关资源的详细信息
kubectl describe pod nginx-xxx #获取名称为nginx-xxx的pod的信息
kubectl describe deployment nginx #获取名称为nginx的Deployment的信息
kubectl logs - 查看pod中的容器的打印日志(和命令docker logs 类似)
kubectl logs -f nginx-pod-xxx #查看nginx-pod-xxx内的容器打印的日志
kubectl exec - 在pod中的容器环境内执行命令(和命令docker exec 类似)
kubectl exec -it nginx-pod-xxx /bin/bash #在nginx-pod-xxx的Pod中运行bash