k8s部署srs服务

news2024/11/26 1:32:55

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-deployment
  labels:
    app: srs
spec:
  replicas: 1
  selector:
    matchLabels:
      app: srs
  template:
    metadata:
      labels:
        app: srs
    spec:
      volumes:
      - name: config-volume
        configMap:
          name: srs-config
      containers:
      - name: srs
        image: ossrs/srs:4
        ports:
        - containerPort: 1935
        - containerPort: 1985
        - containerPort: 8080
        volumeMounts:
        - name: config-volume
          mountPath: /usr/local/srs/conf

---

apiVersion: v1
kind: Service
metadata:
  name: srs-service
spec:
  type: LoadBalancer
  selector:
    app: srs
  ports:
  - name: srs-service-1935-1935
    port: 1935
    protocol: TCP
    targetPort: 1935
  - name: srs-service-1985-1985
    port: 1985
    protocol: TCP
    targetPort: 1985
  - name: srs-service-8080-8080
    port: 8080
    protocol: TCP
    targetPort: 8080

  • 可以看到包含三个基础配置ConfigMap,srs-deployment,srs-service
  • 但如果只是使用rtmp传输,自然是毫无问题,但是如果还需要使用webrtc功能,那只开这些端口是不够的,因为webrtc还需要有8000的udp端口,然后还有webrtc需要的https,配置文件也需要改成webrtc的
端口需要增加,版本也切换为srs5.0
spec:
  containers:
    - image: 'ossrs/srs:5'
      imagePullPolicy: IfNotPresent
      name: srs
      ports:
        - containerPort: 1935
          protocol: TCP
        - containerPort: 1985
          protocol: TCP
        - containerPort: 8080
          protocol: TCP
        - containerPort: 8088
          protocol: TCP
        - containerPort: 8000
          protocol: UDP
        - containerPort: 1990
          protocol: TCP

然后service的端口也需要增加,然后再按照对外映射的端口来连通就可以了
  ports:
    - name: srs-service-1935-1935
      nodePort: 31935
      port: 1935
      protocol: TCP
      targetPort: 1935
    - name: srs-service-1985-1985
      nodePort: 31985
      port: 1985
      protocol: TCP
      targetPort: 1985
    - name: srs-service-8080-8080
      nodePort: 31080
      port: 8080
      protocol: TCP
      targetPort: 8080
    - name: srs-service-1990-1990
      nodePort: 31990
      port: 1990
      protocol: TCP
      targetPort: 1990
    - name: srs-service-8000-8000
      nodePort: 31800
      port: 8000
      protocol: UDP
      targetPort: 8000
    - name: srs-service-8088-8088
      nodePort: 31808
      port: 8088
      protocol: TCP
      targetPort: 8088
  selector:
    app: srs
  sessionAffinity: None
  type: LoadBalancer
  • 启动完毕后,就可以通过31808端口打开页面

  • 在这里插入图片描述

  • 贴一下yaml文件

apiVersion: apps/v1
kind: Deployment
metadata:
  name: srs-deployment
  namespace: wzh
  labels:
    app: srs
spec:
  replicas: 1
  selector:
    matchLabels:
      app: srs
  template:
    metadata:
      labels:
        app: srs
    spec:
      volumes:
      - name: config-volume
        configMap:
          name: srs-config
      - name: ssl-volume
        persistentVolumeClaim:
          claimName: ssl-pvc
      containers:
      - name: srs
        image: ossrs/srs:5
        ports:
        - containerPort: 1935
        - containerPort: 1985
        - containerPort: 8080
        - containerPort: 8088
        - containerPort: 8000
          protocol: UDP
        - containerPort: 1990         
        volumeMounts:
        - name: config-volume
          mountPath: /usr/local/srs/conf
        - name: ssl-volume
          mountPath: /home
      nodeSelector:
        wzh: master
        
apiVersion: v1
kind: Service
metadata:
  name: srs-service
  namespace: wzh
