K8S之Pod的介绍和使用

Pod的理论和实操

  • pod理论说明
    • Pod介绍
    • Pod运行与管理
      • Pod管理多个容器
      • Pod网络
      • Pod存储
    • Pod工作方式
      • 自主式Pod
      • 控制器管理的Pod(常用)
    • 创建pod的流程
  • pod实操
    • 通过资源清单文件创建自主式pod
    • 通过kubectl run创建Pod(不常用)

pod理论说明

Pod介绍

Pod是Kubernetes中的最小调度单元,k8s通过定义一个Pod的资源,然后在Pod里面运行容器,容器需要指定一个镜像,这样就可以用来运行具体的服务。
一个Pod封装一个容器(也可以封装多个容器),Pod里的容器共享存储、网络等。
如果把pod看作虚拟机,每个容器相当于运行在虚拟机里的进程。
在这里插入图片描述

Pod运行与管理

Pod是需要调度到k8s集群的工作节点来运行的,具体调度到哪个节点,是根据scheduler调度器实现的。
在这里插入图片描述

Pod管理多个容器

Pod中可以同时运行多个容器。同一个Pod中的容器会自动的分配到同一个 node 上。同一个Pod中的容器共享资源、网络环境,它们总是被同时调度,在一个Pod中同时运行多个容器是一种比较高级的用法,只有当容器之间需要紧密配合协作的时候才考虑用这种模式。

一些Pod有init容器和应用容器。 在应用程序容器启动之前,运行初始化容器。
在这里插入图片描述
目前最流行的容器有Docker、Containerd、Podman,Pod可以作为1或者多个容器的载体。

Pod网络

Pod是有IP地址的,由网络插件(calico、flannel、weave)划分的IP,每个pod都被分配唯一的IP地址
在k8s中,启动Pod时,会先启动⼀个pause 的容器,然后将后续的所有容器都 link 到这个pause 的容器,以实现网络共享。
在这里插入图片描述

Pod存储

创建Pod的时候可以指定挂载的存储卷。 Pod中的所有容器都可以访问共享卷,允许这些容器共享数据。 Pod只要挂载持久化数据卷,Pod重启之后数据还是会存在的。
在这里插入图片描述

Pod工作方式

在K8s中,所有的资源都可以使用yaml文件来创建,因此创建Pod也可以使用yaml配置文件(常用方式)。也有使用kubectl run在命令行创建Pod (不常用)

自主式Pod

所谓的自主式Pod,就是直接定义一个Pod资源
如果Pod被删除,就彻底被删除了,不会再创建一个新的Pod,这在生产环境还是具有非常大风险的。
例如:
创建一个pod资源文件

vim pod-tomcat.yaml
apiVersion: v1
kind: Pod # 直接定义为Pod资源
metadata:
  name: tomcat-test
  namespace: default
  labels:
    app: tomcat
    use: test
spec:
  containers:
  - name:  tomcat-java
    ports:
    - containerPort: 8080
    image: tomcat-8.5-jre8:v1
    imagePullPolicy: IfNotPresent

创建资源

kubectl apply -f pod-tomcat.yaml

查看pod是否创建成功
(ps. -o wide 表示看完整信息,-l app=tomcat 表示查询有app:tomcat 标签的pod)

kubectl get pods -o wide -l app=tomcat

在这里插入图片描述
删除pod

kubectl delete pods tomcat-test

在这里插入图片描述
结果是空,说明pod已经被删除了

控制器管理的Pod(常用)

常见的管理Pod的控制器:Replicaset、Deployment、Job、CronJob、Daemonset、Statefulset。
控制器管理的Pod可以确保Pod始终维持在指定的副本数运行。

例如:通过Deployment管理Pod
创建一个Deployment资源文件

vim nginx-deploy.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-test
  labels:
    app: nginx-deploy
spec:
  selector:
    matchLabels:
      app: nginx
  replicas: 2
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: my-nginx
        image: nginx
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 80

