简介
Pods 的概述。
Pod 简介
Pod 是应用程序运行的地方,它是 Kubernetes 中的基本构建单元,也是调度的原子单位。
每个 Pod 包含一个或多个容器,每次在 Kubernetes 中运行容器时,都必须将其放入一个 Pod 中。
Pod 是调度的原子单位
需要明确的是,Pod 是 Kubernetes 中调度的最小单位。因此,如果我们想运行 10 个应用副本,应该创建 10 个 Pod,而不是在一个 Pod 中运行 10 个容器。当我们开始讨论部署(Deployments)时,会看到更多这方面的实际例子。
回顾之前的示例,我们有一个如下结构的清单文件:
1apiVersion: v1 2kind: Pod 3metadata: 4 name: nginx 5spec: 6 containers: 7 - name: nginx-container 8 image: nginx
可以看到,kind 字段表明这是一个 Pod 的定义。metadata 部分用于指定该 Pod 的唯一名称(这里是 nginx),而 spec 部分则定义了要在该 Pod 中运行的内容。在此例中,我们运行一个名为 nginx-container 的容器,并指定其使用的 Docker 镜像为 nginx。
大多数清单文件都遵循类似的格式。虽然还可以定义其他字段,但以上内容已是最小配置,足以启动一个 Pod。
镜像从哪里来?
在这个清单中,我们指定了 nginx 作为要运行的 Docker 镜像名称,但并未说明 Kubernetes 应该去哪里查找这个镜像。
就像我们可以将代码仓库存储在 GitHub 或 GitLab 等服务中一样,也可以将镜像存储在 Docker 注册中心中。如果没有特别指定注册中心,Kubernetes 默认会认为我们要使用 DockerHub。
如果希望更明确地指定,可以修改清单文件,使用完整的镜像路径:
1apiVersion: v1 2kind: Pod 3metadata: 4 name: nginx 5spec: 6 containers: 7 - name: nginx-container 8 image: registry.hub.docker.com/library/nginx
或者,如果你使用的是其他镜像服务(例如 ECR),也可以指定其完整路径:
1apiVersion: v1 2kind: Pod 3metadata: 4 name: nginx 5spec: 6 containers: 7 - name: nginx-container 8 image: public.ecr.aws/nginx/nginx
运行下方的小工具,并使用以下命令创建你的 Pod:
1kubectl apply -f nginx.yaml
No configuration found for ID: bd72710c271ac4976e70b9951d52031104cca35669bf24f2eef7b650600b6688
注意: 请运行 kubectl get pods 命令以检查你的 Pod 状态。