K8S容器编排高级应用

K8S容器编排高级应用

1.Pod控制器

pod控制器帮助我们自动管理pod,并满足期望的pod数量。pod控制器通过label标签来管理pod。在资源文件中通过selector来配置选择器,通过kind来配置控制器。一般我们的应用在生产环境用k8s一定要用pod控制器管理pod而不是自己创建pod这样才能保证可靠性。

版本升级的时候一般通过改资源文件的方式来升级,尽量不要用命令来升级不然资源文件没有改不利于后期维护。

1.pod控制器组成

1.标签选择器

匹配并关联 Pod 资源对象。

2.期望副本数

期望在集群中精确运行着的 Pod 资源的对象数量。

3.pod模板

用于新建 Pod 资源对象的 Pod 模板资源文件。

2.ReplicaSet控制器

rs控制器代用户创建指定数量的pod副本数量,确保pod副本数量符合预期状态,支持扩缩容,版本升级不支持,需要手动完成,比较老的pod控制器,频繁的版本迭代不要用这种控制器。

3.Deployment控制器

工作在 ReplicaSet 之上,用于管理无状态应用,支持滚动更新(比如1.0版本升级到2.0版本可以无感知升级)和回滚功能,还提供声明式配置。使用deployment控制器会自动创建相关的RS控制器资源。

4.HPA控制器

ReplicaSet控制器和Deployment控制器扩容的时候需要手动完成,HPA控制器Pod可以水平自动缩放,可以根据Pod的负载动态调整Pod的副本数量,业务高峰期自动扩容Pod副本以满足业务请求,在业务低峰期自动缩容Pod,实现节约资源的目的。

部署mertics-server服务来收集和监控k8s的各种指标

1.资源配置

为了能够使用HPA的功能必须要对我们的POD进行资源配置,Kubernetes采用request和limit两种配置类型来对资源进行分配

1.资源配置类型
1.request(资源需求)

运行Pod的节点必须满足运行Pod的最基本需求才能运行Pod

2.limit(资源限额)

运行Pod期间,可能内存使用量会增加,那最多能使用多少内存,这就是资源限额

2.资源单位
1.cpu单位

cpu的单位是核心数。一个容器申请0.5个CPU,就相当于申请1个CPU的一半,你也可以加个后缀m,表示千分之一的概念,比如说100m(100豪)的CPU等价于0.1个CPU。默认情况下就是基于CPU的HPA,需要创建HPA 的资源清单设置最小pod数量和最大pod数量。

2.内存单位

内存单位是内存使用的容量

K、M、G、T、P、E ## 通常是以1000为换算标准的。

Ki、Mi、Gi、Ti、Pi、Ei ## 通常是以1024为换算标准的

3.扩缩容策略

HPA会根据获得的指标数值,应用相应的算法算出一个伸缩系数,此系数是指标的期望值与目前值的比值,如果大于1表示扩容,小于1表示缩容。

1.资源文件主要参数

1.scaleTargetRef:目标作用对象,可以是Deployment、ReplicationController或ReplicaSet

2.averageUtilization:期望每个Pod的CPU使用率都为 10% ,该使用率基于Pod设置的 CPU Request 值进行计算,假如该值为 100m ,那么系统将维持Pod的实际CPU使用值为100m*10%=10m ,超过 10m 就会触发扩容

3.minReplicas和maxReplicas:Pod副本数量的最小值和最大值,系统将在这个范围内进行自动扩缩容操作,并维持每个Pod的CPU使用率为10%

2.K8S数据存储

1.数据卷

Docker 可以通过bind将数据持久存储于容器自身文件系统之外的存储空间之中,kubernetes 也支持类似的存储卷功能,不过,其存储卷是与 Pod 资源绑定而非容器。

1.非持久性存储

emptyDir、hostPath

2.网络连接性存储

SAN:iscsi

NFS:nfs、cfs

3.分布式存储

glusterfs、cephfs、rbd

4.云端存储

awsElasticBlockStore、azureDisk、gitRepo

3.pod的调度策略

pod的调度都是通过pod控制器自动完成,但是仍可以通过手动配置的方式进行调度,目的就是让pod的调度符合我们的预期。

1.节点调度

Pod.spec.nodeName 用于强制约束将Pod调度到指定的Node节点上,指定了nodeName的Pod会直接跳过Scheduler的调度逻辑,直接写入PodList列表,该匹配规则是强制匹配。

2.标签调度

也叫定向调度,把pod调度到具有特定标签的node节点的一种调度方式,比如把MySQL数据库调度到具有SSD的node节点以优化数据库性能。需要给指定的node打上标签,并在pod中设置nodeSelector属性以完成pod的指定调度。

4.service的服务发现

在kubernetes中,pod是应用程序的载体,我们可以通过pod的ip来访问应用程序,但是pod的ip地址不是固定的,这也就意味着不方便直接采用pod的ip对服务进行访问。

kubernetes提供了Service资源,Service会对提供同一个服务的多个pod进行聚合,并且提供一个统一的入口地址,通过访问Service的入口地址就能访问到后面的pod服务。Service通过Label Selector访问Pod组。

1.服务发现原理

