首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

利用 K8S 的反亲和性构建高可用应用

早上发现应用的某一个功能有一半的请求失败,排查之后发现,原来容器服务节点未设置反亲和性,导致 Pod 部署到同一个节点中,影响 API 网关请求后端服务。...架构图先 review 以下架构图Web 应用:Vue 框架,运行在 容器服务 上腾讯云 API 网关业务 API:Golang 框架,运行在容器服务上,使用 NodePort 方式对外暴露服务1....问题在页面中使用页面功能,发现有一半的请求失败,API 返回为空。于是想到可能和 API 网关请求后端接口有关,下图为 API 网关对应后端通道的配置,有 2 个节点。...副本跑同一个节点的原因:随着集群的变化,一开始部署两个节点上的 Pod, 因为其中一个节点的资源被占满, 导致 Pod 优先调度到另一个闲置的节点上。2.... Kubernetes ,如果希望让 Deployment 的 Pods 分布不同的节点上,可以使用几种策略,主要包括:1.亲和性(Affinity)和反亲和性(Anti-Affinity)规则:

28610

使用angular2使用nodejs创建服务器,并成功获取参数

首先创建服务器: 1.最好使用express,这个库有更多的api,方法:npm install express --save; 2. npm install @types/express --save...; 安装nodemon 可以让服务器自动重启, 方法:npm install nodemon; 启动服务器的时候用:nodemon build/...js; 这样服务器就算启动完成了. /** *...,地址是http://localhost:8000") }); 接着本地从创建好的服务器上获取数据: import { Component, OnInit } from '@angular/core'...app.module引入过了,这里需要声明构造函数里头,并引入Http from "@angular/Http"; 接着就是坑了,写完后,发现还是获取不到服务器上的数据: 接下来还有配置: 根目录新建一个文件...:proxy.conf.json  内容为: { "/api":{ "target":"http://localhost:8000" } } 然后package.json文件,修改一行

4.3K70
您找到你想要的搜索结果了吗?
是的
没有找到

pod还能这么玩?终于不再担心我的业务了

日常使用 kubernetes 的过程,很多时候我们并没有过多的关心 pod 的到底调度在哪里,只是通过多副本的测试,来提高的我们的业务的可用性,但是当多个相同业务 pod 分布相同节点,一旦节点意外宕机...)可以控制 Pods 集群内故障域 之间的分布,例如区域(Region)、可用区(Zone)、节点和其他用户自定义拓扑域。...pod 拓扑分布约束实践 正如我们日常写 yaml 一样,配置 topologySpreadConstraints,同样只需要在 yaml 定义即可,路径为: pod.spec.topologySpreadConstraints...topologySpreadConstraint 来指示 kube-scheduler 如何根据与现有的 Pod 的关联关系将每个传入的 Pod 部署到集群。...默认拓扑分布约束且仅在以下条件满足 才会应用到 Pod 上: Pod 没有在其 .spec.topologySpreadConstraints 设置任何约束; Pod 隶属于某个服务、副本控制器、ReplicaSet

47210

云原生高可用与容灾系列(一): Pod 打散调度

本文摘自 kubernetes 学习笔记 概述 将 Pod 打散调度到不同地方,可避免因软硬件故障、光纤故障、断电或自然灾害等因素导致服务不可用,以实现服务的高可用部署。...也可以自行手动为节点打上自定义的 label 来定义拓扑域,比如 rack (机架维度)、machine (物理机维度)、switch (交换机维度)。...使用 topologySpreadConstraints 将 Pod 最大程度上均匀的打散调度到各个节点上: apiVersion: apps/v1 kind: Deployment metadata:...whenUnsatisfiable: 指示不满足条件如何处理。...topologySpreadConstraints 特性 K8S v1.18 默认启用,所以建议 v1.18 及其以上的集群使用 topologySpreadConstraints 来打散 Pod 的分布以提高服务可用性

1.9K50

【半译】ASP.NET Core创建内部使用作用域服务的Quartz.NET宿主服务

我的上一篇文章,我展示了如何使用ASP.NET Core创建Quartz.NET托管服务使用它来按计划运行后台任务。...权宜之计 我在上一篇文章展示的解决方案是将IServiceProvider注入到您的IJob的文档,手动创建一个范围,并从中检索必要的服务。...作业可以直接使用作用域服务 由于作业实例是从IServiceProvder作用域中解析来的,因此您可以作业实现的构造函数安全地使用作用域服务。...总结 本文中,我展示了如何创建中间层IJob,该中间层QuartzJobRunner调度程序需要执行作业创建。...该运行程序负责创建一个DI范围,实例化请求的作业并执行它,因此最终IJob实现可以在其构造函数中使用作用域中的服务

1.8K10

Kubernetes 运维记录(5)

被分配资源的大小就是节点上所有 Pod 定义的容器 request 之和,它可以计算出节点剩余多少资源可以被分配(可分配资源减去已分配的 request 之和)。...验证可以通过pod内创建一个进程,让pod所有的cpu都100%使用。然后登录pod所在node,用cpustats查看,cpu负荷100%的cpu都分布同一个numa上。...高并发场景,扩大源端口范围 高并发场景,对于 client 来说会使用大量源端口,源端口范围从 net.ipv4.ip_local_port_range 这个内核参数定义的区间随机选取,高并发环境下...还有部分文章说的是这个值决定的是 socket 四元组的本地端口数量,即一个 ip 对同一个目标 ip+port 最多可以创建 60K 多一点连接,只要目标 ip 或端口不一样就可以使用相同的本地端口...Pod亲和反亲和,Pod 拓扑分布约束 将 Pod 打散调度到不同地方,可避免因软硬件故障、光纤故障、断电或自然灾害等因素导致服务不可用,以实现服务的高可用部署

42310

干货 | 容器成本降低50%,携程AWS Spot上的实践

首先,多可用区的设计避免单可用区故障,应用实例同时遭受影响导致服务不可用。...我们的实践,我们还添加了按应用开启该策略的能力。 3)对于K8s核心组件及有状态应用,仅部署到OnDemand实例上。...2.4.2 Pod调度策略 我们使用调度器的TopologySpreadConstraints功能,来达到同个K8s集群内容器应用跨越多个故障域的高可用部署架构。...所以特定用途内,从实例配置(目前是核数和内存)、可用区、Spot/OnDemand这几个维度完成资源池的结构设计: 2.4.4 异常处理策略 可用区故障,多可用区的部署架构首先使得服务不会整体挂...上述就是使用Spot实例需要考虑的可用区故障、平时Spot回收状态异常高等场景需要采取的处理措施。

2.1K41

PodTopologySpread介绍

在上面的例子,给定labelSelector为“app:foo”,则“zone1”的匹配数为2;而“zone2”的数字为0。 topologyKey是节点标签定义拓扑的键。...除了在所有topologySpreadConstraints使用硬约束之外,你还可以结合使用硬约束和软约束来满足更多样化的集群情况。...注意:如果两个TopologySpreadConstraints被应用到同一个{topologyKey, when unsatis} tuple,Pod的创建将被阻止,返回一个验证错误。...因此,要使用该特性,工作负载作者需要了解集群的底层拓扑,然后Pod规范为每个工作负载指定适当的topologySpreadConstraints。...总结 PodTopologySpread允许你使用灵活且富有表现力的Pod级API为工作负载定义扩展约束。

1.6K40

Kubernetes 1.18新特性

集群级别定义偶数Pod扩展规则 Kubernetes 1.16首次引入Even Pod Spreading,它可以确保以最高的可用性和资源利用率的方式可用区上(如果你使用的是多区域集群)调度Pod...这一功能(#895)允许你为不提供任何topologySpreadConstraints的Pod定义default spreading constraints。已定义此设置的Pod将覆盖全局级别。...修改Deployment,将通过滚动更新策略应用更改,该策略,将创建新的Pod,而旧的Pod删除之前仍然有作用。该策略可以确保如果新的Pod无法启动,则该应用程序仍将在旧的Pod上运行。...为了修改对象,你必须删除它并重新创建它,同事还要重新创建使用它的所有容器。...而在Kubernetes 1.18,你还可以使用kubectl debug命令。该命令允许你执行以下操作: 将临时容器部署到正在运行的Pod。临时容器声明周期短,它们通常包含必要的调试工具。

99820

在线业务极致伸缩、CPU 利用率达 60%,涂鸦的云原生资源优化实践

小结 标准的以 CPU/ 内存为指标进行 HPA 的基础上,我们通过对流量预测、自定义业务指标、定时等多种 HPA 方式的引入和结合,让绝大部分部署到 K8s 的应用都能够使用 HPA,目前容器化的应用...因此,未触及到节点扩缩的条件,我们还是希望在当前的集群,Pod 能够尽可能的打散调度,分散风险。 经过谨慎的分析,本着保障服务稳定性作为第一优先级的思想,我们还是放弃了这一方案。...弹性节点组创建预留 Pod,Pod 优先级为负,扩容的弹性节点尚未就绪之前,优先抢占,提升节点扩容速度。...业务挑战 -4,应用多 AZ 部署场景下的弹性伸缩调度 为了服务高可用,目前公司内的服务基本云上都是跨多可用区部署,然而很多云厂商都有跨可用区的内网流量费,因此内部微服务调度都做了同可用区流量调用的改造...小结 应用跨多 AZ 部署,且应用同可用区调用的场景下,我们通过自定义调度器和重调度对 Pod 调度和调度后的多个阶段的干预,实现了自动扩缩容的动态场景下,仍能保证 Pod 可用区分布的均衡,及扩容对应用

25310

Kubernetes概述

k8s提供的功能 服务发现与负载均衡 通过DNS名称或者IP地址访问容器 分配节点间的网络流量 存储编排 自动部署和回滚 自动完成装箱计算 自我修复 密钥与配置管理 k8s的组件 [外链图片转存失败...这些控制器包括: 节点控制器(Node Controller): 负责节点出现故障进行通知和响应 任务控制器(Job controller): 监测代表一次性任务的 Job 对象,然后创建 Pods...资源的控制器能够处理副本的管理、上线,并在 Pod 失效提供自愈能力。 例如,如果一个节点失败,控制器注意到该节点上的 Pod 已经停止工作, 就可以创建替换性的 Pod。...服务内部流量策略 相同node访问pod 虚拟IP与Service代理 userspace 代理模式 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-l4PUQnZ6-...很多常见的场景,例如只运行一次的 DaemonSet11 以及金丝雀和蓝绿部署等功能,现在的资源也存在很多问题,例如 StatefulSet 初始化容器卡住无法回滚和更新12。

47120

Kubernetes 1.18即将发布:OIDC发现、Windows节点支持,还有哪些新特性值得期待?

#1441 kubectl调试 调试运行pods,新命令将带来巨大的差异。创建调试容器或使用不同配置重新部署pod,这些常见任务从此刻起将变得更快。...目前,只能为整个群集定义全局资源伸缩。而无法为你希望选择的核心服务提供资源调节。 现在,将行为添加到HPA配置: 在上述示例,当需要增加,pod每15秒可以翻倍。...#895 Pod跨故障域均匀扩展 阶段:升级到Beta版 功能组:调度 使用topologySpreadConstraints,可以定义规则,多区域集群均匀分布pods,保证高可用性,并提高资源利用率...#1301 Windows实现RuntimeClass 阶段:Alpha 功能组:windows 使用RuntimeClass可以定义集群存在的不同类型的节点,runtimeClassName指定在哪些节点中部署...然后pods中使用runtimeClassName,如下所示: #689针对Windows工作负载的GMSA支持 阶段:升级到稳定版 功能组:windows 允许运营人员部署选择GMSA,使用它运行容器连接到现有应用程序

92230

kubernetes 近期进展 - 1.14-1.19

k8s 集群大都(如google clout、腾讯云、阿里云)提供了基于 containerd 的创建选项 (另一个选项为 docker)。...)的 准入控制器 (admission controller) PodSecurityPolicy 资源被创建,并不执行任何操作。...为了使用该资源,需要对 发出请求的用户或者目标 Pod 的 服务账号 授权,通过允许其对策略执行 use 动词允许其使用该策略。...新的调度框架 v1.15 alpha: 原有的调度流程, 定义了丰富扩展点接口,开发者可以通过实现扩展点所定义的接口来实现插件,将插件注册到扩展点。...Telepresence 远端 k8s 集群部署了一个和本地环境网络互通的 pod,可以选择 VPN 的方式。这个 pod 会将指定的网络流量,环境变量,磁盘等数据转发到本地的服务

2.3K602

关于AI(深度学习)相关项目 K8s 部署的一些总结

,方便维护,这里需要分情况考虑, 如果部署 Pod 相对较少,可以考虑通过 亲和性来处理,控制指定标签的节点上,但是可能存在Pod不会均匀分布的情况,如果希望均匀分布,可以使用拓扑分布约束。...具体情况需要具体分析,实际上还要结合项目需要去考虑,训练和预测可能还存在差异 横向扩展,不能依赖 service 提供的负载均衡能力 测试中发现,使用无状态控制器来部署项目核心服务提供能力,当 Pod...iptables 模式,iptables 负载均衡使用随机模式,每个对应的 endpoint 会添加一个自定义链,从 SVC 的 服务发布方式(NodePort,ClusterIP,LoadBalancer...具体的处理可以使用K8s job 控制器来实现,根据数据量,创建对应 job 任务,而且每次处理的 Job 也可以分批次控制。...利用中间件交换数据,比通过通信协议直接交换数据 更适合 通过中间件交换数据,解耦了 服务之间的绑定,细化了流程,不需要考虑数据传输的丢失,二是使用中间件,存储处理的中间数据,更方便测试,可以灵活处理各个阶段对数据的处理

20610

17个应该了解的Kubernetes优化

与 Pod 反亲和性结合使用以分散类似的 Pod,增强容错性。 应避免的陷阱 过于严格的亲和性规则会导致 Pod 调度失败,尤其是具有异构节点的集群。...此功能对于隔离工作负载至关重要,尤其是多租户环境或特定节点专用于特定任务。...实施 Pod 拓扑扩展约束 Pod 规格定义拓扑扩展约束:要利用此功能,您需要在 Pod 规格定义 topologySpreadConstraints。...使用案例 高可用性部署:通过将副本分布多个区域中,确保关键服务区域故障期间保持可用。 跨节点负载均衡:通过节点间均匀分布 Pod,实现更有效的资源利用率并降低资源争用的风险。...应避免的陷阱 过于严格的策略:创建过于严格的策略会阻碍合法资源的部署,影响开发速度和敏捷性。 策略管理的复杂性:随着自定义策略数量的增加,管理和理解其含义可能变得具有挑战性。

11610

创建第一个项目】使用定义的8080端口来启动服务windows系统命令行执行如下命令查看IP地址linuxunix系统命令行执行如下命令查看IP地址

Django创建项目的结构 使用django开始创建并开发项目之前,我们先简单了解一下Djaogo对于项目的管理的结构,这里要提出的是,Django之所以可以方便快捷的开发大型WEB应用,最大的特点是它面向对象开发的基础上的模块化开发...,将项目中需要的各个功能可以封装成或大或小的模块,这些模块项目中是可插拔的,非常有利于项目的更新和扩展 所以,Django框架在使用时,首先会常见一个项目(根模块),然后项目的技术上,创建各个应用的子模块...运行及访问Django项目 我们已经创建好了基于Django的一个项目,那么怎么web容器启动这个项目,并且可以浏览器访问它呢?...扩展:通过指定IP地址和端口启动服务 默认情况下,我们可以通过python manage.py runserver启动服务,绑定当前PC的ip地址和8000端口来启动服务 如果我们想通过自定义端口进行访问的话...,可以通过如下的命令来启动服务 使用定义的8080端口来启动服务 python3 manage.py runserver 8080 浏览器可以通过如下的形式访问:http://localhost

1.6K10

使用 Victoria Metrics Operator 管理 VM 集群

抓取指标配置 VMPodScrape:定义从 Pod 抓取指标配置 VMRule:定义报警和记录规则 VMProbe:使用 blackbox exporter 为目标定义探测配置 此外该 Operator...默认还可以识别 prometheus-operator 的 ServiceMonitor、PodMonitor、PrometheusRule 和 Probe 对象,还允许你使用 CRD 对象来管理...VM,如果只是想要单节点模式则可以直接使用 VMSingle 对象,如果要部署一套 VM 的集群则可以直接使用 VMCluster 来定义一个对象即可,完全不需要我们去手动创建各个组件,Operator...CRD 对象,然后会根据我们的定义去自动创建对应的 VM 集群,也就是前面提到的几个组件服务: ☸ ➜ kubectl get pods NAME...vmagent-vmagent-demo 8429:8429 Forwarding from 127.0.0.1:8429 -> 8429 Forwarding from [::1]:8429 -> 8429 我们可以浏览器访问

1.7K20

安防RTSP_Onvif网络摄像头互联网直播视频流媒体服务使用过程如何保存用户登录的信息

各种网络技术的大规模商用,视频随时随地可看、可控、可视频会议调度指挥、可智能预警、可智能检索回溯的诉求越来越多,尤其是移动视频应用技术和智能语音技术的普及和发展,使得视频智能分析和语音智能理解支持的需求各行各业越来越受到青睐和重视...而在传统视频监控、视频会议行业里面,互联网思维、架构和技术完全可以成功引入,尤其是移动互联网、物联网、深度学习、智能分析、云端组网方面的融合技术,完全能够满足新形势下的各种行业的终端智能化的需要。...软件使用过程如何保存用户登录的信息 解决问题 保存用户登录的信息,方法有很多种,下面是我以前做的一个案例,方法是通过使用cookie的方法来进行保存的 HTML代码 ? js代码 ?...当我们需要销毁,只需要通过把路径地址设置为空就可以实现。 视频流媒体服务器EasyNVR播放界面: ?

1.1K10
领券