Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >使用k8s容器钩子触发事件

使用k8s容器钩子触发事件

作者头像
sunsky
发布于 2020-08-20 08:53:40
发布于 2020-08-20 08:53:40
1.8K30
代码可运行
举报
文章被收录于专栏:sunskysunsky
运行总次数:0
代码可运行

原文: http://yunke.science/2018/04/15/k8s-hook/

容器生命周期的钩子

Kubernetes容器提供了生命周期钩子。 钩子能使容器感知其生命周期内的事件,并且当相应的生命周期钩子被调用时运行指定的代码。

容器钩子分为两类触发点:容器创建后PostStart和容器终止前PreStop。

PostStart

这个钩子在容器创建后立即执行。 但是,并不能保证钩子将在容器ENTRYPOINT之前运行。 没有参数传递给处理程序。

容器ENTRYPOINT和钩子执行是异步操作。 如果钩子花费太长时间以至于容器不能运行或者挂起, 容器将不能达到running状态

PreStop

这个钩子在容器终止之前立即被调用。 它是阻塞的,意味着它是同步的, 所以它必须在删除容器的调用发出之前完成

如果钩子在执行期间挂起, Pod阶段将停留在running状态并且永不会达到failed状态。

如果PostStart或者PreStop钩子失败, 容器将会被kill。 用户应该使他们的钩子处理程序尽可能的轻量。

钩子处理程序的实现

容器可以通过实现和注册该钩子的处理程序来访问钩子。 可以为容器实现两种类型的钩子处理程序:

  • Exec - 在容器的cgroups和命名空间内执行一个特定的命令,比如pre-stop.sh。 该命令消耗的资源被计入容器。
  • HTTP - 对容器上的特定的端点执行HTTP请求。

在Pod的事件中没有钩子处理程序的日志。 如果一个处理程序因为某些原因运行失败,它广播一个事件。 对于PostStart, 这是FailedPostStartHook事件, 对于PreStop, 这是FailedPreStopHook事件。 你可以通过运行kubectl describe pod <pod_name>来查看这些事件。

定义预启动和预结束事件操作

下面将会创建含有一个容器的Pod,我们将会给这个容器设置预启动和预结束操作。 https://raw.githubusercontent.com/kubernetes/website/master/docs/tasks/configure-pod-container/lifecycle-events.yaml

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
apiVersion: v1
kind: Pod
metadata:
  name: lifecycle-demo
spec:
  containers:
  - name: lifecycle-demo-container
    image: nginx
    lifecycle:
      postStart:
        exec:
          command: ["/bin/sh", "-c", "echo Hello from the postStart handler > /usr/share/message"]
      preStop:
        exec:
          command: ["/usr/sbin/nginx","-s","quit"]

使用 prestop hook 保证服务安全退出

在实际生产环境中使用spring框架,由于服务更新过程中,服务容器被直接终止,部分请求仍然被分发到终止的容器,导致出现500错误,这部分错误的请求数据占比较少,也可以忽略。 考虑添加优雅的终止方式,将错误请求降到最低,直至没有错误出现。

这里介绍 spring cloud 的服务发现组件: Eureka 是一个基于 REST 的服务,作为服务注册中心,用于定位服务来进行中间层服务器的负载均衡和故障转移。 各服务启动时,会向Eureka Server注册自己的信息(IP,端口,服务信息等),Eureka Server会存储这些信息. 微服务启动后,会周期性(默认30秒)的向Eureka Server发送心跳以续约自己的”租期”,并可以从eureka中获取其他微服务的地址信息,执行相关的逻辑。

image

考虑现在eureka server 修改注册实例的状态,暂停服务( InstanceStatus.OUT_OF_SERVICE ),保留一段时间后,再删除服务。

禁用某个服务: curl -X PUT “http://admin:admin@192.168.101.100:8761/eureka/apps/{appName}/{instanceId}/status?value=OUT_OF_SERVICE"

说明:admin:admin是eureka的登录名和密码,如果没有,直接去掉前面这段; instanceId是上面打开的链接显示的服务列表中的标签内容,如:myapp:192.168.1.100:8080

在k8s 中的具体操作:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: NAME-service-deployment
spec:
  replicas: 3
  selector:
    matchLabels:
      app: NAME-service
  template:
    metadata:
      labels:
        app: NAME-service
    spec:
      containers:
      - name: NAME-service
        lifecycle:
          preStop:
            exec:
              command:
                - "/bin/sh"
                - "-c"
                - " \
                  APPLICATION=NAME-service; \
                  APPLICATION_PORT=8016; \
                  curl -s -X PUT http://eureka01-server.domain.com/eureka/apps/${APPLICATION}/$(hostname):${APPLICATION}:${APPLICATION_PORT}/status?value=OUT_OF_SERVICE; \
                  sleep 30; \
                  "

