k8s-Pod

1、Pod 简介:

(1) 概念:

Pod 是 Kubernetes 中创建和管理的,最小的可部署的计算单元。Pod中存储了一组(一个或多个)容器,以及怎样运行这些容器的声明,这些容器共享存储、网络和环境(Pod 中的容器不是隔离的,而是被统一调度的)。

Pod 中的容器通常被自动安排到集群中的同一物理机或虚拟机上,并可以一起进行调度。

(2) 如何使用 Pod:

① 运行单个容器的 Pod:"一个 Pod 一个容器" 模型,可以将 Pod 看作单个容器的包装器,并由 Kubernetes 直接管理 Pod。

② 运行多个协同工作的容器 的 Pod: 位于同一 Pod的容器形成单个内聚的服务单元,例如一个容器将文件从共享卷提供给公众, 另一个容器则刷新或更新这些文件。 Pod 将这些容器和存储资源打包为一个可管理的实体。

2、Pod 基本操作:

(1) 常用命令:

① 查看默认命名空间的 pod

kubectl get pods / pod / po

● k8s集群创建后存在两个命名空间:default 和 kube-system

② 查看指定命名空间的 pod

kubectl get pods / pod / po -n 命名空间名称

③ 查看所有命名空间的 pod:

kubectl get pods / pod / po -A

④ 查看默认命名空间下 pod 的详细信息:

kubectl get pods -o wide

⑤ 查看所有命名空间下 pod 的详细信息:

kubectl get pods -o wide -A

⑥ 实时监控 pod 的状态:

kubectl get pod -w

(2) 创建 Pod:

① 以命令方式创建:

pod:kubectl run nginx(pod名) --image=nginx:1.19

container:docker run --name nginx nginx:1.19

② 声明式创建:

把创建 pod 的信息放到配置文件中,一次编写可在任意文件上运行。

● 配置文件需要填写的信息:

apiVersion:指定api版本;

kind:指定配置文件所声明的类型;

metadata:指定pod的元数据,可以指定 pod 名和命名空间;

spec:描述容器的详细信息。

● 编写示例:

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

● 运行配置文件:

kubectl create -f nginx-pod.yml

kubectl apply -f nginx-pod.yml

create 仅是 pod 不存在时创建,如果已存在则报错 ;apply 不存在创建,存在则更新配置(推荐使用 apply)。

③ 使用 IDEA 插件生成 pod 模版:

在 IDEA 中下载 k8s 插件:

自动生成 pod 模版:

(3) Pod 进阶命令:

① 删除 pod:

根据 pod 名:kubectl delete pod pod名称(kubectl delete pod nginx)

根据配置文件:kubectl delete -f pod.yml

② 进入 pod 中的容器:

kubectl exec -it pod名 -- bash (只进入 pod 中第一个容器)

kubectl exec -it pod名 -c 容器名 -- bash (进入 pod 中指定容器)

③ 查看 pod 日志:

kubectl logs -f pod名

kubect logs -f pod名 -c 容器名(查看 pod 中指定容器的日志)

④ 查看 pod 描述信息:

kubectl describe pod pod名

3、Pod 运行多个容器:

① 创建 pod:

在 IDEA 中远程连接master,编写好 yml 文件后再拖动文件上传到服务器对应的文件夹中

apiVersion: v1
kind: Pod
metadata:
  name: mypod
  labels:
    app: mypod
spec:
  containers:
    - name: nginx
      image: nginx:1.19
      imagePullPolicy: IfNotPresent
      ports:
        - containerPort: 80

    - name: redis
      image: redis:5.0.10
      imagePullPolicy: IfNotPresent
      ports:
        - containerPort: 6379

  restartPolicy: Always

② 运行 pod:

kubectl apply -f mypod.yml

4、pod 的 labels(标签):

(1) 概念:

标签是附加到 Kubernetes 对象(例如 Pod)上的键值对,相当于起一个别名,有了别名可以对 pod 进行过滤和筛选。每个对象都可以定义一组键(key)/值(value)标签,但是每个键(key)对于给定对象必须是唯一的。

