k8s部署srs服务
k8s部署srs服务
- 项目需要把srs纳入k8s进行管理,需要通过k8s来部署srs服务
- 然后原本的srs可以支持rtmp与webrtc两种,官网查了部署方式,k8s只有最基本的部署方式
- 于是开始研究k8s部署能够正常推拉流的webrtc版本的srs
-
首先肯定是去官网查有无相关资料
https://ossrs.net/lts/zh-cn/docs/v5/doc/getting-started-k8s -

-
选择通用k8s的配置,点开srs.yaml的配置
apiVersion: v1
kind: ConfigMap
metadata:name: srs-config
data:srs.conf: |-listen 1935;max_connections 1000;daemon off;http_api {enabled on;listen 1985;}http_server {enabled on;listen 8080;}vhost __defaultVhost__ {http_remux {enabled on;}hls {enabled on;hls_dispose 30;}}---apiVersion: apps/v1
kind: Deployment
metadata:name: srs-deploymentlabels:app: srs
spec:replicas: 1selector:matchLabels:app: srstemplate:metadata:labels:app: srsspec:volumes:- name: config-volumeconfigMap:name: srs-configcontainers:- name: srsimage: ossrs/srs:4ports:- containerPort: 1935- containerPort: 1985- containerPort: 8080volumeMounts:- name: config-volumemountPath: /usr/local/srs/conf---apiVersion: v1
kind: Service
metadata:name: srs-service
spec:type: LoadBalancerselector:app: srsports:- name: srs-service-1935-1935port: 1935protocol: TCPtargetPort: 1935- name: srs-service-1985-1985port: 1985protocol: TCPtargetPort: 1985- name: srs-service-8080-8080port: 8080protocol: TCPtargetPort: 8080
- 可以看到包含三个基础配置ConfigMap,srs-deployment,srs-service
- 但如果只是使用rtmp传输,自然是毫无问题,但是如果还需要使用webrtc功能,那只开这些端口是不够的,因为webrtc还需要有8000的udp端口,然后还有webrtc需要的https,配置文件也需要改成webrtc的
端口需要增加,版本也切换为srs5.0
spec:containers:- image: 'ossrs/srs:5'imagePullPolicy: IfNotPresentname: srsports:- containerPort: 1935protocol: TCP- containerPort: 1985protocol: TCP- containerPort: 8080protocol: TCP- containerPort: 8088protocol: TCP- containerPort: 8000protocol: UDP- containerPort: 1990protocol: TCP
然后service的端口也需要增加,然后再按照对外映射的端口来连通就可以了ports:- name: srs-service-1935-1935nodePort: 31935port: 1935protocol: TCPtargetPort: 1935- name: srs-service-1985-1985nodePort: 31985port: 1985protocol: TCPtargetPort: 1985- name: srs-service-8080-8080nodePort: 31080port: 8080protocol: TCPtargetPort: 8080- name: srs-service-1990-1990nodePort: 31990port: 1990protocol: TCPtargetPort: 1990- name: srs-service-8000-8000nodePort: 31800port: 8000protocol: UDPtargetPort: 8000- name: srs-service-8088-8088nodePort: 31808port: 8088protocol: TCPtargetPort: 8088selector:app: srssessionAffinity: Nonetype: LoadBalancer
-
启动完毕后,就可以通过31808端口打开页面
-