真正起作用的其实是kube-proxy服务进程

每个Node节点上都运行着一个kube-proxy服务进程,当创建pod的时候会通过api-server向etcd写入创建的pod的信息,而kube-proxy会基于监听的机制发现这种pod的变动,然后他会将最新的pod的信息告知service我们可以通过service和etcd访问各个pod。service的ip不会变化,pod的ip每次重启不固定。

2.service类型

1. ClusterIp

自动分配一个仅Cluster内部可以访问的虚拟IP

只能内部访问

2.nodeport

在ClusterIP基础上为Service在每台机器上绑定一个端口,这样就可以通过: nodeport来访问该服务

可以外部访问

3.LoadBalancer

在NodePort的基础上,借助 Cloud Provider 创建一个外部负载均衡器,并将请求转发到nodeport可以外部访问

4.ExternalName

把集群外部的服务引入到集群内部来,在集群内部直接使用,没有任何类型代理被创建,这只有Kubernetes 1.7或更高版本的kube-dns才支持

5.ingress

Ingress 使用开源的反向代理负载均衡器来实现对外暴漏服务,比如 Nginx、Apache、Haproxy等,用的最多的是使用nginx来做的。

1.ingress优势

1.动态配置

可以自动修改ngnix配置文件,当服务启动时,会自动注册到ingress当中自动添加反向代理

2.减少端口暴露

是k8s的很多服务会以 nodeport 方式映射出去

2.ingress-nginx原理

1.流程

客户端 – ingress-nginx – service(多个)-- pod (多个)

2.工作原理
1.Nginx 对k8s运行的service提供反向代理,在配置文件中配置了域名与service的对应关系并且可以自动化的动态配置。
2.客户端通过使用 DNS 服务或者直接配置本地的 hosts 文件,将域名都映射到 Nginx 代理服务器。
3.当客户端访问时,浏览器会把包含域名的请求发送给 nginx 服务器,nginx 服务器根据传来的域名,选择对应的 Service,然后根据一定的负载均衡策略,选择某个pod接收来自客户端的请求并作出响应

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

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

相关文章

Intellij-idea 如何编译maven工程

在 IntelliJ IDEA 中编译 Maven 工程是一个相对直接的过程。以下是基本步骤: 1. 打开或导入 Maven 项目 如果您已经有一个现有的 Maven 项目,可以直接在 IntelliJ IDEA 中打开它。选择 File > Open,然后浏览到您的 Maven 项目文件夹&…

SIP-2401VP SIP音频广播模块SIP-2401VP SIP号角音柱音箱解码poe广播播放核心板

SV-2401VP和SV-2403VP网络音频模块是一款通用的独立SIP音频功能模块,可以轻松地嵌入到OEM产品中。该模块对来自网络的SIP协议及RTP音频流进行编解码。 该模块支持多种网络协议和音频编解码协议,可用于VoIP和IP寻呼以及高质量音乐流媒体播放等应用。同时…

pythroch abaconda 安装 cuda、版本确定、pytorch 安装

一、简述 公司有一个深度学习的项目,身上也没有其他项目,恰好乘着个机会学一下pytorch 和YOLOv8. 1、下载abaconda https://repo.anaconda.com/archive/ 2、安装 环境变量要✔ 其他一直下一步 3、测试 (base) C:\Users\alber>conda -V cond…

leaflet学习笔记-带有方位角信息的圆的绘制(七)

前言 项目中有一个需求,就是需要绘制一个圆,并且绘制的时候还要设置方位角,最后返回圆的坐标集合和方位角。本功能使用Leaflet-GeomanTurf.jsleaflet实现。 方位角简介 在陆地导航中,方位角通常表示为 alpha、α,并定…

Java获取时间,自动给创建时间创建人等赋值