(2) 语法:

(3) 标签基本操作:

① 查看标签:

kubectl get pods --show-labels

② 添加标签键值对:

kubectl label pod pod名称 标签键值对

③ 覆盖标签:

kubectl label --overwrite pod mypod env=test

④ 删除标签 (标签键-):

kubectl label pod mypod env-

5、pod 的生命周期:

(1) 概念:

Pod 遵循预定义的生命周期,起始于 Pending 阶段,如果 pod 中至少其中有一个容器正常启动,进入 Running 阶段,之后 Pod 中如果没有容器启动失败则进入 Succeeded 阶段,否则进入 Failed 阶段。Pod 在其生命周期中只会被调度一次(要么是 Succeeded,要么是 Failed)。

(2) pod 阶段:

Pod 的阶段(Phase)是 Pod 在其生命周期中所处位置的简单宏观概述。

当一个 Pod 被删除时,执行一些 kubectl 命令会展示这个 Pod 的状态为 Terminating(终止)。Terminating 并不是 Pod 阶段之一,而是 Pod 终止的期限,默认为 30 秒。

相关推荐

  1. <span style='color:red;'>k</span><span style='color:red;'>8</span><span style='color:red;'>s</span>-<span style='color:red;'>Pod</span>

    k8s-Pod

    2023-12-14 19:20:01      53 阅读
  2. <span style='color:red;'>K</span><span style='color:red;'>8</span><span style='color:red;'>S</span> <span style='color:red;'>POD</span>

    K8S POD

    2023-12-14 19:20:01      36 阅读
  3. K8S Pod

    2023-12-14 19:20:01       30 阅读
  4. <span style='color:red;'>k</span><span style='color:red;'>8</span><span style='color:red;'>s</span>-<span style='color:red;'>Pod</span>

    k8s-Pod

    2023-12-14 19:20:01      37 阅读
  5. <span style='color:red;'>k</span><span style='color:red;'>8</span><span style='color:red;'>s</span>-<span style='color:red;'>pod</span>

    k8s-pod

    2023-12-14 19:20:01      31 阅读
  6. k8s(二):Pod

    2023-12-14 19:20:01       54 阅读
  7. <span style='color:red;'>k</span><span style='color:red;'>8</span><span style='color:red;'>s</span>之<span style='color:red;'>pod</span>

    k8spod

    2023-12-14 19:20:01      43 阅读
  8. K8S测试pod

    2023-12-14 19:20:01       53 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-14 19:20:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-14 19:20:01       100 阅读
  3. 在Django里面运行非项目文件

    2023-12-14 19:20:01       82 阅读
  4. Python语言-面向对象

    2023-12-14 19:20:01       91 阅读

热门阅读

  1. hive客户机执行sql脚本无法显示表头

    2023-12-14 19:20:01       57 阅读
  2. 客户端注册账号-服务器-存入数据库..

    2023-12-14 19:20:01       43 阅读
  3. 【算法】【动规】单词拆分

    2023-12-14 19:20:01       60 阅读
  4. RESTful API

    2023-12-14 19:20:01       58 阅读
  5. 线程上下文设计模式

    2023-12-14 19:20:01       54 阅读
  6. Shiro框架权限控制

    2023-12-14 19:20:01       56 阅读
  7. 在ubuntu上rmp打包:准备工作

    2023-12-14 19:20:01       63 阅读
  8. spring事务(3)基于XML的声明式事务

    2023-12-14 19:20:01       60 阅读
  9. 使用opencv将Mat图像resize成检测输入的letterbox类型

    2023-12-14 19:20:01       48 阅读
  10. 2312llvm,编译X86的clang与llvm

    2023-12-14 19:20:01       64 阅读
  11. 云原生之深入解析如何使用Dockerfile定制镜像

    2023-12-14 19:20:01       40 阅读
  12. 【vue】element el-table怎么实现跨页勾选

    2023-12-14 19:20:01       61 阅读