kubernetes -pod 实践

一、资源与对象

1、pod

容器都是由镜像启动的,但在容器外面会包裹通过Pod将容器包裹起来这个是K8s的概念,在这个Pod里面可以有一个或多个容器,那这个Pod的有什么特征呢

  • Pod里的所有容器都会调度在同一个节点上运行0。
  • Pod中的所有容器会共享同一网络,它们有一个唯一的IP,就叫PodIP;
  • Pod中还有一个特殊的容器叫Pause,它会优先启动然后进行IP分e配,而后将其他容器都Link到该容器上,实现网络共享
  • pod 是kubernetes的最小资源

Pod是Kubernetes中的抽象概念,也是Kubernetes中的最小部署单元。在每个Pod中至少包含一个容器或多个容器,这些容器共享Network (网络) 、PID (进程) 、IPC (进程间通信)HostName (主机名称) 、Volume (卷) 。当我们需要部署应用时,其实就是在部署Pod,Kubernetes会将Pod中所有的容器作为一个整体,由Master调度到一个Node上运行。

2、Deployment

在Pod的上一层就是ReplicaSet控制器,它主要负责管理Pod的副本数,但通常我们并不直接使用ReplicaSet,而是使用比ReplicaSet更高一级的DepLoyment。由DepLoyment管理ReplicaSet,它会自动帮我们创建和销毁RS,有了Deployment就可以实现应用的滚动更新。
ReplicaSet是副本控制器

[root@master ~]# kubectl  create  deployment  nginx --image=nginx --replicas=3
deployment.apps/nginx created
[root@master ~]# kubectl  get pod
NAME                     READY   STATUS    RESTARTS   AGE
nginx-85b98978db-4475f   1/1     Running   0          22m
nginx-85b98978db-5r87f   1/1     Running   0          22m
nginx-85b98978db-85wtn   1/1     Running   0          22m
[root@master ~]# kubectl  get rs
NAME               DESIRED   CURRENT   READY   AGE
nginx-85b98978db   3         3         3       22m
[root@master ~]# kubectl  get deployments.apps 
NAME    READY   UP-TO-DATE   AVAILABLE   AGE
nginx   3/3     3            3           22m

3、Service

Service,是Kubernetes用来实现Pod负载均衡的一个服务;要想实现Pod的负载均衡,首先需要通过Labels为Pod打上特定的标签,而后创建Service时使用SeLector选择对应的标签,最终通过节点的kube-proxy来完成负载均衡的规则创建

4、Namespace

在 Kubernetes 中,名字空间’(Namespace) 提供一种机制,将同-集群中的资源划分为相互隔离的组。同一名字空间内的资源名称要唯,但跨名字空间时没有这个要求

  • 对资源对象进行隔离: 比如: Pod、Deployment、Service、将其划分为相互隔离的组。
  • 对资源配额进行隔离: CPU,Memory ,限制某个NS的可以使用的cpu和内存;

二、 kubernetes核心资源pod

1、为什么需要Pod
有些容器关系比较紧密,必须要再一起工作。Pod提供了比容器更高层次的抽象,将它们封装到一个部署单元中进行调度,从而达到一起部署、一起管理。

pod 使用场景

场景一:

比如:日志收集:
Tomcat filebeat 收集 access.log error.log 日志信息 推送到 logging-server,一个pod有两个镜像

在这里插入图片描述

服务模块已经实现了一些核心的业务逻辑,并且稳定运行了一段时间,日志记录在了某个目录下,按照不同类别分别为 error.togaccess.Tog,现在希望收集这些日志并发送到统一的日志处理服务器上。
这时我们可以修改原来的服务模块,在其中添加日志收集、发送的服务但这样可能会影响原来服务的配置、部署方式,从而带来不必要的问题和成本,也会增加业务逻辑和基础服务的藕合度
如果使用Pod的方式,通过简单的编排,既可以保持原有服务逻辑、部署方式不变,又可以增加新的日志收集服务。而且如果我们对所有服务的日志生成有一个统一的标准,或者仅对日志收集服务稍加修改,就可以将日志收集服务和其他服务进行Pod编排,提供统一、标准的日志收集方式。

场景二:

提供ssh、ftp访问容器数据的能力
Docker Hub或者很多第三方的镜像并没有安装sshd的服务,不方便我们进入容器进行配置、代码的修改、调试,很多时候需要重新构建镜像或者在镜像基础上安装sshd的服务,这都需要时间和一定的学习成本
而通过Pod的方式,我们就可以将现有镜像和一个ssh、ftp镜像进行编排,获得操作容器内数据的能力。

