编辑
2023-06-02
K8S
00
请注意,本文编写于 600 天前,最后修改于 597 天前,其中某些信息可能已经过时。

目录

1.什么是pod?
2.Pod 怎样管理多个容器?
3.如何使用pod?
3.pod的基本操作
4.创建Pod
4.进入pod的容器内
5.查看pod日志
6.查看pod的详细信息
7.删除pod

1.什么是pod?

Pod 是可以在 Kubernetes 中创建和管理的、最小的可部署的计算单元Pod(就像在鲸鱼荚或者豌豆荚中)是一组(一个或多个)容器; 这些容器共享存储、网络、以及怎样运行这些容器的声明。 Pod 中的内容总是并置(colocated)的并且一同调度,在共享的上下文中运行。简言之如果用 Docker 的术语来描述,Pod 类似于共享名字空间并共享文件系统卷的一组容器。

定义

定义: Pod 就是用来管理一组(一个|多个)容器的集合 特点: 共享网络 共享存储 共享上下文环境

2.Pod 怎样管理多个容器?

Pod 中的容器被自动安排到集群中的同一物理机或虚拟机上,并可以一起进行调度。 容器之间可以共享资源和依赖、彼此通信、协调何时以及何种方式终止自身。例如,你可能有一个容器,为共享卷中的文件提供 Web 服务器支持,以及一个单独的 "边车 (sidercar)" 容器负责从远端更新这些文件,如下图所示:

image.png

3.如何使用pod?

通常你不需要直接创建 Pod,甚至单实例 Pod。 相反,你会使用诸如 Deployment 或 Job 这类工作负载资源来创建 Pod。 如果 Pod 需要跟踪状态,可以考虑 StatefulSet 资源。

Kubernetes 集群中的 Pod 主要有两种用法:

  • 运行单个容器的 Pod。"每个 Pod 一个容器" 模型是最常见的 Kubernetes 用例; 在这种情况下,可以将 Pod 看作单个容器的包装器,并且 Kubernetes 直接管理 Pod,而不是容器。
  • 运行多个协同工作的容器 的 Pod。 Pod 可能封装由多个紧密耦合且需要共享资源的共处容器组成的应用程序。 这些位于同一位置的容器可能形成单个内聚的服务单元 —— 一个容器将文件从共享卷提供给公众, 而另一个单独的 “边车”(sidecar)容器则刷新或更新这些文件。 Pod 将这些容器和存储资源打包为一个可管理的实体。

说明:

  • 将多个并置、同管的容器组织到一个 Pod 中是一种相对高级的使用场景。 只有在一些场景中,容器之间紧密关联时你才应该使用这种模式。
  • 每个 Pod 都旨在运行给定应用程序的单个实例。如果希望横向扩展应用程序 (例如,运行多个实例以提供更多的资源),则应该使用多个 Pod,每个实例使用一个 Pod。 在 Kubernetes 中,这通常被称为副本(Replication)。 通常使用一种工作负载资源及其控制器来创建和管理一组 Pod 副本。

3.pod的基本操作

shell
#查看所有的命名空间 kubectl get po -A
shell
#查看默认的命名空间 kubectl get po
shell
#查看详细的命名空间 kubectl get pod -o wide -n kube-system
js
#查看所有pod的命名空间详细信息 kubectl get po -o wide -A
js
#-w 监控 kubectl get po -o wide -A

4.创建Pod

创建一个yaml文件

js
touch nginx.yaml

写入以下内容:

yaml
apiVersion: v1 kind: Pod metadata: name: nginx spec: containers: - name: nginx image: nginx:1.19 ports: - containerPort: 80

启动 nginx.yaml

js
kubectl apply -f nginx.yaml
js
# 使用 kubectl apply/create -f 创建 pod kubectl create -f nginx.yml kubectl apply -f nginx.yml

注意

注意: create 仅仅是不存在时创建,如果已经存在则报错!apply 不存在创建,存在更新配置。推荐使用 apply!

4.进入pod的容器内

js
格式:kubectl exec -it pod的名字 -- bash (--bash固定写死)
shell
kubectl exec -it nginx -- bash
shell
#进入一个pod的指定容器内 kubectl exec -it nginx pod名称 -c 容器名称 -- bash

5.查看pod日志

会查看pod所有容器的日志

shell
kubectl logs -f nginx

查看指定pod下指定容器的日志

js
kubectl logs -f pod的名称 -p 容器名称

6.查看pod的详细信息

js
kubectl describe pod

7.删除pod

js
kubectl delete pod pod名称 kubectl delete -f pod.yml

本文作者:松轩(^U^)

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!

Document