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-testnamespace: defaultlabels:app: tomcatuse: test
spec:containers:- name:  tomcat-javaports:- containerPort: 8080image: tomcat-8.5-jre8:v1imagePullPolicy: 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-testlabels:app: nginx-deploy
spec:selector:matchLabels:app: nginxreplicas: 2template:metadata:labels:app: nginxspec:containers:- name: my-nginximage: nginximagePullPolicy: IfNotPresentports:- 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填帮助命令里返回的valueapiVersion: 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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

指针的深入了解6

1.回调函数 回调函数就是一个通过函数指针调用的函数。 如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数 时,被调用的函数就是回调函数。回调函数不是由该函数的实现方直接调用&#xff0…

【LVGL源码移植环境搭建】

LVGL源码移植&环境搭建 ■ LVGL源码移植■ 下载LVGL源码■ 修改LVGL文件夹■■■■ 视频链接 Ubuntu模拟器环境建置 ■ LVGL源码移植 ■ 下载LVGL源码 LVGL源码 我们以选择v8.2.0为例,选择8.2.0下载 ■ 修改LVGL文件夹 1.我们只需要关注这5个文件即可&…

《Docker技术革命:从虚拟机到容器化,全面解析Docker的原理与应用-上篇》

文章目录 Docker为什么会出现总结 Docker的思想Docker历史总结 Docker能干嘛虚拟机技术虚拟机技术的缺点 容器化技术Docker和虚拟机技术的区别 Docker概念Docker的基本组成镜像(image)容器(container)仓科(repository)…

GitHub工作流的使用笔记

文章目录 前言1. 怎么用2. 怎么写前端案例1:自动打包到新分支前端案例2:自动打包推送到gitee的build分支案例3:暂时略 前言 有些东西真的就是要不断的试错不断地试错才能摸索到一点点,就是摸索到凌晨两三点第二天要8点起床感觉要…

聊一聊GPT、文心、通义、混元

我使用同一个Prompt提示词“请以记叙文的文体来写”,分别发送给GPT-3.5(调用API)、文心、通义、混元,下面是它们各自生成的文本内容,大家一看便知了。 GPT-3.5: 在我个人使用GPT模型的过程中,我…

Facebook的创新征程:社交媒体的演进之路

在当今数字化时代,社交媒体已经成为人们生活中不可或缺的一部分,而Facebook作为社交媒体领域的巨头,一直在不断创新和演进。本文将深入探讨Facebook的创新征程,追溯其社交媒体的发展历程,探讨其对用户、社会和数字时代…

echart 实现自定义地图

先上效果图 需求:自定义区域平面图,支持区域高亮 // 2D详情const initChartsMapItemB async (flow: any, mapbg: any) > {// mapbg 为svg的地址 import mapbg from //assets/json/map/F42d.svgconst svgData (await request.get(mapbg)) as anye…

WPF应用程序(.Net Framework 4.8) 国际化

1、新建两个资源字典文件zh-CN.xaml和en-US.xaml&#xff0c;分别存储中文模板和英文模板 (1) zh-CN.xaml <ResourceDictionary xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft.com/winfx/2006/xaml&q…

基于链表实现贪吃蛇游戏

本文中&#xff0c;我们将使用链表和一些Win32 API的知识来实现贪吃蛇小游戏 一、功能 &#xff08;1&#xff09;游戏载入界面 &#xff08;2&#xff09;地图的绘制 &#xff08;3&#xff09;蛇身的移动和变长 &#xff08;4&#xff09;食物的生成 &#xff08;5&…

CentOS 7 部署 ZeroTier Moon 节点

ZeroTier是一套使用UDP协议构建的SD-WAN网络软件&#xff0c;其主要有三部分组成&#xff1a;行星服务器Planet、月亮服务器Moon、客户端节点LEFA&#xff0c;行星服务器是ZeroTier的根节点&#xff0c;可以采用ZeroTier官方的服务器&#xff0c;也可以使用开源代码自行搭建 月…

JAVA处理类似饼状图占比和100%问题,采用最大余额法

