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

如何在 Kubernetes 滚动部署中实现真正的零停机时间:避免断开的客户端连接

对用户的负面影响之一是连接中断。我本来很想讨论客户端连接断开的影响,但不是在本文中。 默认情况下,Kubernetes 部署策略涉及滚动部署。是的!滚动部署听起来很有趣,但还有更多。...在继续之前,以下是本教程的先决条件: Kubernetes 知识 使用Docker的经验 Pod 的启动阶段 当 Pod 在未配置就绪探测的滚动部署中启动时,端点 Controller 会使用容器的端点更新相应的服务对象...Pod 的关闭阶段 了解 Kubernetes 集群中的组件更像是微服务,而不是整体,这一点至关重要。微服务的工作方式与整体式进程的运行方式不同。在微服务中,所有组件同步需要更多时间。...当 API 服务器收到来自客户端或滚动部署期间的 Pod 删除通知时,它首先在 etcd 中修改 Pod 的状态,然后通知端点控制器和 Kubelet。...当从客户端或滚动部署期间收到删除 Pod 的请求时,此请求将到达控制平面上的 API 服务器。

27710

减少使用Java应用服务器,迎接Docker容器

假如你把所有的服务(部署单元)部署到同一个JVM中;如果要升级这些服务中的一个,你就要关闭这个JVM进程,这就会影响到其它的服务。...多个独立的进程比一个庞大的进程更容易监控,也更容易了解哪个服务使用了多少内存、网络、硬盘和CPU等。...新版本容器的滚动升级就可以在应用服务器之外完成(例如,通过kubernetes滚动升级,然后在容器前使用负载均衡)。...云(如Kubernetes和Docker)在许多方面接管了很多Java应用服务器原先做的功能,并且新镜像的滚动升级对所有技术来说都是需要的(包括java/golang/nodejs/python/ruby...许多Java开发者学会了如何使用应用服务器,并且在Docker的世界中仍会继续使用,这一点很好。

1.7K40
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    (译)自己的 Kubernetes 控制器(2)——用 Java 开发

    前面文章中,我们大概描述了开发自定义 Kubernetes 控制器的基础内容。其中我们提到,只要能够使用 HTTP/JSON 就可以满足开发需求。本文中就言归正传开始开发。...次选的方式是使用 Swagger 或者 APiary 这样的代码生成器: API 提供者需要使用某种方式来提供对应的模型,开发者使用相应工具来生成代码。 最好的方式是,已经有客户端库提供了绑定结构。...和 REST API 非常相近,幸运的是,还有其他选项:Fabric8 在 Github 上提供了 Java API。...Fabric8 概述 简单说来,Fabric8 API 里面,在 KubernetesClient 示例中可以获取所有 Kubernetes 资源: client.namespaces() client.services...结论 本文描述了用 Java 实现 Kubernetes 控制器的过程。有了 Fabric8 API,这个过程相当直接。主要需要解决的问题就是删除和创建逻辑。

    1.1K10

    spring-cloud-kubernetes官方demo运行实战

    背后的三个关键知识点》 《spring-cloud-kubernetes的服务发现和轮询实战(含熔断)》 官方demo 官方提供了简单的demo用于快速了解spring-cloud-kubernetes...,请参考文章《使用fabric8-maven-plugin插件的错误处理(No plugin found for prefix ‘fabric8’)》; 编译项目源码 将上图中的源码下载解压,得到一个新的文件夹...10.108.214.207 8080:30700/TCP 4m 查看部署,发现始终未能进入READY状态: [root@minikube kubernetes-hello-world-example...minikube上的pod,配置了探针地址是/health,但是服务中并没有此路径,因此探针检查一直无法通过; 解决问题 搞清楚问题之后就可以动手解决问题了,这里有两种解决方式: 第一种,修改HelloController.java...,对spring-cloud-kubernetes算是有了初步认识,接下来的实战中,我们一起去深入的了解spring-cloud-kubernetes,看看kubernetes上的springcloud

    99030

    spring-cloud-kubernetes的服务发现和轮询实战(含熔断)

    本文是《spring-cloud-kubernetes实战系列》的第四篇,主要内容是在kubernetes上部署两个应用:Web-Service和Account-Service,通过spring-cloud-kubernetes...第一种:沿用上图的方式,将Eureka也部署在kubernetes上,这样的架构和不用kubernetes时没有啥区别; 第二种,就是今天要实战的内容,使用spring-cloud-kubernetes...minikube机器上,确保maven设置正常,然后在pom.xml文件所在目录执行以下命令,即可编译构建工程并部署到kubernetes上: mvn clean install fabric8:deploy...至此,spring-cloud-kubernetes的服务发现和轮询实战(含熔断)就全部完成了,利用API Server提供的信息,spring-cloud-kubernetes将原生的kubernetes...服务带给了SpringCloud应用,帮助传统微服务更好的融合在kubernetes环境中,如果您也在考虑将应用迁移到kubernetes上,希望本文能给您一些参考。

    2.5K50

    Kubernetes Helm使用教程

    什么是Helm 在没使用helm之前,向kubernetes部署应用,我们要依次部署deployment、svc等,步骤较繁琐。...况且随着很多项目微服务化,复杂的应用在容器中部署以及管理显得较为复杂,helm通过打包的方式,支持发布的版本管理和控制,很大程度上简化了Kubernetes应用的部署和管理....chart创建一个Release helm服务端 tiller 安装在Kubernetes集群内的一个应用, 用来执行客户端发来的命令,管理Release 安装Helm客户端 下载期望的版本 # wget...templates目录下的yaml文件中的变量是从values.yaml文件中获取的。 使用命令验证chart配置。该输出中包含了模板的变量配置与最终渲染的yaml文件。...使用第三方chat库 添加fabric8库 # helm repo add fabric8 https://fabric8.io/helm 搜索fabric8提供的工具(主要就是fabric8-platform

    6.3K50

    如何在Service Mesh微服务架构中实现金丝雀发布?

    Kubernetes中的金丝雀(灰度)发布 接下来,先看看在Kubernetes中是如何实现版本更新的。...1.滚动更新 在介绍Kubernetes中的金丝雀(灰度)发布之前,先来了解下Kubernetes中最重要的应用部署方式——“滚动升级”。...在Kubernetes中Deployment还可以通过相应地“滚动升级”策略,来控制Pod的滚动升级行为,以进一步保证服务的连续性。...而对于需要进行金丝雀(灰度)发布的场景,“滚动升级”的方式很显然是不够用的。那么,在Kubernetes中应该如何结合版本更新做到金丝雀(灰度)发布呢?...金丝雀(灰度)发布只是多种部署方式的一种,还有蓝绿部署、滚动部署(如K8s的滚动升级)等,可以根据不同的业务场景选择不同的发布形式。

    1.1K30

    用于在所有级别上构建微服务的29个顶级工具

    Postman Postman是个人开发人员和团队的API开发套件,可让您轻松运行UI驱动的API测试。由于Postman是一个功能强大的HTTP客户端,RESTful API探索变得轻而易举。...通过远程呈现,可以使用混合模型。因此,您的服务编码在您的笔记本电脑上本地完成,同时通过双向代理连接Kubernetes中的服务。不推荐用于生产,但非常适合开发。 12....Kong Kong可以在多个操作环境中安装,它利用大量的读取 - 部署插件来帮助开发和部署微服务。使用Kong,您可以利用微服务和容器设计模式快速构建以API为中心的应用程序。...Kubeless了解Kubernetes的开箱即用资源,还提供自动扩展,API路由,监控和故障排除。...新的开源工具总是在软件世界中引入,所以要留意它们。该资源是开发微服务系统最有用的工具的一个很好的起点,包括使用Kubernetes。然而,开源的本质意味着不久之后将会出现在现场。

    1.6K20

    spring-cloud-kubernetes与k8s的configmap

    实战系列》的第六篇,主要内容是在kubernetes上部署一个java web应用,该应用使用了spring-cloud-kubernetes框架,可以使用kubernetes的configmap; 系列文章列表...,相信您对SpringCloud Config不会陌生,在微服务环境中,业务应用可以从config server获取所需的配置信息,如下图所示: 关于kubernetes的configmap 这是kubernetes...解决权限问题 我这里的是minikube,在部署了应用之后,默认的serviceaccount是没有权限访问K8S的API Server资源的,执行以下命令可以提升权限: kubectl create...,执行以下命令,即可编译构建部署全部完成: mvn clean install fabric8:deploy -Dfabric8.generator.from=fabric8/java-jboss-openjdk8...,仅仅调整了配置和依赖,就能顺利迁移到kubernetes之上,直接使用原生的配置服务,并且SpringCloud Config Server也可以不用在kubernetes上部署了,再次感受到SpringCloud

    3.5K20

    你好spring-cloud-kubernetes

    官方demo运行实战》快速体验官方demo; 实战spring-cloud-kubernetes 今天实战的内容是开发一个简单的java应用,然后将其部署在kubernetes环境(minikube 1.1.1...,主要是添加spring-cloud-kubernetes的依赖,以及使用fabric8来构建和部署; 在application.properties文件中设置应用名称: spring.application.name...接下来我们将应用构建并部署到minikube环境; 编译构建 请确保当前电脑上java、maven、minikube都是正常的; 在pom.xml文件所在目录执行以下命令,即可编译构建部署一次性完成:...所有服务"其实是kubernetes中的所有service: ?...的DiscoveryClient服务将kubernetes中的"service"资源与SpringCloud中的服务对应起来了,有了这个DiscoveryClient,我们在kubernetes环境就不需要

    1.4K31

    与我一起学习微服务架构设计模式12—部署微服务应用

    对于java,每个服务实例作为JVM进程运行。 部署流水线构建可执行的JAR文件并将其自动部署到生产环境。生产环境中,每个服务实例都运行在JVM中。可以在同一台计算机上部署多个服务实例。...调度 选择要运行容器的机器 服务管理 实现命名和版本化服务。确保始终运行所需数量,实现请求负载均衡,实现服务滚动升级、回滚。...Pod是Kubernetes的部署单元,由一组容器组成。 主节点运行的组件: API服务器: 用于部署和管理服务的REST API Etcd 存储集群数据键值的NoSQL数据库。...创建一个Kubernetes服务(Service) 获取服务地址,除了使用客户端发现机制外(Eureka),还可以通过Kubernetes内置的服务发现机制并定义Kubernetes服务(Service...然后Kubernetes对Pod进行滚动升级。 使用服务网格分隔部署与发布流程 服务版本通过预发布环境测试,并非一定可以在生产正常工作。

    1.3K10

    Spring Boot 微服务上容器平台的最佳实践 - 4

    前言 今天开始第四篇, 主要介绍下 几个微服务的部署. 介绍2种方法, 一种是分步的, 构建jar、打镜像、传到镜像库、K8S部署;另一种直接通过Maven + Farbic8 一气呵成。...第二种 Maven Farbic8 直接部署到K8S 部署方式的一些优点: 参数, 变量, 配置可以全局应用. 如: 服务名.......Maven Farbic8 直接部署到K8S 要部署Spring启动服务,使用Maven构建项目,使用openshift配置文件的fabric8:deploy target将构建的镜像部署到openshift...,应该总共有8个运行的pod,包括之前的2个Zipkin pod,以及6个服务中的每一个新的pod: $ oc get pods NAME READY...第一次搜索可能需要更长的时间,所以请等待几秒钟,等待响应. 个人感受 Farbic8 虽然快速, build到部署一气呵成. 但是也因为引入了太多的动作, 导致失败的可能性也增多.

    96540

    k8s实践(1)--k8s集群入门介绍和基础原理

    3、安装k8s集群,简单了解集群的如何工作。 4、搭建集群网络:基础网络搞好,后面才能顺利部署各种资源。 5、学习k8s的安全、Secrets,ssl认证。...8、有了pod和service,就需要知道如果发现,学习coreDNS 9、开始部署一些有状态的服务 10、案例实践 一、Kubernetes简介 1.1 Kubernetes简介 Kubernetes...滚动升级:滚动升级是一种平滑的升级方式,通过逐步替换的策略,保证整体系统的稳定性。...可以查看Deployment的升级详细进度和状态 回滚:当升级Pod的时候如果出现问题,可以使用回滚操作回滚到之前的任一版本 版本记录:每一次对Deployment的操作...这样就引发了一个问题:如果一些Pods(让我们叫它作后台,后端)提供了一些功能供其它的Pod使用(让我们叫作前台),在kubernete集群中是如何实现让这些前台能够持续的追踪到这些后台的?

    1.4K21

    ​Kubernetes 初学者教程:47 个综合指南(持续完善中)

    容器部署假设有几个 Java 应用程序。我们可以将其打包到容器中,并在包含 Docker 引擎或任何容器引擎的服务器上运行它。对于这种情况,没有复杂性。...Kubernetes 有助于扩展应用程序、自我修复和滚动更新,使其非常适合运行容器。微服务部署/编排现在,假设有一个由微服务(API、UI、用户管理、信用卡交易系统等)组成的大型应用程序。...所有这些微服务组件都必须使用 REST API 或其他协议相互通信。由于应用程序有许多组件或微服务,因此我们无法将所有服务部署在一个服务器或容器中。应用程序必须解耦,每个微服务都应该自行部署和扩展。...自动修复容器自动化调度水平和垂直扩缩容滚动应用程序升级和降级,零停机时间Kubernetes 初学者教程为了开始使用 Kubernetes,所有 Kubernetes 初学者的教程按顺序分类到不同的部分...,您将学习如何使用推荐的开源密钥管理工具在 Kubernetes 中管理密钥。

    89620

    Kubernetes知识小普及

    Kubernetes主要功能 基于容器的应用部署、维护和滚动升级 负载均衡和服务发现 跨机器和跨地区的集群调度 自动伸缩 无状态服务和有状态服务 广泛的 Volume 支持 插件机制保证扩展性 Kubernetes...使用Kubernetes只需一个部署文件,使用一条命令就可以部署多层容器(前端,后台等)的完整集群。...还可以按照这样的方式缩小Pod,这个特性在执行滚动升级时很有用。   ...,为这组Pod开启一个对外的服务端口如8000,并且将这些Pod的Endpoint列表加入8000端口的转发列表中,客户端可以通过负载均衡器的对外IP地址+服务端口来访问此服务。...应用 Kubernetes进行蓝绿部署 应用程序更新到一个新版本时,部署功能能够帮您对容器进行滚动更新,若有异常可自动回滚。

    66210

    Kubernetes(一) - Docker管理工具

    ,比如Swarm,Mesos,Kubernetes等等,其中谷歌开源的Kubernetes是作为老大哥的存在,从本节开始将介绍如何打造自己的Kubernetes,并且了解它各个组件的用途 Kubernetes...Kubernetes是为生产环境而设计的容器调度管理系统,对于负载均衡、服务发现、高可用、滚动升级、自动伸缩等容器云平台的功能要求有原生支持。...结合,只需要通过固定的Kube-Service名称就可以访问到对应的容器,不需要独立寻找使用服务发现组件 高可用 - Kube会检查服务的健康状态,会不停尝试重新启动服务,保障正常运行 滚动升级 -...在升级过程中Kube会有规划的挨个容器滚动升级,把升级带来的影响降低到最小 自动伸缩 - 可以配置策略当容器资源使用较高会自动增加一个新的容器来分担压力,当资源使用率降低会回收容器 快速部署 - 使用Kube...Kubernetes设计理念和功能其实就是一个类似Linux的分层架构: 核心层:Kubernetes最核心的功能,对外提供API构建高层的应用,对内提供插件式应用执行环境 应用层:部署(无状态应用

    71130

    开发人员如何理解kubernetes

    概述 在JAVA开发中使用 docker run命令配合上自建的Docker仓库可以很容易部署JAVA服务,但是使用Docker部署应用会有几个问题: 一个docker run 不是部署服务的可靠方法...另一个问题是服务通常不是孤立存在,而是相互依赖的,例如数据库和消息队列。我们通常需要将服务及其依赖项作为一个单元部署或取消部署。 在开发过程中特别好用的方法是使用Docker Compose。...编排框架确保始终运行所需数量的正常实例。它实现请求的负载均衡。编排框架也可以执行服务的滚动升级,并允许你回滚到旧版本。 Kubernetes架构 ?...主节点运行多个组件,包括以下内容: API服务器:用于部署和管理服务的REST API,例如,可被kubectl命令行使用。 Etcd:存储集群数据键值的NoSQL数据库。...Deployment: Deployment : Pod 的声明性规范。Deployment是一个控制器,可确保始终运行所需数量的Pod实例 (服务实例)。它通过滚动升级和回滚来支持版本控制。

    56810
    领券