了解 Pod 和 Node
Pod
Pod中的容器共享 IP 地址和端口空间(同一 Pod 中的不同 container 端口不能相互冲突),始终位于同一位置并共同调度,并在同一节点上的共享上下文中运行。(同一个Pod内的容器可以localhost + 端口互相访问)。
当在 k8s 上创建 Deployment 时,会在集群上创建包含容器的 Pod (而不是直接创建容器)。每个Pod都与运行它的 worker 节点(Node)绑定,并保持在那里直到终止或被删除。如果节点(Node)发生故障,则会在群集中的其他可用节点(Node)上运行相同的 Pod(从同样的镜像创建 Container,使用同样的配置,IP 地址不同,Pod 名字不同)。
- Pod(容器组)是 k8s 集群上的最基本的单元。
- Pod 是一组容器(可包含一个或多个应用程序容器),以及共享存储(卷 Volumes)、IP 地址和有关如何运行容器的信息。
- 如果多个容器紧密耦合并且需要共享磁盘等资源,则应该被部署在同一个Pod(容器组)中
Node
- Pod(容器组)总是在 Node(节点) 上运行。
- Node(节点)是 kubernetes 集群中的计算机,可以是虚拟机或物理机。
- 每个 Node(节点)都由 master 管理。
- 一个 Node(节点)可以有多个Pod(容器组),kubernetes master 会根据每个 Node(节点)上可用资源的情况,自动调度 Pod(容器组)到最佳的 Node(节点)上。
每个Node(节点)至少运行:
- Kubelet,负责 master 节点和 worker 节点之间通信的进程;管理 Pod(容器组)和 Pod(容器组)内运行的 Container(容器)。
- 容器运行环境(如Docker)负责下载镜像、创建和运行容器等。
相关命令操作
kubectl get - 显示资源列表
1 | # kubectl get 资源类型 |
kubectl describe - 显示有关资源的详细信息
1 | # kubectl describe 资源类型 资源名称 |
kubectl logs - 查看pod中的容器的打印日志(和命令docker logs 类似)
1 | # kubectl logs Pod名称 |
kubectl exec - 在pod中的容器环境内执行命令(和命令docker exec 类似)
1 | # kubectl exec Pod名称 操作命令 |