k8s 学习九,pod 知识点 上

简介: k8s 学习九,pod 知识点 上

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

pod 是个啥?

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

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

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

之前文章我们稍微提到过 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 的容器,可以这样来写

1 个 pod 放 多个 容器

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

如何操作 pod

根据已有 yaml 创建 pod
kubectl create -f yaml文件
查看 pod 和 查看 pod 详情

例如这样的

  • 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

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

欢迎点赞,关注,收藏

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

好了,本次就到这里

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

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

更多的可以查看 零声每晚八点直播:https://ke.qq.com/course/417774

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
2月前
|
存储 Kubernetes Docker
【赵渝强老师】Kubernetes中Pod的基础容器
Pod 是 Kubernetes 中的基本单位,代表集群上运行的一个进程。它由一个或多个容器组成,包括业务容器、基础容器、初始化容器和临时容器。基础容器负责维护 Pod 的网络空间,对用户透明。文中附有图片和视频讲解,详细介绍了 Pod 的组成结构及其在网络配置中的作用。
【赵渝强老师】Kubernetes中Pod的基础容器
|
2月前
|
Prometheus Kubernetes 监控
深入探索Kubernetes中的Pod自动扩展(Horizontal Pod Autoscaler, HPA)
深入探索Kubernetes中的Pod自动扩展(Horizontal Pod Autoscaler, HPA)
|
2月前
|
运维 Kubernetes Shell
【赵渝强老师】K8s中Pod的临时容器
Pod 是 Kubernetes 中的基本调度单位,由一个或多个容器组成,包括业务容器、基础容器、初始化容器和临时容器。临时容器用于故障排查和性能诊断,不适用于构建应用程序。当 Pod 中的容器异常退出或容器镜像不包含调试工具时,临时容器非常有用。文中通过示例展示了如何使用 `kubectl debug` 命令创建临时容器进行调试。
|
2月前
|
Kubernetes 调度 容器
【赵渝强老师】K8s中Pod中的业务容器
Pod 是 Kubernetes 中的基本调度单元,由一个或多个容器组成。除了业务容器,Pod 还包括基础容器、初始化容器和临时容器。本文通过示例介绍如何创建包含业务容器的 Pod,并提供了一个视频讲解。示例中创建了一个名为 "busybox-container" 的业务容器,并使用 `kubectl create -f firstpod.yaml` 命令部署 Pod。
|
3天前
|
缓存 容灾 网络协议
ACK One多集群网关:实现高效容灾方案
ACK One多集群网关可以帮助您快速构建同城跨AZ多活容灾系统、混合云同城跨AZ多活容灾系统,以及异地容灾系统。
|
16天前
|
Prometheus Kubernetes 监控
OpenAI故障复盘 - 阿里云容器服务与可观测产品如何保障大规模K8s集群稳定性
聚焦近日OpenAI的大规模K8s集群故障,介绍阿里云容器服务与可观测团队在大规模K8s场景下我们的建设与沉淀。以及分享对类似故障问题的应对方案:包括在K8s和Prometheus的高可用架构设计方面、事前事后的稳定性保障体系方面。
|
14天前
|
Kubernetes Ubuntu 网络安全
ubuntu使用kubeadm搭建k8s集群
通过以上步骤,您可以在 Ubuntu 系统上使用 kubeadm 成功搭建一个 Kubernetes 集群。本文详细介绍了从环境准备、安装 Kubernetes 组件、初始化集群到管理和使用集群的完整过程,希望对您有所帮助。在实际应用中,您可以根据具体需求调整配置,进一步优化集群性能和安全性。
61 12
|
18天前
|
Kubernetes 网络协议 应用服务中间件
Kubernetes Ingress:灵活的集群外部网络访问的利器
《Kubernetes Ingress:集群外部访问的利器-打造灵活的集群网络》介绍了如何通过Ingress实现Kubernetes集群的外部访问。前提条件是已拥有Kubernetes集群并安装了kubectl工具。文章详细讲解了Ingress的基本组成(Ingress Controller和资源对象),选择合适的版本,以及具体的安装步骤,如下载配置文件、部署Nginx Ingress Controller等。此外,还提供了常见问题的解决方案,例如镜像下载失败的应对措施。最后,通过部署示例应用展示了Ingress的实际使用方法。
36 2
|
30天前
|
存储 Kubernetes 关系型数据库
阿里云ACK备份中心,K8s集群业务应用数据的一站式灾备方案
本文源自2024云栖大会苏雅诗的演讲,探讨了K8s集群业务为何需要灾备及其重要性。文中强调了集群与业务高可用配置对稳定性的重要性,并指出人为误操作等风险,建议实施周期性和特定情况下的灾备措施。针对容器化业务,提出了灾备的新特性与需求,包括工作负载为核心、云资源信息的备份,以及有状态应用的数据保护。介绍了ACK推出的备份中心解决方案,支持命名空间、标签、资源类型等维度的备份,并具备存储卷数据保护功能,能够满足GitOps流程企业的特定需求。此外,还详细描述了备份中心的使用流程、控制台展示、灾备难点及解决方案等内容,展示了备份中心如何有效应对K8s集群资源和存储卷数据的灾备挑战。
|
2月前
|
Kubernetes 监控 Cloud Native
Kubernetes集群的高可用性与伸缩性实践
Kubernetes集群的高可用性与伸缩性实践
83 1