美文网首页
pod 知识点 上

pod 知识点 上

作者: 阿兵云原生 | 来源:发表于2023-06-24 11:43 被阅读0次

在 K8S 中, pod 是一个非常关键的存在,我们一起来看看 pod 具体是个什么?

[图片上传失败...(image-da7e54-1687664619081)]

pod 是个啥?

pod 是个什么呢?pod 是 K8S中的一个核心概念

每一个 pod 都会有一个特殊的根容器,叫做 pause 容器,pause 容器对应的镜像也是属于 K8S 的一部分的

pod 里面可不仅仅只有 pause 容器,还可以有其他多个容器

[图片上传失败...(image-15104e-1687664619081)]

之前文章我们稍微提到过 pod,每一个 pod ,都是一个具体应用的实例,pod 有自己独自的 IP,主机名,进程等等

  • pod 与 容器是 1 对多的关系

一个 pod 里面可以有多个容器,多个容器彼此共享网络和存储资源

我们都是通过 pod 中的 pause 容器 来管理其他容器的, 因为 pause 容器会存储所有的容器状态

  • pod 和节点的关系

pod 存在于节点中,不同节点的 pod 相互通信,是通过二层网络通信的

  • pod 自身还有啥不同的?

pod 自身还分成普通的 pod,和静态的 pod

我们如何定义一个 pod

在 K8S 中定义一个 pod 也是比较简单的,就是写一个 yaml 文件,只不过我们刚开始需要多加尝试和练习

yaml 文件大体是这样的,纯手写 , 下面的配置,我把不太容易理解的或者说是容易误解的名词解释一下,其他的自行看英文即可理解

apiVersion: v1  // 版本号
kind: Pod       // 类型
metadata: 
  name: pod name
  namespace: pod namespace
  labels:
    - name: pod label
    annotations:
    - name: pod annotation  // 自定义注释列表
spec:   // pod 中容器的详细定义
  container:
  - name: container name
    image: container image
    imagesPullPolicy: [Always|Never|IfNotPresent] // 镜像拉取策略
    command: command list
    agrs: app start params
    workingDir: work dir
    volumeMounts:
    - name: volume name
      mountPath: volume absolutely path
      readonly: boolean
    ports:
    - name: ports list name
      containerPort: 8888
      hostPort: 9999
      protocol: TCP  // 可以是 TCP 和 UDP
    env:
    - name: env name
      value: string
    resources:
      limits:
        cpu: string
        memory: string
      requeste:
        cpu: string
        memory: string
    livenessProbe:      // 健康检查设置
      exec:
        command: [string]
      httpGet:          // 通过 httpGet  方式检查
        path: string
        port: string
        host: string
        scheme: string
        httpHeaders: 
        - name: httpHeaders name
          value: string 
      tcpSocket:        // 通过 tcpSocket 方式检查
        port: 80
      initialDelaySeconds: 0    // 首次检查时间
      timeoutSeconds: 0         // 超时检查时间
      periodSeconds: 0          // 检查间隔时间
      successTreshold: 0
      failuerTreshold: 0
      securityContext:          // 安全配置
        privileged: false
    restartPolicy: [Always|Never|OnFailure]
    nodeSelector: object
    imagePullSecrets:
    - name: string
    hostNetwork: false          // 是否使用主机网络模式?
  volumes:                      // 存储卷
  - name: volumes list name
    emptyDir: {}
    hostPath:               // pod 所在主机的目录,用于挂载
      path: string
    secret:                 // secret 类型 存储卷
      secretName: secret name
      item:
      - key: specific key
        path: key path
    configMap:              // configmap 类型存储卷
      name: string
      items:
      - key: specific key
        path: string

看了上面的这个 yaml ,起初可能会觉得有点多,一下子记不住, xdm ,没有让你记住,咱们只需要知道 pod 的 yaml 是长 这个样子,里面都有哪些用法即可