spec:
  type: LoadBalancer
  selector:
    app: srs
  ports:
    - name: srs-service-1935-1935
      nodePort: 31935
      port: 1935
      protocol: TCP
      targetPort: 1935
    - name: srs-service-1985-1985
      nodePort: 31985
      port: 1985
      protocol: TCP
      targetPort: 1985
    - name: srs-service-8080-8080
      nodePort: 31080
      port: 8080
      protocol: TCP
      targetPort: 8080
    - name: srs-service-1990-1990
      nodePort: 31990
      port: 1990
      protocol: TCP
      targetPort: 1990
    - name: srs-service-8000-8000
      nodePort: 31800
      port: 8000
      protocol: UDP
      targetPort: 8000
    - name: srs-service-8088-8088
      nodePort: 31808
      port: 8088
      protocol: TCP
      targetPort: 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-candidate
    candidate       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-rtc
        rtmp_to_rtc on;
        # @see https://ossrs.net/lts/zh-cn/docs/v4/doc/webrtc#rtc-to-rtmp
        rtc_to_rtmp on;
    }
}

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

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

相关文章

在Ansible中编写剧本实现批量服务器安全加固

1.摘要 在上一篇<<初步利用Ansible实现批量服务器自动化管理>>文章中, 我初步实现了通过编写清单和剧本来实现多台服务器的自动化管理,在本章节中, 我将利用Ansible的剧本来实现更实用、更复杂一点的功能, 主要功能包括三个:1.同时在三台服务器中增加IP访问控制,只…

pytorch之relu激活函数

目录 1、relu 2、relu6 3、leaky_relu 4、ELU 5、SELU 6、PReLU 1、relu ReLU&#xff08;Rectified Linear Unit&#xff09;是一种常用的神经网络激活函数&#xff0c;它在PyTorch中被广泛使用。ReLU函数接受一个输入值&#xff0c;如果该值大于零&#xff0c;则返回该…

PolarDB 卷来卷去 云原生低延迟强一致性读 1 (SCC READ 译 )

开头还是介绍一下群&#xff0c;如果感兴趣PolarDB ,MongoDB ,MySQL ,PostgreSQL ,Redis, Oceanbase, Sql Server等有问题&#xff0c;有需求都可以加群群内有各大数据库行业大咖&#xff0c;CTO&#xff0c;可以解决你的问题。加群请联系 liuaustin3 &#xff0c;在新加的朋友…

基于Fuzzing和ChatGPT结合的AI自动化测试实践分享

一、前言 有赞目前&#xff0c;结合insight接口自动化平台、horizons用例管理平台、引流回放平台、页面比对工具、数据工厂等&#xff0c;在研发全流程中&#xff0c;已经沉淀了对应的质量保障的实践经验&#xff0c;并在逐渐的进化中。 在AI能力大幅进步的背景下&#xff0c…

LeetCode 热题100——链表专题(二)

一、环形链表 141.环形链表&#xff08;题目链接&#xff09; 思路&#xff1a;使用快慢指针&#xff0c;慢指针走一步&#xff0c;快指针走俩步&#xff0c;如果是环形链表&#xff0c;那么快慢指针一定相遇&#xff0c;如果不是环形结构那么快指针或者快指针的next一定先为N…

Python 中 Selenium 的 getAttribute() 函数

Selenium 的 Python 模块旨在提供自动化测试过程。 Selenium Python 绑定包括一个用于编写 Selenium WebDriver 功能/验收测试的简单 API。 拥有移动能力并没有多大好处。 我们想要与页面交互&#xff0c;或者更准确地说&#xff0c;与组成页面的 HTML 片段交互。 本文将解释…

基于springboot和vue的校园二手物品交易管理系统

博主24h在线&#xff0c;想要源码文档部署视频直接私聊&#xff0c;全网最低价&#xff0c;9.9拿走&#xff01; 基于VUE的校园二手物品交易管理系统8 1、项目介绍 基于VUE的校园二手物品交易管理系统8拥有两种角色 管理员&#xff1a;闲置物品管理、订单管理、用户管理 用户…

Flink ON Yarn 模式 --- per job mode 与application mode的区别

1、per job mode&#xff1a; 对于yarn-per-job模式调度的过程&#xff1a; 1、资源调度&#xff1a; 1、因为是yarn模式&#xff0c;所以客户端会向ResourceManager申请资源&#xff0c;申请容器负责来启动ApplicationManager 2、此时ResourceManager接受到客户端的请求&#…