在这里插入图片描述

场景三:

适配不同IaaS平台的环境

比如开发了一个节点管理agent程序,这个agent需要读取当前部署环境的一些信息,可以通过底层平台的API实现。但是,当部署到AWS、阿里云、青云等不同平台时,API就无法统一了。
但是我们可以运行一个适配各平台的服务用来获取不同平台的相关信息然后通过Pod编排部署,在不改变agent逻辑的情况下,通过服务组合来适配于不同平台。

在这里插入图片描述

场景四:

一个Nginx容器用来发布软件,另一个容器专门用来从源仓库做同步,这两个容器的镜像不太可能是一个团队开发的,但是他们一块儿工作才能提供一个微服务;所以需要将这些位于同一Pod内的容器形成单个服务对外提供,一个容器将共享卷获取的数据提供给用户, 而另一个容器 (边车sidecar) 则不断更新文件到共享卷中来
通过这种方式,就可以将来自不同团队的容器镜像,在部署的时候组合成一个微服务对外提供服务。

在这里插入图片描述
但是在kubernetes新版本中,可以通过pod的编排进行解决,可以不通过修改代码进行解决

场景五:

pod 共享网络:

在Docker中,如果 tomcat 容器想与 mysgl容器进行共享,需要先启动mysql容器,然后tomcat容器通过 --net=db:mysgl选项即可和mysql共享网络,这也就意味着我们必须先运行mysql,后运行tomcat,才可以实现共享网络。
在Kubernetes中,Pod的网络共享和Docker的网络共享实现方式一致只不过在启动Pod时,会先启动一个 pause的容器,然后将后续的所有容器都 --Tink到这个 pause的容器࿰

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

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

相关文章

PDF编辑工具--Acrobat Pro DC 2023中文

Acrobat Pro DC 2023是一款功能强大的PDF编辑和管理软件,它可以帮助用户在创建、编辑、转换和共享PDF文档方面达到前所未有的高度。这款软件提供了丰富的编辑功能,使用户能够轻松添加注释、高亮、下划线、插入文本等,自由地编辑PDF文档。除了…

LeetCode 每日一题 Day 23 || 简单数学题

1276. 不浪费原料的汉堡制作方案 圣诞活动预热开始啦,汉堡店推出了全新的汉堡套餐。为了避免浪费原料,请你帮他们制定合适的制作计划。 给你两个整数tomatoSlices和 cheeseSlices,分别表示番茄片和奶酪片的数目。不同汉堡的原料搭配如下&am…

枚举的使用

背景以及定义 枚举是在jdk1.5以后引入的.主要用途是:将常量组织起来,在这之前表示一组常量通常使用定义常量的方式: public static final int RED 1; public static final int GREEN 2; public static final int BLUE 3; 但是常量举例有不好的地方,例如:可能碰巧有一个数字…

Leetcode 2972. Count the Number of Incremovable Subarrays II

Leetcode 2972. Count the Number of Incremovable Subarrays II 1. 解题思路2. 代码实现 题目链接:2972. Count the Number of Incremovable Subarrays II 1. 解题思路 这道题需要注意的是,题目要求只能删除一个连续子串,使得剩余的元素变成一个递增…

【Vue3】Vue3使用video-player实现视频播放

一、video-player 介绍 video-player 是一个基于 video.js 的视频播放器组件,它提供了丰富的功能,包括视频播放、暂停、快进、快退、全屏、音量控制等。 video-player 的使用非常简单,如下安装即可。 npm install video.js videojs-player…

【数值分析】反幂法,matlab实现