pod 基本用法使用示例

在 K8S 中对 pod 中的容器运行也是有要求的

  • 容器的主程序是在前台运行,而不是后台,因此,应用需要改造成前台运行的方式
  • 若 pod 中包含的容器是一个后台执行程序,那么执行完命令之后,pod 就会被销毁
  • 若 pod 是一个 rc ,rc 就是 replicationController ,那么 pod 就会处于一个 创建,销毁的循环中 需注意

我们分享创建的pod,可以是里面放 1 个容器,也可以是放多个容器的,根据我们需要去处理即可

1 个 pod 放 1 个容器

例如我们 1 个 pod 里面放 1 个 mongdb 的容器,可以这样来写

[图片上传失败...(image-fd0ece-1687664619081)]

1 个 pod 放 多个 容器

例如我们 1 个 pod 里面放 1 个 mongodb 和 1 个 redis 容器,可以这样来写

[图片上传失败...(image-d4c8f-1687664619081)]

如何操作 pod

根据已有 yaml 创建 pod

kubectl create -f yaml文件

查看 pod 和 查看 pod 详情

例如这样的

[图片上传失败...(image-4d4743-1687664619081)

  • kubectl get pod -A

查看所有命名空间下面的 pod

  • kubectl get pod pod名字
  • Kubectl get pod pod名字 -o wide

查看 pod 的更多信息

  • kubectl describe pod pod名字

查看 pod 的详情

删除 pod

  • kubectl delete pod pod名字
  • kubectl delete pod pod名字 -n 命名空间
  • kubectl delete pod --all

删除所有的 pod

今天就到这里,学习所得,若有偏差,还请斧正

欢迎点赞,关注,收藏

朋友们,你的支持和鼓励,是我坚持分享,提高质量的动力

[图片上传失败...(image-3b8eac-1687664619081)]

好了,本次就到这里

技术是开放的,我们的心态,更应是开放的。拥抱变化,向阳而生,努力向前行。

我是阿兵云原生,欢迎点赞关注收藏,下次见~

相关文章

  • iOS 私有库的创建(本地)

    需要的知识点 it 相关指令 cocoaPod相关知识点(电脑正确安装了pod) ssh Git配置多个SSH-K...

  • Pod小知识点

    验证 1、验证.podspec会先测试本地.podspec文件是否存在语法错误。测试成功再根据.podspec文件...

  • Kubernetes常用命令

    1.部署 Pod相关 2.删除Pod 3.查看Pod 4.查询Pod 查看日志 在Pod上执行命令 服务相关 查看...

  • Kubernetes 实战 —— 04. 副本机制和其他控制器:

    保持 pod 健康 P84 只要 pod 调度到某个节点,该节点上的 Kubelet 就会运行 pod 的容器,从...

  • pod 本地仓库创建以及上架步骤

    一、pod 相关指令 新上架的pod 代码 不能search到解决方案 1.更新仓库 : pod setup2.删...

  • 读书笔记(二):Pod

    eg: 静态pod 静态pod是由kubelet进行管理仅存在特定node上的pod。他不能通过API serve...

  • k8s-实战入门-Pod详解(十五)

    污点和容忍 污点(Taints) 前面的调度方式都是站在Pod的角度上,通过在Pod上添加属性,来确定Pod是...

  • 给项目加pod

    1、pod init 2、pod install 只有在更新所有的第三方框架才会pod update(更新电脑上的...

  • 2020-07-31 深入理解Pod对象

    1. Pod基本概念 pod是kubernetes最基本的执行单元(最小、最简单的单元),pod表示在集群上运行的...

  • k8s重要概念

    多个 Pod 之间如何通信? 一个应用可以产生多个副本运行在多个 Pod 上,以实现高可用。这些 Pod 通过Se...

网友评论

      本文标题:pod 知识点 上

      本文链接:https://www.haomeiwen.com/subject/aklbydtx.html