删除了无用的信息,重点关注 lifecycle 首先定义了服务名和端口的环境变量,把这部分单独作为变量,便于不同的服务进行修改。 使用 curl PUT 到eureka 配置状态为 OUT_OF_SERVICE。 配置一个sleep时间,作为服务停止缓冲时间。

参考连接
  1. 容器生命周期的钩子
  2. Pods 的终止
  3. 给容器生命周期设置操作事件
  4. eureka服务禁用

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-09-23 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
3 条评论
热度
最新
很客观,顶了,收藏之
很客观,顶了,收藏之
回复回复点赞举报
java的学习有方向了,再也不用到处撞墙了!
java的学习有方向了,再也不用到处撞墙了!
回复回复点赞举报
这么中肯用心的文字,怎么没人嘞。。谢谢您。Mark了
这么中肯用心的文字,怎么没人嘞。。谢谢您。Mark了
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
RTSP和RTMP协议有什么区别?RTSP为什么常用于安防监控摄像头行业,而视频直播却只使用RTMP推流?
RTSP(Real Time Streaming Protocol)是一种用于控制实时流媒体传输的网络协议。它允许客户端与服务器进行交互,控制流媒体的播放、暂停、停止、倒放、快进等操作。RTSP协议可以用于音频、视频等多种流媒体数据的传输。
csdn博主eguid_1
2024/01/25
5.9K0
视频直播流媒体服务器的http-flv是如何直播的?
我们的流媒体服务器可以输出三种格式的视频流,Http-Flv 就是 http+flv ,将音视频数据封装成FLV格式,然后通过 HTTP 协议传输给客户端。相较于 RTMP 协议,HTTP-FLV 能够好的穿透防火墙,它是基于 HTTP/80 传输,有效避免被防火墙拦截。那么本篇的问题就来了,http-flv是如何直播的?
EasyNVR
2020/04/23
4.7K0
视频直播流媒体服务器的http-flv是如何直播的?
SkeyeRTMPLive多流媒体协议转无插件直播协议(RTMP)解决方案
随着互联网以及科技水平的发展,对于互联网服务,PC不再是唯一选择,智能手机、平板电脑、特定的移动终端等都是可选择的用户终端硬件方式,因此,我们需要一款能将安防协议,电视广播协议以及其他各种格式的流媒体协议接入到互联网上来,通过一种统一格式的协议进行多平台多终端直播。
Openskeye
2023/04/21
3900
关于网络视频流媒体直播/点播服务流程,你要知道的全在这里了!(新手必看)
网络视频直播存在已有很长一段时间,随着移动上下行带宽提升及资费的下调,视频直播被赋予了更多娱乐和社交的属性,人们享受随时随地进行直播和观看。一般来说,网络视频直播的流程可以分为如下几步: 采集 —>处理—>编码和封装—>推流到服务器—>服务器流分发—>播放器流播放。 下面我们逐步来看一下。
EasyNVR
2020/05/08
1.4K0
视频直播| 基础原理篇
一、直播难与易 `直播难`:个人认为要想把直播从零开始做出来,绝对是牛逼中的牛逼,大牛中的大牛,因为直播中运用到的技术难点非常之多, 视频/音频处理,图形处理, 视频/音频压缩,CDN分发,即时通讯等技术,每一个技术都够你学几年的。 `直播易`:已经有各个领域的大牛,封装好了许多牛逼的框架,我们只需要用别人写好的框架, 就能快速的搭建一个直播app,也就是传说中的站在大牛肩膀上编程。 二、直播相关概述 1.一个完整直播app功能 1、`聊天` 私聊、聊天室、点亮、推送、黑名单
進无尽
2018/09/12
7.3K0
视频直播| 基础原理篇
你想知道的直播技术都在这里了
概述 2016年基本上可以说一个直播年,各大互联网挣相进入直播行业,成就了直播技术的发展。之前我们也对直播连麦技术做了一个简单的分析,但是没有从整体上介绍,今天我们就组一个整体的介绍(本文部分资料来源于网络)。 我们先来看看视频直播的5个关键的流程:录制->编码->网络传输->解码->播放。每个环节对于直播的延迟都会产生不同程度的影响,这里重点分析移动设备的情况。针对移动场景总结出直播延迟优化的4个点:网络、协议、编解码、移动终端,达到UCloud直播云实现低延迟、秒开的技术细节。 直播技术分析 UCl
xiangzhihong
2018/02/06
3.3K0
你想知道的直播技术都在这里了
FFmpeg流媒体处理-收流与推流
本文为作者原创,转载请注明出处:https://www.cnblogs.com/leisure_chn/p/10623968.html
叶余
2019/04/19
10.4K1
FFmpeg流媒体处理-收流与推流
直播系统开发之推流及拉流概述
根据直播系统开发协议类型(如RTMP、RTP、RTSP、HTTP等),与服务器建立连接并接收数据;
云豹kj的晨曦
2020/09/21
5.5K0
直播系统开发之推流及拉流概述
关于直播平台开发中流媒体传输,重点干货分享
随着近年来直播行业的飞速发展,直播平台开发的技术日益成熟,直播系统的应用场景也越来越广泛,也离不开流媒体传输的技术支持,本文就主要介绍了当前主流的流媒体传输中推流端及播放端分别需要几步。
云豹短视频嘉兴
2020/12/28
5410
关于直播平台开发中流媒体传输,重点干货分享
视频直播技术干货:一文读懂主流视频直播系统的推拉流架构、传输协议等
本文由蘑菇街前端开发工程师“三体”分享,原题“蘑菇街云端直播探索——启航篇”,有修订。
JackJiang
2022/05/31
5.4K1
视频直播技术干货:一文读懂主流视频直播系统的推拉流架构、传输协议等
直播弱网优化方法
直播平台纷繁杂多,流量入口逐渐从传统PC端过渡至移动端。直播规 模爆发式增长,2016年更是被誉为“直播元年”。以游戏为代表的泛娱乐直播是这一时期直播生态的重要组成部分。2015-2017年,4G技术普及,手机直播由于不受设备、场景等限制开始迅速普及,推动全民直播的出现;同时,由于直播功能的创新、直播平台以及资本的纷纷入局、政策支持,直播行业一度出现“千播大战”局面。期间,政府出台《电子竞技赛事管理暂行规定》等游戏行业相关政策,进一步推动了游戏直播的发展。
视频云直播helper
2022/02/03
6.1K1
直播app平台搭建需要那些技术流程
在直播app平台搭建中,需要才用到非常多的技术手段,例如视频/音频处理,图形处理、视频/音频压缩、CDN分发等,每一个技术都够学好几年的。今天就跟大家介绍一下开发一套视频直播系统,整个流程中所运用到的技术流程大概是哪些。
山东布谷科技
2020/07/21
1.6K0
手把手指点你解决直播卡顿
随着移动直播的兴起,每个人都可以拿起自己的终端设备随时随地的尽情的直播,无论是在家里也好,户外也罢都可以享受其中。但是在直播的过程中你一定遇到过留言一堆卡导致用户体验不佳的经历,你也有遇到过自己的平台用户数因为观看直播卡顿从而转移到对手平台的情况。不过这一切都不是事,在腾讯云可以手把手教你解决直播过程中关于卡顿的一切问题,想知道的可以继续往下看。
高峰-pfgao
2020/11/06
7.2K0
手把手指点你解决直播卡顿
视频直播技术大全、直播架构、技术原理和实现思路方案整理
原文链接:https://blog.csdn.net/zgpeace/article/details/108552358
全栈程序员站长
2022/09/15
5.1K0
视频直播技术大全、直播架构、技术原理和实现思路方案整理
直播软件系统源码,视频直播软件系统开发中的流媒体技术
视频直播软件系统开发,常用的流媒体传输协议有RTMP,RTSP,HLS,HTTP-FLV
布谷鸟小刘
2021/02/03
2.1K0
如何搭建自己的流媒体直播带货系统
首先,你需要选择一台高性能的服务器来承载你的流媒体直播系统。服务器的配置应该能够满足你预计的用户量和带宽需求。
Tinywan
2024/03/02
8270
如何搭建自己的流媒体直播带货系统
直播过程是如何实现的?带你探索直播系统源码的奥秘
自从2013年4G元年以来,移动端的直播行业依靠4G技术的支持蓬勃发展,随着技术瓶颈的突破,直播行业逐渐成为全民娱乐的一种形式,移动直播端的飞速发展促进了直播系统源码的不断开发和更新,如今进入全民直播的时代,很多人还不了解直播系统源码是如何开发的,直播过程究竟是如何实现的。本文就来为大家揭秘直播究竟是怎样呈现到大家面前的。
云豹kj的晨曦
2020/07/22
8520
直播过程是如何实现的?带你探索直播系统源码的奥秘
流媒体及直播相关知识
本文主要讲解流媒体及其直播相关知识,所涉及的知识内容比较浅显,主要是做个简单的了解。
Gnep@97
2023/09/23
7700
流媒体及直播相关知识
一文详解GB28181、RTSP、RTMP
GB28181 即 GB/T28181—2016《公共安全视频监控联网系统信息传输、交换、控制技术要求》。它是公安部提出的公共安全行业标准,在视频监控领域具有重要地位。
音视频牛哥
2024/09/24
5.8K0
一文详解GB28181、RTSP、RTMP
视频直播之基础原理
SDK(Software Development Kit): 软件开发工具包 CDN(Content Delivery Network):内容分发网络
全栈程序员站长
2022/09/15
3.3K0
视频直播之基础原理
推荐阅读
相关推荐
RTSP和RTMP协议有什么区别?RTSP为什么常用于安防监控摄像头行业,而视频直播却只使用RTMP推流?
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验