反幂法20231226 一种求实矩阵 A {A} A 的按模最小的特征值,及其对应的特征向量 x i {x_i} xi​ 的方法,只能求一个。 要保证矩阵最小特征值只有一个,有 n {n} n 个线性无关的特征向量,矩阵可逆。 可以通过求矩阵 A − 1 {A^{…

【Web API系列】使用getDisplayMedia来实现录屏功能

文章目录 前言一、认识getD该处使用的url网络请求的数据。二、使用步骤1.使用方法一实现录屏2.使用方法二实现录屏3. 运行效果 延伸 前言 Web API经过长期的发展,尤其是最近,发展相当迅猛,现在已经支持很多功能了,一些原生就支持…

[Linux]——彻底学通权限

学习权限 一、权限概念二、权限管理2.1文件访问者分类(人)2.2文件类型和访问权限(事物的属性)2.3 文件访问权限的相关设置方法 三、目录的权限3.1、进入目录的权限3.2、粘滞位 四、关于权限的总结 一、权限概念 Linux下有两种用户…

【AI】Langchain-Chatchat搭建本地知识库-未完,先记录踩的坑

事先说一下,我本地的显卡4070只有12G显存,无法运行本地知识库,我把自己折腾的过程和遇到的坑先记录一下吧,后续如果有算力的话就再跑一遍试试。后续来了:【AI】使用阿里云免费服务器搭建Langchain-Chatchat本地知识库 …

阿赵UE学习笔记——4、新建关卡

阿赵UE学习笔记目录 大家好,我是阿赵。   之前介绍了虚幻引擎的常用窗口功能,这次开始创建游戏内的世界了。首先先从创建关卡开始。 一、创建新关卡 在使用UE引擎制作游戏,首先要有一个场景作为基础,这个场景在UE里面成为关卡。…

PHP面向对象基础之类、对象和基本特点

类就是同一类事物的划分,比如车,当然车还可以划分其他类,比如小轿车、大卡车等。通俗点,类就是指由变量和作用于变量的函数组成的集合。 对象是类的一个实例,比如车牌固定的一辆车。 面向对象编程的三个特点&#xff1…

带你认识 WIDGET、WINDOW 、FRAME和 FRAMEGROUP

1、概述 在 YonBuilder 移动开发中,开发者需要了解一些常用的概念术语,其中和App整体框架结构及页面层级组成相关最重要几个重要概念,就是 Widget、 Window 和 Frame、frameGroup。掌握了这几个概念,对于开发者开发 App 时的 API…

docker container 指定gpu设备

1, 在yaml中 Turn on GPU access with Docker Compose | Docker Docs Example of a Compose file for running a service with access to 1 GPU device: services:test:image: nvidia/cuda:12.3.1-base-ubuntu20.04command: nvidia-smideploy:resources:reserva…

linux离线安装jdk11

1. 下载java11,Java Downloads | Oracle 2. 文件安装 jdk11: mkdir /usr/lib/jvm/ 将下载的文件,解压到/usr/lib/jvm/下 tar -zxf jdk-11.0.21_linux-x64_bin.tar.gz -C /usr/lib/jvm/ 3. 将以下命令写入bashrc文件 export JAVA_HOME/us…

ARAM 中断实验

思路:按键->EXTI->GIC->CPU->异常向量表 //使能GPIOF时钟 //设置PF9管脚为输入(KEY1) //设置PF9作为EXTI9事件的输入(事件编号对应管脚号) //设置下降沿使能检测EXTI9事件 (也可设置上升沿没有下降沿严谨方便,不同场景不同选择) //设置EXTI9事件不…

26、湾湾国立阳明交通大学、湾湾长庚纪念医院提出:ALL Attention U-Net,独属头部CT分割的[玛格丽特]

本文由台湾国立阳明交通大学、台湾长庚纪念医院于2023年12月16日在arXiv<Image and Video Processing>发表。 论文地址&#xff1a; 2312.10483.pdf (arxiv.org) 0、Abstract 脑出血在 Head CT扫描中作为第一线工具&#xff0c;帮助专家诊断不同类型的出血。然而&…

云端的DevOps之旅:深入了解AWS Code系列工具

对于开发者和IT专业人员来说&#xff0c;理解这些工具如何帮助我们从代码编写、编译、测试到部署的完整流程将极其重要。今天&#xff0c;我将详细介绍 AWS CodeCommit, CodeBuild, CodeDeploy, 和CodePipeline 这一系列以“Code”命名的开发和部署工具 AWS CodeCommit&#x…

Tomcat面试题(10道含答案),由浅入深

请解释Tomcat的基本概念和作用 Tomcat是一个开源的Java Web服务器和Servlet容器&#xff0c;用于提供基于Java的应用程序运行环境。它支持Java Servlet规范&#xff0c;使得开发者能够快速构建和部署基于Web的应用程序。 请描述Tomcat的目录结构&#xff0c;并解释各个目录的…

cmd启动Java项目提示:jar中没有主清单属性

1、问题 2、原因 在IDEA中开发SpringBoot项目并打成jar包&#xff0c; 需要添加springboot打包插件&#xff0c;如果不添加&#xff0c;仅仅用maven进行打包&#xff0c;打成包里面是少文件的。 <build><plugins><!--springboot打包插件--><plugin>&…

ElasticSearch之RestClient笔记

1. ElasticSearch 1.1 倒排索引 1.2 ElasticSearch和Mysql对比 1.3 RestClient操作 导入依赖 <dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest-high-level-client</artifactId><version>7.15.…