ApiOperation("添加")PostMapping()public ApiResult<?> save(RequestBody FeePropertyRoomArea feePropertyRoomArea) {User usergetLoginUser();LocalDateTime localDateTime LocalDateTime.now();feePropertyRoomArea.setCreateTime(localDateTime);feePr…

关于PhpStorm的安装激活与汉化

访问官网下载PhpStorm https://www.jetbrains.com/phpstorm/download/#sectionwindows 点击download 下载好后&#xff0c;双击exe安装程序 点击下一步 选择安装位置 前两个肯定需要勾选&#xff1a; 创建桌面快捷方式&#xff1b;创建关联php&#xff1b; 根据以往经验&am…

【OpenCV学习笔记07】- 【彩蛋】实现轨迹条控制画笔颜色和笔刷半径,并可以正常绘画

彩蛋 实现轨迹条控制画笔颜色和笔刷半径&#xff0c;并可以正常绘画。 直接上彩蛋代码 示例代码&#xff1a; # 彩蛋&#xff0c;创建一个可以调节颜色和笔刷半径的轨迹栏&#xff0c;并且可以通过鼠标进行绘画 import numpy as np import cv2 as cv# 定义全局变量 # 如果 …

YACS(上海计算机学会竞赛平台)2022年10月月赛——算式求值(一)

题目描述 给定一个由正整数、加号、减号构成的表达式&#xff0c;请计算表达式的值。 输入格式 输入一个由 正整数、、- 构成的表达式 输出格式 单个整数&#xff1a;表示算式的值。 数据范围 数据保证 输入的字符串长度不超过 100,000&#xff0c; 其中出现的每个整数…

React07-路由管理器react-router-dom(v6)

react-router 是一个流行的用于 React 应用程序路由的库。它使我们能够轻松定义应用程序的路由&#xff0c;并将它们映射到特定的组件&#xff0c;这样可以很容易地创建复杂的单页面应用&#xff0c;并管理应用程序的不同视图。 react-router 是基于 React 构建的&#xff0c;…

STM32使用1.69寸液晶显示模块使用缓冲区实现快速刷新全屏显示字符串功能

一个1.69寸SPI接口的液晶显示模块&#xff0c;有320*24076800个点&#xff0c;每个点有2个字节表示RGB的颜色&#xff0c;所以需要153.6K个字节的数据来刷新全屏&#xff0c;如果SPI口输出数据不是高速并且不紧密排列的话&#xff0c;刷新就会比较慢&#xff0c;有从下到下的肉…

大模型PEFT技术原理(一):BitFit、Prefix Tuning、Prompt Tuning

随着预训练模型的参数越来越大&#xff0c;尤其是175B参数大小的GPT3发布以来&#xff0c;让很多中小公司和个人研究员对于大模型的全量微调望而却步&#xff0c;近年来研究者们提出了各种各样的参数高效迁移学习方法&#xff08;Parameter-efficient Transfer Learning&#x…

【开源】基于JAVA的婚恋交友网站

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 会员管理模块2.3 新闻管理模块2.4 相亲大会管理模块2.5 留言管理模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 会员信息表3.2.2 新闻表3.2.3 相亲大会表3.2.4 留言表 四、系统展示五、核心代码5.…

lvs+keepalived+nginx双主模式双主热备实现负载均衡

目录 一、原理 二、真实服务器nginx配置 三、lvs的keepalived配置 3.1 配置文件 3.2 开启keepalived服务 四、测试 4.1 测试访问VIP 4.2 模拟lvs01宕机 主机名IPnginx0111.0.1.31nginx0111.0.1.31lvs0111.0.1.33lvs0211.0.1.34VIP111.0.1.29VIP211.0.1.30 一、原理 lvskeepal…

OpenAI推出GPT商店和ChatGPT Team服务

&#x1f989; AI新闻 &#x1f680; OpenAI推出GPT商店和ChatGPT Team服务 摘要&#xff1a;OpenAI正式推出了其GPT商店和ChatGPT Team服务。用户已经创建了超过300万个ChatGPT自定义版本&#xff0c;并分享给其他人使用。GPT商店集结了用户为各种任务创建的定制化ChatGPT&a…

通过绩效体系优化,落实国企三项制度改革

【华恒智信问题分析】 通过多次调查走访&#xff0c;华恒智信顾问老师了解到&#xff0c;该集团目前已经建立了比较完善规范的绩效管理制度&#xff0c;来推动实现国企三项改革&#xff0c;但实际操作中还存在一些问题&#xff0c;特别是在绩效考核结果的应用中&#xff0c;存…

cv::Mat转AVFrame相互转换

最近在使用ffmpeg取鱼眼相机的视频流做全景播放时遇到需要cv::Mat转AVFrame的转换&#xff0c;看到了这篇文章&#xff0c;记录一下 1.OpenCV cv::Mat转换为FFmpeg AVFrame 下面是两种方法 void CvMatToAVFrame(const cv::Mat& input_mat, AVFrame* out_avframe) {int i…

windows10 装docker和docker compose

一.windows环境准备 开启过程中的问题&#xff0c;进入bios修复 二.docker下载安装 1.下载 Docker Desktop: The #1 Containerization Tool for Developers | Docker 下载最新版有问题&#xff0c;下载老版本试试 Docker Desktop release notes | Docker Docs 2.安装 三.do…

系统存储架构升级分享

一、业务背景 系统业务功能&#xff1a;系统内部进行数据处理及整合, 对外部系统提供结果数据的初始化(写)及查询数据结果服务。 系统网络架构: • 部署架构对切量上线的影响 - 内部管理系统上线对其他系统的读业务无影响 •分布式缓存可进行单独扩容, 与存储及查询功能升级…

出版实务 | 出版物的成本及其构成

文章目录 出版物成本的总体构成直接成本开发成本制作成本 间接成本期间费用 本量利分析原则特点和作用变动成本项目固定成本项目本量利分析的基本公式及其应用定价发行折扣率销售数量单位销售收入销售收入总额单位销售税金销售税金总额变动成本总额单位变动成本固定成本总额单位…

CMake入门教程【高级篇】CPack打包项目Linux的deb和windows的msi

😈「CSDN主页」:传送门 😈「Bilibil首页」:传送门 😈「动动你的小手」:点赞👍收藏⭐️评论📝 文章目录 1. 什么是CPack?2. 如何使用CPack?2.1 在CMakeLists.txt中包含CPack模块2.2 设置CPack变量2.3 创建分发包3.CPack命