当前位置: 首页 > news >正文

深入了解Pod

Pod是Kubernetes中最小的单元,它由一组、一个或多个容器组成,每个Pod还包含了一个Pause容器,Pause容器是Pod的父容器,主要负责僵尸进程的回收管理,通过Pause容器可以使同一个Pod里面的多个容器共享存储、网络、PID、IPC等。

1、Pod 是由一组紧耦合的容器组成的容器组,当然目前最流行的就是 Docker、containerd、podman容器,Pod 就可以作为 1 或者多个容器的载体。

2、Pod 中的所用容器会被一致调度、同节点部署,并且在一个“共享环境”中运行。Pod 想成一个车: 车里面好多座位,每个座位都坐不同的人,每个座位想成是一个容器,这里的“共享环境”包括以下几点:

  • 所有容器共享一个 IP 地址和端口空间,意味着容器之间可以通过 localhost 高效访问,不能有端口冲突。
  • 允许容器之间共享存储卷,通过文件系统交互信息

3、有些容器需要紧密联系,需要一起工作。Pod 提供了比容器更高层次的抽象, Pod 中的所有容器使用同一个网络的 namespace,即相同的 IP 地址和 Port 空间。它们可以直接用 localhost 通信。同样的,这些容器可以共享存储,当 K8s 挂载 Volume 到 Pod 上,本质上是将 volume 挂载到 Pod 中的每一个容器里。


一、Pod的yaml文件解释

apiVersion: v1  # 必选,API的版本号
kind: Pod       # 必选,类型Pod
metadata:       # 必选,元数据name: nginx   # 必选,符合RFC 1035规范的Pod名称namespace: default # 可选,Pod所在的命名空间,不指定默认为default,可以使用-n 指定namespace labels:       # 可选,标签选择器,一般用于过滤和区分Podapp: nginxrole: frontend # 可以写多个annotations:  # 可选,注释列表,可以写多个,可以增加扩容的记录app: nginx
spec:   # 必选,用于定义容器的详细信息initContainers: # 初始化容器,在容器启动之前执行的一些初始化操作- command:- sh- -c- echo "I am InitContainer for init some configuration"image: busyboximagePullPolicy: IfNotPresentname: init-containercontainers:   # 必选,容器列表- name: nginx # 必选,符合RFC 1035规范的容器名称image: nginx:latest    # 必选,容器所用的镜像的地址imagePullPolicy: Always     # 可选,镜像拉取策略command: # 可选,容器启动执行的命令- nginx - -g- "daemon off;"workingDir: /usr/share/nginx/html       # 可选,容器的工作目录volumeMounts:   # 可选,存储卷配置,可以配置多个- name: webroot # 存储卷名称mountPath: /usr/share/nginx/html # 挂载目录readOnly: true        # 只读ports:  # 可选,容器需要暴露的端口号列表- name: http    # 端口名称containerPort: 80     # 端口号protocol: TCP # 端口协议,默认TCPenv:    # 可选,环境变量配置列表- name: TZ      # 变量名value: Asia/Shanghai # 变量的值- name: LANGvalue: en_US.utf8resources:      # 可选,资源限制和资源请求限制limits:       # 最大限制设置cpu: 1000mmemory: 1024Mirequests:     # 启动所需的资源cpu: 100mmemory: 512Mi
#    startupProbe: # 可选,检测容器内进程是否完成启动。注意三种检查方式同时只能使用一种。
#      httpGet:      # httpGet检测方式,生产环境建议使用httpGet实现接口级健康检查,健康检查由应用程序提供。
#            path: /api/successStart # 检查路径
#            port: 80readinessProbe: # 可选,健康检查。注意三种检查方式同时只能使用一种。httpGet:      # httpGet检测方式,生产环境建议使用httpGet实现接口级健康检查,健康检查由应用程序提供。path: / # 检查路径port: 80        # 监控端口livenessProbe:  # 可选,健康检查#exec:        # 执行容器命令检测方式#command: #- cat#- /health#httpGet:       # httpGet检测方式#   path: /_health # 检查路径#   port: 8080#   httpHeaders: # 检查的请求头#   - name: end-user#     value: Jason tcpSocket:    # 端口检测方式port: 80initialDelaySeconds: 60       # 初始化时间timeoutSeconds: 2             # 超时时间periodSeconds: 5              # 检测间隔successThreshold: 1           # 检查成功为2次表示就绪failureThreshold: 2           # 检测失败1次表示未就绪lifecycle:postStart: # 容器创建完成后执行的指令, 可以是exec httpGet TCPSocketexec:command:- sh- -c- 'mkdir /data/ 'preStop:httpGet:      path: /port: 80#  exec:#    command:#    - sh#    - -c#    - sleep 9restartPolicy: Always   # 可选,默认为Always#nodeSelector: # 可选,指定Node节点#      region: subnet7imagePullSecrets:     # 可选,拉取镜像使用的secret,可以配置多个- name: default-dockercfg-86258hostNetwork: false    # 可选,是否为主机模式,如是,会占用主机端口volumes:      # 共享存储卷列表- name: webroot # 名称,与上述对应emptyDir: {}    # 挂载目录#hostPath:              # 挂载本机目录#  path: /etc/hosts———

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

二、Pod 创建

1. 查看怎么编写Pod

  • web查询基本的写法
    https://kubernetes.io/docs/concepts/workloads/pods/

http://www.lryc.cn/news/484916.html

相关文章:

  • 基于Spider异步爬虫框架+JS动态参数逆向+隧道代理+自定义中间件的猎聘招聘数据爬取
  • Spring 中的 BeanDefinitionParserDelegate 和 NamespaceHandler
  • BERT模型核心组件详解及其实现
  • 图论-代码随想录刷题记录[JAVA]
  • c#加载shellcode
  • HarmonyOS 开发环境搭建
  • 【网络云计算】2024第46周周考-磁盘管理的基础知识-RAID篇
  • 深入理解 SQL_MODE 之 ANSI_QUOTES
  • 容器技术在持续集成与持续交付中的应用
  • 【嵌入式软件-STM32】OLED显示屏+调试方法
  • kubernetes简单入门实战
  • Python连接Mysql、Postgre、ClickHouse、Redis常用库及封装方法
  • 如何修改npm包
  • Django 2024全栈开发指南(三):数据库模型与ORM操作(上篇)
  • 低代码可视化-uniapp开关选择组件-低码生成器
  • 【arxiv‘24】Vision-Language Navigation with Continual Learning
  • 如何在 Ubuntu 上安装 Jupyter Notebook
  • 免费申请 Let‘s Encrypt SSL 证书
  • 【JAVA】Java基础—面向对象编程:继承—重写父类方法
  • 【C++初阶】C++入门
  • 自然推理系统:的拒取式的解析
  • OceanBase 分区表详解
  • Java中 LinkedList<>,ArrayDeque<>的区别 || Queue和Deque的区别
  • freemarker 读取template.xml ,通过response 输出文件,解决中文乱码问题
  • arkUI:水果选择与管理:基于 ArkUI 的长按编辑功能实现
  • docker使用,docker图形化界面+docker详细命令
  • idea项目运行时 java: 错误: 不支持发行版本 21
  • hive alter table add columns 是否使用 cascade 的方案
  • 手机怎么玩steam游戏?随时随地远程串流玩steam游戏教程
  • 【使用antv g6实现拓扑图】