前言&#xff1a; 在做数据统计报表的时候&#xff0c;有两种方式解决占比总和达不到100%或者超过100%问题。 第一种方式是前端echart图自带的算分框架。 第二种方式是java后端取处理这个问题。 现存问题&#xff1a; 前端通过饼状图的方式去展示各个分类的占比累加和为100%问题…

公司宣传电子画册的制作方法

​制作公司宣传电子画册是一种非常有效的方式&#xff0c;可以展示公司的形象和产品&#xff0c;同时也可以吸引更多的潜在客户。不仅低碳环保&#xff0c;还省了不少人力和财力&#xff0c;只要一个二维码、一个链接就能随时随地访问公司的宣传画册。以下是一些制作电子画册的…

TSINGSEE青犀视频智慧电梯管理平台,执行精准管理、提升乘梯安全

一、方案背景 随着城市化进程的不断加快&#xff0c;我国已经成为全球最大的电梯生产和消费市场&#xff0c;电梯也成为人们日常生活中不可或缺的一部分。随着电梯数量的激增&#xff0c;电梯老龄化&#xff0c;维保数据不透明&#xff0c;物业管理成本高&#xff0c;政府监管…

openGauss学习笔记-211 openGauss 数据库运维-高危操作一览表

文章目录 openGauss学习笔记-211 openGauss 数据库运维-高危操作一览表211.1 禁止操作211.2 高危操作 openGauss学习笔记-211 openGauss 数据库运维-高危操作一览表 各项操作请严格遵守指导书操作&#xff0c;同时避免执行如下高危操作。 211.1 禁止操作 表1中描述在产品的操…

【golang】22、functional options | 函数式编程、闭包

文章目录 一、配置 Option1.1 options1.2 funcitonal options 一、配置 Option 1.1 options https://commandcenter.blogspot.com/2014/01/self-referential-functions-and-design.html I’ve been trying on and off to find a nice way to deal with setting options in a…

数学公式OCR识别php 对接mathpix api 使用公式编译器

数学公式OCR识别php 对接mathpix api 一、注册账号官网网址&#xff1a;https://mathpix.com 二、该产品支持多端使用注意说明&#xff08;每月10次&#xff09; 三、api 对接第一步创建create keyphp对接api这里先封装两个请求函数&#xff0c;get 和post &#xff0c;通过官方…

20240130在ubuntu20.04.6下卸载NVIDIA显卡的驱动

20240130在ubuntu20.04.6下卸载NVIDIA显卡的驱动 2024/1/30 12:58 缘起&#xff0c;为了在ubuntu20.4.6下使用whisper&#xff0c;以前用的是GTX1080M&#xff0c;装了535的驱动。 现在在PDD拼多多上了入手了一张二手的GTX1080&#xff0c;需要将安装最新的545的驱动程序&#…

VxTerm:SSH工具中的中文显示和乱码时的相关信息和一些基本的知识

当我们写的程序含有控制台(Console)输出时&#xff0c;如果输入内容包含中文时&#xff0c;我们一般需要知道下面的信息&#xff0c;才能正确的搞清楚怎么处理中文显示的问题&#xff1a; 1、实际程序或文件中的实际编码&#xff1a; Linux下的应用程序和文本文件&#xff0c;…

CVE-2024-0352 likeshop v2.5.7文件上传漏洞分析

本次的漏洞研究基于thinkPHP开发开的一款项目..... 漏洞描述 Likeshop是Likeshop开源的一个社交商务策略的完整解决方案&#xff0c;开源免费版基于thinkPHP开发。Likeshop 2.5.7.20210311及之前版本存在代码问题漏洞&#xff0c;该漏洞源于文件server/application/api/contr…

云原生Kubernetes: Ubuntu 安装 K8S 1.23版本(单Master架构) 及故障恢复

目录 一、实验 1.环境 2.安装 Ubuntu 3.连接Ubuntu 4.master节点安装docker 5.node节点安装docker 6.master节点安装K8S 7.添加K8S工作节点 8.安装网络插件calico 9.故障 10.故障恢复 11.测试k8s网络和coredns 二、问题 1.Ubuntu如何修改镜像源 2.Ubuntu和Windo…