创建资源

kubectl apply -f nginx-deploy.yaml

查看Deployment

kubectl get deploy -l app=nginx-deploy

READY为2/2 表示有2个pod已创建并运行
在这里插入图片描述
查看pod

kubectl get pods -o wide -l app=nginx

在这里插入图片描述
删除上面图中 nginx-test-5b76549fbd-g5779 这个pod

kubectl delete pods nginx-test-5b76549fbd-g5779 

再看pod的情况

kubectl get pods -o wide -l app=nginx

发现重新创建一个新的pod是:nginx-test-5b76549fbd-xzv6p
在这里插入图片描述
通过上面可以发现通过deployment管理的pod,可以确保pod始终维持在指定副本数量

创建pod的流程

在这里插入图片描述
第一步:
通过 kubectl 命令向 apiServer 提交创建pod的请求,apiServer 接收到pod创建请求后,会将pod的属性信息(metadata)写入etcd(数据库)。

第二步:
apiServer 触发watch机制准备创建pod,信息转发给调度器scheduler,调度器使用调度算法选择node,调度器将node信息给apiServer ,apiServer 将绑定的node信息写入etcd

第三步:
apiServer 又通过watch机制,调用kubelet,指定pod信息,kubelet调用容器运行时创建并启动pod内的容器。

第四步:
pod创建完成之后反馈给kubelet, kubelet又将pod的状态信息给apiServer ,apiServer 再将pod的状态信息写入etcd。

pod实操

通过资源清单文件创建自主式pod

开始编写yaml时,可查看帮助命令:

kubectl explain pod

执行帮助命令后,会返回yaml里需要编写的字段名,格式和含义
在这里插入图片描述

# apiVersion、kind填帮助命令里返回的value

apiVersion: v1 #api版本
kind: Pod  #创建的资源
metadata:
  name: tomcat-test  #Pod的名字
  namespace: default  #Pod所在的名称空间
  labels:
    app:  tomcat  #Pod具有的标签,key为app,value为tomcat  
spec:
  containers:
  - name:  tomcat-java  #Pod里容器的名字
image: xianchao/tomcat-8.5-jre8:v1  #容器使用的镜像
  imagePullPolicy: IfNotPresent   #镜像拉取策略
    ports:
    - containerPort: 8080  #容器暴露的端口

其中,imagePullPolicy是镜像拉取策略,可以根据这个字段设置镜像拉取策略,支持如下三种:

  • Always:不管本地是否存在镜像,都要重新拉取镜像
  • Never: 从不拉取镜像
  • IfNotPresent:如果本地存在,使用本地的镜像,本地不存在,从官方拉取镜像

查看命名空间

kubectl get ns

在这里插入图片描述

更新资源清单文件

kubectl apply -f pod-tomcat.yaml

查看pod是否创建成功
(ps. -l app=tomcat 表示查询标签)

kubectl get pods -l app=tomcat

在这里插入图片描述

查看指定命名空间下的pods

kubectl get pods -n default

查看pod的IP和调度节点

kubectl get pods -owide

在这里插入图片描述
查看pod日志

kubectl logs tomcat-test

在这里插入图片描述
进入到刚才创建的pod,刚才创建的pod名字是tomcat-test

kubectl exec -it tomcat-test  -- /bin/bash

在这里插入图片描述
假如pod里有多个容器,进入到pod里的指定容器,加 -c 容器的名字

kubectl exec -it tomcat-test -c tomcat-java -- /bin/bash

查看pod详细信息

kubectl describe pods tomcat-test

在这里插入图片描述
查看pod具有哪些标签

kubectl get pods --show-labels

在这里插入图片描述
删除pod

kubectl delete pods tomcat-test

或者

kubectl delete -f pod-tomcat.yaml

通过kubectl run创建Pod(不常用)

kubectl run tomcat --image=tomcat-8.5-jre8:v1 --image-pull-policy='IfNotPresent'  --port=8080

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/368927.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Unity根据落点和抛物线运行时间,求初始力

