Pods概述

Kubernetes教程:Pod概念

Pod 容器组是一个k8s中一个抽象的概念,用于存放一组 container(可包含一个或多个 container 容器,即图上正方体),以及这些 container 的一些共享资源。这些资源包括:

  • 共享存储,称为卷,即图上紫色圆柱
  • 网络,每个 Pod在集群中有个唯一的 IP,pod中的 container共享该IP地址
  • container(的基本信息,例如容器的镜像版本,对外暴露的端口等

Pod是 k8s 集群上的最基本的单元。当我们在 k8s 上创建 Deployment 时,会在集群上创建包含容器的 Pod (而不是直接创建容器)。每个Pod都与运行它的 worker 节点绑定,并保持在那里直到终止或被删除。如果节点发生故障,则会在群集中的其他可用节点上运行相同的 Pod(从同样的镜像创建 Container,使用同样的配置,IP 地址不同,Pod 名字不同)。

Nodes概述

Kubernetes教程:Node概念

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