-
贴一下yaml文件
apiVersion: apps/v1
kind: Deployment
metadata:name: srs-deploymentnamespace: wzhlabels:app: srs
spec:replicas: 1selector:matchLabels:app: srstemplate:metadata:labels:app: srsspec:volumes:- name: config-volumeconfigMap:name: srs-config- name: ssl-volumepersistentVolumeClaim:claimName: ssl-pvccontainers:- name: srsimage: ossrs/srs:5ports:- containerPort: 1935- containerPort: 1985- containerPort: 8080- containerPort: 8088- containerPort: 8000protocol: UDP- containerPort: 1990 volumeMounts:- name: config-volumemountPath: /usr/local/srs/conf- name: ssl-volumemountPath: /homenodeSelector:wzh: master
apiVersion: v1
kind: Service
metadata:name: srs-servicenamespace: wzh
spec:type: LoadBalancerselector:app: srsports:- name: srs-service-1935-1935nodePort: 31935port: 1935protocol: TCPtargetPort: 1935- name: srs-service-1985-1985nodePort: 31985port: 1985protocol: TCPtargetPort: 1985- name: srs-service-8080-8080nodePort: 31080port: 8080protocol: TCPtargetPort: 8080- name: srs-service-1990-1990nodePort: 31990port: 1990protocol: TCPtargetPort: 1990- name: srs-service-8000-8000nodePort: 31800port: 8000protocol: UDPtargetPort: 8000- name: srs-service-8088-8088nodePort: 31808port: 8088protocol: TCPtargetPort: 8088
- 还有config的配置文件
listen 1935;
max_connections 1000;
daemon off;
srs_log_tank console;http_api {enabled on;listen 1985;https {enabled on;listen 1990;key /home/server.key;cert /home/server.crt;}
}
stats {network 0;
}
http_server {enabled on;listen 8080;dir ./objs/nginx/html;https {enabled on;listen 8088;key /home/server.key;cert /home/server.crt;}
}
rtc_server {enabled on;listen 8000; # UDP port# @see https://ossrs.net/lts/zh-cn/docs/v4/doc/webrtc#config-candidatecandidate 192.168.30.7:31800;
}
vhost __defaultVhost__ {hls {enabled on;}http_remux {enabled on;mount [vhost]/[app]/[stream].flv;}rtc {enabled on;# @see https://ossrs.net/lts/zh-cn/docs/v4/doc/webrtc#rtmp-to-rtcrtmp_to_rtc on;# @see https://ossrs.net/lts/zh-cn/docs/v4/doc/webrtc#rtc-to-rtmprtc_to_rtmp on;}
}
相关文章:
k8s部署srs服务
k8s部署srs服务 项目需要把srs纳入k8s进行管理,需要通过k8s来部署srs服务然后原本的srs可以支持rtmp与webrtc两种,官网查了部署方式,k8s只有最基本的部署方式于是开始研究k8s部署能够正常推拉流的webrtc版本的srs 首先肯定是去官网查有无相关…...
使用Java分割PDF文件
在Java中,我们可以使用iText库来处理PDF文件。iText是一个流行的Java库,用于创建和处理PDF文件。在本篇博客中,我们将介绍如何使用Java分割一个PDF文件为多个小的PDF文件。 1. 引入iText依赖 首先,我们需要在项目中引入iText库的…...
LLM时代中的分布式AI
深度学习相较传统机器学习模型,对算力有更高的要求。尤其是随着深度学习的飞速发展,模型体量也不断增长。于是,前几年,我们看到了芯片行业的百家争鸣和性能指标的快速提升。正当大家觉得算力问题已经得到较大程度的缓解时…...
Zinx框架-游戏服务器开发003:架构搭建-需求分析及TCP通信方式的实现
文章目录 1 项目总体架构2 项目需求2.1 服务器职责2.2 消息的格式和定义 3 基于Tcp连接的通信方式3.1 通道层实现GameChannel类3.1.1 TcpChannel类3.1.2 Tcp工厂类3.1.3 创建主函数,添加Tcp的监听套接字3.1.4 代码测试 3.2 协议层与消息类3.2.1 消息的定义3.2.2 消息…...
如何使用Pyarmor保护你的Python脚本
目录 一、Pyarmor简介 二、使用Pyarmor保护Python脚本 1、安装Pyarmor 2、创建Pyarmor项目 3、添加Python脚本 4、配置执行环境 5、生成保护后的脚本 三、注意事项与未来发展 四、未来发展 五、总结 本文深入探讨了如何使用Pyarmor工具保护Python脚本。Pyarmor是一个…...
【c++】搜索二叉树的模拟实现
搜索二叉树的模拟实现 k模型完整代码 #pragma once namespace hqj1 {template<class K>struct SBTreeNode{public://这里直接用匿名对象作为缺省参数SBTreeNode(const K& key K()):_key(key), _cleft(nullptr), _cright(nullptr){}public:K _key;SBTreeNode* _cle…...
Kubeadm - K8S1.20 - 高可用集群部署(博客)
这里写目录标题 Kubeadm - K8S1.20 - 高可用集群部署一.环境准备1.系统设置 二.所有节点安装docker三.所有节点安装kubeadm,kubelet和kubectl1.定义kubernetes源2.高可用组件安装、配置 四.部署K8S集群五.问题解决1.加入集群的 Token 过期2.master节点 无法部署非系…...
515. 在每个树行中找最大值
描述 : 给定一棵二叉树的根节点 root ,请找出该二叉树中每一层的最大值。 题目 : LeetCode 在每个树行中找最大值 : 515. 在每个树行中找最大值 分析 : 这里其实就是在得到一层之后使用一个变量来记录当前得到的最大值 , 懂了前面的几道这就是小菜 解析 : /…...
基于springboot+vue的图书馆管理系统
图书馆管理系统 springboot32阿博图书馆管理系统 源码合集: www.yuque.com/mick-hanyi/javaweb 源码下载:博主私 摘 要 随着社会的发展,计算机的优势和普及使得阿博图书馆管理系统的开发成为必需。阿博图书馆管理系统主要是借助计算机&…...
诊断刷写流程中使用到的诊断服务
10 01:诊断刷写完成后让目标ECU重置或让整车网络中其他ECU切换回默认会话 10 02:设置外部编程请求标志位或切换到编程会话(诊断刷写需要在编程会话下进行) 10 03:让目标ECU切换到扩展会话,以便进行其他诊断…...
pytorch 中 nn.Conv2d 解释
1. pytorch nn.Con2d 中填充模式 torch.nn.Conv2d(in_channels, out_channels, kernel_size, stride1, padding0, dilation1, groups1, biasTrue, padding_mode‘zeros’, deviceNone, dtypeNone) 1.1 padding 参数的含义 首先 ,padd N, 代表的是 分别在 上下&…...
漏刻有时百度地图API实战开发(2)文本标签显示和隐藏的切换开关
项目说明 在百度地图开发的过程中,如果遇见大数据量POI标注展示或在最佳视野展示时,没有文本标签,会不清楚具体标注的代表的意义;如果同时显示大量的文本标签,又会导致界面杂乱且无法清晰查看,因此&#x…...
Flink往Starrocks写数据报错:too many filtered rows
Bug信息 Caused by: com.starrocks.data.load.stream.exception.StreamLoadFailException: {"TxnId": 2711690,"Label": "cd528707-8595-4a35-b2bc-39b21087d6ec","Status": "Fail","Message": "too many f…...
python-re模块
python之正则表达式-基础匹配https://blog.csdn.net/Python_1981/article/details/133777795python之正则表达式-元字符匹配https://blog.csdn.net/Python_1981/article/details/133778805 一、查找 1、findall 2、search 如果没有匹配到,会返回None, 使用group会报…...
SSM之spring注解式缓存redis
🎬 艳艳耶✌️:个人主页 🔥 个人专栏 :《Spring与Mybatis集成整合》《Vue.js使用》 ⛺️ 越努力 ,越幸运。 1.Redis与SSM的整合 1.1.添加Redis依赖 在Maven中添加Redis的依赖 <redis.version>2.9.0</redis.…...
jmeter压测问题分析
1、 目录 1、jmeter压测java.net.BindException: Address already in use: connect问题处理: 2、jmeter压测:java.net.SocketException: Socket closed: : 之前未勾选same user on each iteration中报问题java.net.BindExcept…...
threejs CSS3DRenderer添加标签并设置朝向摄像机
一.由于CSS3DRenderer 是附加组件,必须显式导入 import { CSS3DRenderer, CSS3DObject } from three/examples/jsm/renderers/CSS3DRenderer.js;二.CSS3DRenderer特点 CSS3D不面向摄像机,会跟随场景缩放,不被模型遮挡,通过DOM事…...
基于若依的ruoyi-nbcio流程管理系统仿钉钉流程json转bpmn的flowable的xml格式(简单支持发起人与审批人的流程)续
更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码: https://gitee.com/nbacheng/ruoyi-nbcio 演示地址:RuoYi-Nbcio后台管理系统 之前生产的xml,在bpmn设计里编辑有些内容不正确,包括审批人,关联表单等…...
虚幻引擎:如何进行关卡切换?
一丶非无缝切换 在切换的时候会先断开连接,等创建好后才会链接,造成体验差 蓝图中用到的节点是 Execute Console Command 二丶无缝切换 链接的时候不会断开连接,中间不会出现卡顿,携带数据转换地图 1.需要在gamemode里面开启无缝漫游,开启之后使用上面的切换方式就可以做到无缝…...
工具类xxxUtil从application.properties中读取参数
一.原因 编写一个服务类的工具类,想做成一个灵活的配置,各种唯一code想从配置文件中读取,便有了这个坑。 二.使用value获取值为null, 这是因为这个工具类没有交给spring boot 来管理,导致每次都是new 一个新的,所以每…...
【网络】每天掌握一个Linux命令 - iftop
在Linux系统中,iftop是网络管理的得力助手,能实时监控网络流量、连接情况等,帮助排查网络异常。接下来从多方面详细介绍它。 目录 【网络】每天掌握一个Linux命令 - iftop工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景…...
在HarmonyOS ArkTS ArkUI-X 5.0及以上版本中,手势开发全攻略:
在 HarmonyOS 应用开发中,手势交互是连接用户与设备的核心纽带。ArkTS 框架提供了丰富的手势处理能力,既支持点击、长按、拖拽等基础单一手势的精细控制,也能通过多种绑定策略解决父子组件的手势竞争问题。本文将结合官方开发文档,…...
centos 7 部署awstats 网站访问检测
一、基础环境准备(两种安装方式都要做) bash # 安装必要依赖 yum install -y httpd perl mod_perl perl-Time-HiRes perl-DateTime systemctl enable httpd # 设置 Apache 开机自启 systemctl start httpd # 启动 Apache二、安装 AWStats࿰…...
基于当前项目通过npm包形式暴露公共组件
1.package.sjon文件配置 其中xh-flowable就是暴露出去的npm包名 2.创建tpyes文件夹,并新增内容 3.创建package文件夹...
Java - Mysql数据类型对应
Mysql数据类型java数据类型备注整型INT/INTEGERint / java.lang.Integer–BIGINTlong/java.lang.Long–––浮点型FLOATfloat/java.lang.FloatDOUBLEdouble/java.lang.Double–DECIMAL/NUMERICjava.math.BigDecimal字符串型CHARjava.lang.String固定长度字符串VARCHARjava.lang…...
JVM暂停(Stop-The-World,STW)的原因分类及对应排查方案
JVM暂停(Stop-The-World,STW)的完整原因分类及对应排查方案,结合JVM运行机制和常见故障场景整理而成: 一、GC相关暂停 1. 安全点(Safepoint)阻塞 现象:JVM暂停但无GC日志,日志显示No GCs detected。原因:JVM等待所有线程进入安全点(如…...
ip子接口配置及删除
配置永久生效的子接口,2个IP 都可以登录你这一台服务器。重启不失效。 永久的 [应用] vi /etc/sysconfig/network-scripts/ifcfg-eth0修改文件内内容 TYPE"Ethernet" BOOTPROTO"none" NAME"eth0" DEVICE"eth0" ONBOOT&q…...
重启Eureka集群中的节点,对已经注册的服务有什么影响
先看答案,如果正确地操作,重启Eureka集群中的节点,对已经注册的服务影响非常小,甚至可以做到无感知。 但如果操作不当,可能会引发短暂的服务发现问题。 下面我们从Eureka的核心工作原理来详细分析这个问题。 Eureka的…...
短视频矩阵系统文案创作功能开发实践,定制化开发
在短视频行业迅猛发展的当下,企业和个人创作者为了扩大影响力、提升传播效果,纷纷采用短视频矩阵运营策略,同时管理多个平台、多个账号的内容发布。然而,频繁的文案创作需求让运营者疲于应对,如何高效产出高质量文案成…...
【JVM】Java虚拟机(二)——垃圾回收
目录 一、如何判断对象可以回收 (一)引用计数法 (二)可达性分析算法 二、垃圾回收算法 (一)标记清除 (二)标记整理 (三)复制 (四ÿ…...