阿里开源中间件一览

1. 概述以及竞品对比 间件介绍官方链接竞品竞品介绍异同点对比Dubbo高性能的RPC框架&#xff0c;用于实现分布式服务的调用和管理。DubbogRPC gRPC是由Google开源的一款高性能、通用的RPC框架&#xff0c;支持多种编程语言 链接&#xff1a;gRPC Dubbo更注重于服务治理和可扩展…

1-前端基本知识-JavaScript

1-前端基本知识-JavaScript 文章目录 1-前端基本知识-JavaScript总体概述JS基础JS特点JS组成部分JS的引入方式 JS的数据类型基本数据类型引用数据类型 JS的变量JS的运算符算数运算符复合算数运算符关系运算符逻辑运算符条件运算符位运算符 JS的流程控制语句和函数流程控制-分支…

Git查询某次提交属于哪个分支

在Android studio&#xff08;JetBrains系列也类似&#xff09;左下角&#xff0c;可以看到所有提交信息。 选中某一次提交信息&#xff0c;右键&#xff0c;选择“Copy Revision Number”&#xff0c;如下图&#xff1a; 打开Android studio的Terminal&#xff0c;输入git b…

力扣日记11.7-【二叉树篇】二叉树的层序遍历

力扣日记&#xff1a;【二叉树篇】二叉树的层序遍历 日期&#xff1a;2023.11.7 参考&#xff1a;代码随想录、力扣 102. 二叉树的层序遍历 题目描述 难度&#xff1a;中等 给你二叉树的根节点 root &#xff0c;返回其节点值的 层序遍历 。 &#xff08;即逐层地&#xff0c;…

PYQT5如何实现radio和tabwidget的互相联动,点击radio切换tabwidget

最近开发界面&#xff0c;需要做一个功能&#xff1a;tabwidget下面有两个界面&#xff0c;对应两个radio&#xff0c;在我点击一个radio的时候&#xff0c;底下的页面也会随之跳转。 分为几个步骤&#xff1a; 1、将两个radio独立&#xff0c;就是点其中一个的时候&#xff0c…

-Xms8g -Xmx8g -Xmn3g 生产事故-记一次特殊的OOM排查

-Xms8g -Xmx8g -Xmn3g 生产事故-记一次特殊的OOM排查 事故背景 C公司开发人员向A公司开发人员反映某开放接口从2023年3月10日14时许开始无法访问和使用。该系统为某基础数据接口服务&#xff0c;基于 HTTP 协议进行通信。按照惯例&#xff0c;首先排查网络是否异常&#xff0…

5-Servlet

5-Servlet 文章目录 5-ServletServlet概述补充概念&#xff1a;静态资源和动态资源Servlet简介 Servlet开发流程开发方式1--XML配置步骤1&#xff1a;新建一个module&#xff0c;并将其改为Web类型步骤2&#xff1a;开发一个Java类&#xff0c;名为&#xff1a;UserServlet步骤…

【Spring】使用注解开发前提条件

前提&#xff1a;导入约束&#xff0c;添加注解支持 <?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.springframework.org/schema/beans"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xmlns:con…

浮点数存储

//浮点数存储 int main() {int n 9;//00000000 00000000 00000000 00001001//0 00000000 00000000000000000001001//S E(8bit) M(23bit)//E-126//M0.000000000000000000001001// 0.000000000000000000001001 *2^-126float* pFloat (float*)&n;printf("n的值…

阿里云中的云服务器的ubuntu中的vim没有显示行号

没有行号&#xff1a; 在终端输入命令&#xff1a; vim ~/.vimrc set nu

CRM客户管理系统究竟是什么?如何实施?

很多销售人员都不是特别喜欢使用信息化软件&#xff0c;然而从销售经理的角度看&#xff0c;信息化又的确提升了团队的管理效率和业绩。追究这些矛盾的原因&#xff0c;无外乎几点&#xff1a; 认知角度 → 销售员&#xff1a;数据没用又浪费我时间 VS 销售经理&#xff1a;数…