• Pod 管理与使用


    目录

    一、Pod 基本概念

    1、Pod

    2、Pod 的两种模式

    1. 只包含一个应用容器的 pod

    2. 包含多个应用的 pod

    3、Pod 内部结构

    4、Pod 生命周期

    二、使用 Pod

    1、创建一个pod

    2、Pod管理常用命令

    3、Pod 内容器查看

    4、运行第二个 pod


    一、Pod 基本概念

    1、Pod

    1. Pod 是 Kubernetes 管理的最小基础单元

    2. 一个Pod中封装了:

            ·  一个或多个紧耦合的应用容器

            ·  存储资源

            ·  独立的IP

            ·  容器运行的选项

    2、Pod 的两种模式

    1. 只包含一个应用容器的 pod

    ·  “ 一个pod一个容器 ” 的模式是在 Kubernetes 中主流的使用场景

    ·  在这种场景中,pod 可以被看做是一个 “包着的容器”。

       Kubernetes 不能直接管理容器,而是需要通过管理Pod来管理容器

    2. 包含多个应用的 pod

    ·  仅当两种容器紧耦合,且需要共享相同的资源时使用这一种模式

    ·  这些在一个pod 内的容器形成一个统一的服务单元。

       例如一个容器从共享卷提供文件,而另一个容器刷新或更新资源。

       Pod将这些容器和存储资源作为单个可管理的实体包装在一起

    3、Pod 内部结构

    一个pod 中会分配一个 pause 容器,这也被称为根容器

            ·  Pause(根容器)容器的状态代表整个 pod 的状态

            ·  Pod 中多个容器共享 pause 容器的 ip 和存储,容器间可以通过 localhost 互访

    4、Pod 生命周期

    Pod一旦被创建,会被 master 调度到某个具体的 node 上进行绑定;

    Pod会呈现出不同的状态

    Pod 的生命周期 | Kubernetes

    取值描述
    Pending  (悬决)Pod 已被 Kubernetes 系统接受,但有一个或者多个容器尚未创建亦未运行。此阶段包括等待 Pod 被调度的时间和通过网络下载镜像的时间
    Running  (运行中)Pod 已经绑定到了某个节点,Pod 中所有的容器都已被创建。至少有一个容器仍在运行,或者正处于启动或重启状态
    Succeeded (成功)Pod 中的所有容器都已成功终止,并且不会再重启

    Failed  (失败)

    Pod 中的所有容器都已终止,并且至少有一个容器是因为失败终止。也就是说,容器以非 0 状态退出或者被系统终止
    Unknown  (未知)因为某些原因无法取得 Pod 的状态。这种情况通常是因为与 Pod 所在主机通信失败

    二、使用 Pod

    1、创建一个pod

    1. 创建一个yaml文件

    1. $ vim mypod.yaml
    2. apiVersion: v1
    3. kind: Pod
    4. metadata:
    5. name: mypod
    6. spec:
    7. containers:
    8. - name: mypod
    9. image: nginx:1.14.2
    10. ports:
    11. - containerPort: 80

    2. 使用apply 命令由该文件创建pod

    $ kubectl apply -f mypod.yaml

    3.使用get 命令查看

    1. $ kubectl get pods
    2. NAME READY STATUS RESTARTS AGE
    3. mypod 1/1 Running 0 7s

    Pod | Kubernetes

    2、Pod管理常用命令

    1. 查看pod命令时,通过添加 “ -o=wide ” 参数获取更多信息

    1. $ kubectl get pods -o wide
    2. NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
    3. mypod 1/1 Running 0 6m53s 172.16.194.71 k8s-worker1

    2. 使用 describe 命令,可以看到 pod 的完整信息

    $ kubectl describe pods mypod

    3. 删除Pod,使用 delete 命令

    $ kubectl delete pods mypod

    4. 进入 mypod 的命令行

            $ kubectl exec -it mypod -- /bin/sh

            ·  exec 命令用于在容器中执行命令

            ·  -it 参数使得用户可以直接进入容器进行操作

    5. 在pod 中可能存在多个容器,加入 “ --container  容器名 ” 参数指定进入容器

            $ kubectl exec -it mypod --container mypod -- /bin/sh

    6. 如果希望退出当前所在容器,可以输入 exit 回车退出(或者Ctrl + d)

    3、Pod 内容器查看

    1. 在之前使用命令查看 pod 状态时,可以检索到 Pod 所在的位置

    1. $ kubectl get pods -o wide
    2. NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
    3. mypod 1/1 Running 0 6m53s 172.16.194.71 k8s-worker1

    2. 意味着这个 pod 被绑定到 k8s-worker1 这台主机上运行,我们可以登录这台主机,

        通过 docker 命令查看创建了哪些容器

            kiosk@k8s-worker1:~$ sudo docker ps

            ·  Nginx 这个容器是我们在创建 pod 时通过yaml 文件定义的容器

            ·  Pause 是 kubernetes 默认会为 pod 拉起的容器

    4、运行第二个 pod

    1. 使用yaml 文件创建第二个pod

    1. $ vim mypod.yaml
    2. apiVersion: v1
    3. kind: Pod
    4. metadata:
    5. name: hello
    6. spec:
    7. restartPolicy: Never
    8. containers:
    9. - name: hello
    10. image: hello-world
    11. $ kubectl apply -f hello.yml

    2. 查看 pod 状态会发现 “hello”“mypod”这两个处于不同的状态

    1. $ kubectl get pods
    2. NAME READY STATUS RESTARTS AGE
    3. hello 0/1 Completed 0 26s
    4. mypod 1/1 Running 0 36m

    第二个服务Pod因为没有持续运行的服务,所以状态为Completed

  • 相关阅读:
    《QT从基础到进阶·三十五》QT插件实现侧边工具栏tabBar
    QT两个类之间使用信号槽
    QEMU 结构体对齐产生的问题
    玩转数据库索引
    2022年湖北省住建厅特种作业操作证怎么报考?甘建二
    西瓜书-2习题
    vue3+electron开发桌面应用,静态资源处理方式及路径问题总结
    力扣热题100_二叉树_98_验证二叉搜索树
    Delete `␍` 最简单最有效的解决方法和解释(VScode)
    Vue3 生命周期
  • 原文地址:https://blog.csdn.net/qq_41619571/article/details/127578805