抛物线运行时长为2秒: 抛物线运行时长为4秒: 原理就是: 在竖直方向只受重力,做匀加速直线运动,水平不受力,做匀速直线运动。 代码: public void Update(){if (Input.GetKeyDown(KeyCode.Space)…

2024.1.30报错记录

今天想调通一套github上的U-net代码,把报错记录一下 第一章 ModuleNotFoundError: No module named skimage 没有这个模块 pip install scikit-image 第二章 TypeError: (‘Keyword argument not understood:‘, ‘input‘) TypeError: (‘Keyword argument …

数据图表方案,企业视频生产数据可视化

在信息爆炸的时代,如何将复杂的数据转化为直观、生动的视觉信息,是企业在数字化转型中面临的挑战。美摄科技凭借其独特的数据图表方案,为企业在数据可视化领域打开了一扇全新的大门。 一、数据图表方案的优势 1、高效便捷:利用数…

文件上传的另类应用

1.Imagemagick CVE-2016-3714 CVE-2022-44268 CVE-2020-29599可在vulhub靶场进行复现1.1.Imagemagick简介 ImageMagic是一款图片处理工具,当传入一个恶意图片时,就有可能存在命令注入漏洞。 ImageMagick默认支持一种图片格式mvg,而mvg与svg…

yii2 mongodb 操作

->where([<>,review,""]) 不等于空 $where [newstypeid>[$in>$categoryIdArr]]; 类似mysql in操作 &#xff08;$categoryIdArr是数组&#xff09; ->where([label>[$regex >赞美诗]]) 模糊搜索操作 $where [status>1,name>[$rege…

sentinel的Context创建流程分析

sentinel入门 功能 限流&#xff1a;通过限制请求速率、并发数或者用户数量来控制系统的流量&#xff0c;防止系统因为流量过大而崩溃或无响应的情况发生。 熔断&#xff1a;在系统出现故障或异常时将故障节点从系统中断开&#xff0c;从而保证系统的可用性。 降级&#xf…

Redis 的持久化机制是什么?各自的优缺点?

Redis 提供两种持久化机制 RDB&#xff08;默认&#xff09; 和 AOF 机制: RDB&#xff1a;是Redis DataBase缩写快照 RDB是Redis默认的持久化方式。按照一定的时间将内存的数据以快照的形式保存到硬盘中&#xff0c;对应产生的数据文件为dump.rdb。通过配置文件中的save参数来…

记录在树莓派中部署PI-Assistant开源项目(GPT语音对话)的BUG

核心 在部署PI-Assistant&#xff08;https://github.com/Lucky-183/PI-Assistant&#xff09;项目中&#xff0c;首先要进行环境安装&#xff0c;官网文档中提供的安装命令如下&#xff1a; pip install requests arcade RPi.GPIO pydub numpy wave sounddevice pymysql cn2…

20.HarmonyOS App(JAVA)表格布局Layout使用方法

ability_main.xml&#xff0c;实现计算器键盘按钮 <?xml version"1.0" encoding"utf-8"?> <TableLayoutxmlns:ohos"http://schemas.huawei.com/res/ohos"ohos:height"match_parent"ohos:width"match_parent"oho…

深度学习手写字符识别:训练模型

说明 本篇博客主要是跟着B站中国计量大学杨老师的视频实战深度学习手写字符识别。 第一个深度学习实例手写字符识别 深度学习环境配置 可以参考下篇博客&#xff0c;网上也有很多教程&#xff0c;很容易搭建好深度学习的环境。 Windows11搭建GPU版本PyTorch环境详细过程 数…

【数据分析】Excel中的常用函数公式总结

目录 0 引用方式0.1 相对引用0.2 绝对引用0.3 混合引用0.4 3D引用0.5 命名引用 1 基础函数1.1 加法、减法、乘法和除法1.2 平均数1.3 求和1.4 最大值和最小值 2 文本函数2.1 合并单元格内容2.2 查找2.3 替换 3 逻辑函数3.1 IF函数3.2 AND和OR函数3.3 IFERROR函数 4 统计函数4.1…

java设计模式:策略模式

在平常的开发工作中&#xff0c;经常会用到不同的设计模式&#xff0c;合理的使用设计模式&#xff0c;可以提高开发效率&#xff0c;提高代码质量&#xff0c;提高代码的可拓展性和维护性。今天来聊聊策略模式。 策略模式是一种行为型设计模式&#xff0c;运行时可以根据需求动…

分布式session 笔记

概念 解决方案‘ 复制 session同步&#xff0c;让集群下的服务器进行session同步&#xff0c;一种传统的服务器集群session管理机制&#xff0c;常用于服务器不多的集群环境。<br /> 集群下&#xff0c;进行session同步的服务器的session数据是相同的&#xff0c;…

vulhub中spring的CVE-2022-22947漏洞复现

Spring Cloud Gateway是Spring中的一个API网关。其3.1.0及3.0.6版本&#xff08;包含&#xff09;以前存在一处SpEL表达式注入漏洞&#xff0c;当攻击者可以访问Actuator API的情况下&#xff0c;将可以利用该漏洞执行任意命令。 参考链接&#xff1a; https://tanzu.vmware.c…

图论练习1

内容&#xff1a;&#xff0c;拆点&#xff0c;分层&#xff0c;传递&#xff0c;带限制的最小生成树 [HNOI2015]菜肴制作 题目链接 题目大意 有个限制&#xff0c;号菜肴在号前完成在满足限制的条件下&#xff0c;按照出菜( 是为了满足的限制 ) 解题思路 由限制&#xf…

寒假 day1

1、请简述栈区和堆区的区别? 2、有一个整形数组:int arr[](数组的值由外部输入决定)&#xff0c;一个整型变量: x(也 由外部输入决定)。要求: 1)删除数组中与x的值相等的元素 2)不得创建新的数组 3)最多只允许使用单层循环 4)无需考虑超出新数组长度后面的元素&#xff0c;所以…

2024美赛数学建模D题思路分析 - 大湖区水资源问题

1 赛题 问题D&#xff1a;大湖区水资源问题 背景 美国和加拿大的五大湖是世界上最大的淡水湖群。这五个湖泊和连接的水道构成了一个巨大的流域&#xff0c;其中包含了这两个国家的许多大城市地区&#xff0c;气候和局部天气条件不同。 这些湖泊的水被用于许多用途&#xff0…

【数据分享】1929-2023年全球站点的逐日降雪深度数据(Shp\Excel\免费获取)

气象数据是在各项研究中都经常使用的数据&#xff0c;气象指标包括气温、风速、降水、能见度等指标&#xff0c;说到气象数据&#xff0c;最详细的气象数据是具体到气象监测站点的数据&#xff01; 之前我们分享过1929-2023年全球气象站点的逐日平均气温数据、逐日最高气温数据…

二维图像生成 3D 场景:nerfstudio 帮你简化流程 | 开源日报 No.164

nerfstudio-project/nerfstudio Stars: 7.7k License: Apache-2.0 nerfstudio 是一个友好的 NeRFs 协作工作室。 该项目旨在简化创建、训练和测试 NeRFs 的端到端流程&#xff0c;支持更模块化的 NeRFs 实现&#xff0c;并提供了简单的 API。 其主要功能和优势包括&#xff1…

DS:经典算法OJ题(2)

创作不易&#xff0c;友友们给个三连吧&#xff01;&#xff01; 一、旋转数组&#xff08;力扣&#xff09; 经典算法OJ题&#xff1a;旋转数组 思路1&#xff1a;每次挪动1位&#xff0c;右旋k次 时间复杂度&#xff1a;o(N^2) 右旋最好情况&#xff1a;k是n的倍数…