在阿里云K8S容器中,部署websocket应用程序的总结

一、背景

有一个websocket应用程序,使用spring boot框架开发,http端口号是6005,提供的是websocket服务,所以它还监听一个8889端口的tcp协议。

现在要把它部署到阿里云的k8s容器里,本文着重描述service层的配置。

因为本应用程序对外提供的服务协议是tcp,所以访问链路相对http应用程序更简单,没有经过api网关,甚至也没有域名解析。

二、架构图

在这里插入图片描述

在这里插入图片描述

1、NodePort类型的service

http协议不对外提供服务,这里的端口号是6005。

apiVersion: v1
kind: Service
metadata:name: channel-service-graynamespace: java-service
spec:ipFamilies:- IPv4ipFamilyPolicy: SingleStackports:- name: channel-service-grayport: 6005protocol: TCPtargetPort: 6005selector:app: channel-service-graysessionAffinity: Nonetype: NodePort

在这里插入图片描述

  • consul的健康检测,依赖于http端口号6005
    在这里插入图片描述

2、外网Service

填写alicloud-loadbalancer-id为具体值。

在这里插入图片描述

apiVersion: v1
kind: Service
metadata:annotations:service.beta.kubernetes.io/alicloud-loadbalancer-force-override-listeners: 'true'service.beta.kubernetes.io/alicloud-loadbalancer-id: lb-xxxxxxxxxxfinalizers:- service.k8s.alibaba/resourcesname: channel-gray-out-8888namespace: java-service
spec:ipFamilies:- IPv4ipFamilyPolicy: SingleStackports:- name: channel-gray-out-8888port: 8888protocol: TCPtargetPort: 8889selector:app: channel-service-graysessionAffinity: Nonetype: LoadBalancer

在这里插入图片描述

3、内网Service

与上类同,差异点是不同的slb。

apiVersion: v1
kind: Service
metadata:annotations:service.beta.kubernetes.io/alicloud-loadbalancer-force-override-listeners: 'true'service.beta.kubernetes.io/alicloud-loadbalancer-id: lb-xxxxxxxxxfinalizers:- service.k8s.alibaba/resourcesname: channel-gray-inner-8888namespace: java-service
spec:ipFamilies:- IPv4ipFamilyPolicy: SingleStackports:- name: channel-gray-inner-8888port: 8888protocol: TCPtargetPort: 8889selector:app: channel-service-graysessionAffinity: Nonetype: LoadBalancer

在这里插入图片描述

三、内外网SLB

通过上面的service,将在slb自动建立监听。

  • 外网SLB
    在这里插入图片描述

  • 内网SLB

在这里插入图片描述

四、总结

你需要新建三个service,一般我们只有一个就足够使用了。

你需要区分内网还是外网SLB,这是因为我们外层没有api网关和域名,提供的是tcp协议。

下一篇我们想要说一说阿里云slb的一个大坑,很深很深的坑。。。

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

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

相关文章

深度解析GoLand map原理及实现,手撕源码!(一)——基本介绍,初始化,读

深度解析GoLand map原理及实现,手撕源码!(一)——基本介绍,初始化,读 一、map(1) map的初始化:(2) map的基本方法:(3) map的核心原理(4) map源码详解4.1 结构体4.1.1 hmap4.1.2 mape…

《intel开发手册卷1》学习笔记1

1、操作模式 IA-32架构支持三种基本操作模式:保护模式、实地址模式和系统管理模式。操作模式决定了哪些指令和体系结构功能是可访问的: 1)保护模式:该模式是处理器的自然状态。保护模式的功能之一是能够在受保护的多任务环境中直接执行“实地址模式”80…

Mac 电脑安装 Raptor 流程图软件的方法

0. 安装逻辑 (1)运行 raptor,本质上需要 mac 能够运行 windows 程序,因此需要安装 .NET Runtime 7.0,这是微软程序运行必须的文件。 (2)运行 raptor 还需要安装依赖文件 mono-libgdiplus。 &am…

RabbitMQ - 以 MQ 为例,手写一个 RPC 框架 demo

目录 前言 一、再谈自定义应用层协议 二、再谈 BrokerServer 三、再谈 Connection、Channel 四、Demo a)启动服务器 b)客户端连接 前言 本篇文章来自于笔者之前写过的一个系列 —— “根据源码,模拟实现 RabbitMQ” 系列&#xff0c…

Linux-笔记 常用命令

(持续更新) 1、压缩: tar -vcjf test1.tar.bz2 test1 tar -vczf test1.tar.gz test1 2、解压 tar -vxjf test1.tar.bz2 tar -vxzf test2.tar.gz 3、查找 find [路径] [参数] [文件名] : find / -name test* grep [参数] 关键字 路径&a…

JS中数组去重的几种方法

在JavaScript中,有多种方法可以实现数组去重。以下是一些常见的方法: 1,使用ES6的Set数据结构 Set数据结构只允许存储唯一的值(无论是原始值或者是对象引用),因此是数组去重的理想选择。 let arr [1, 2…

CentOs9编译C指令报错的一种解决方案

今天使用centos9编译c代码时,显示bash: gcc: command not found... 下图是我的报错页面,依据提示信息安装gcc之后依旧显示失败 找到其中一种解决方式,完美解决,供参考 输入以下指令更新软件包列表,这里需要等待几分…

MT3031 AK IOI

思路:把每个节点存到堆(大根堆)里。 如果节点放入后总时间没有超过m则放入堆中;如果总时间超过了,就看堆头元素是否比新元素大。如果大,则删除堆头(反悔贪心)。 注意别忘记开long l…

keystone学习小结

1 keystone middleware 1.1 工作流程 middleware在客户端和服务端之间,会拦截客户端请求并判断请求身份是否是正确合法的,若是,则继续将请求发给其他middleware或app 具体看,干了这些事 1将请求里的auth header去除&#xff0c…

毕业论文画图软件推荐

给大家分享了一些毕业论文画图软件,仅供参考! 1.Microsoft visio 推荐指数:⭐️⭐️⭐️⭐️ ✅优点: -功能真的多且强大 -反正功能真的挺全的比较细节,但好像没有模板? ❌缺点: -不好安装,需要激活使用 -文件大&…

爬虫:爬取豆瓣电影

文章目录 前言一、pandas是什么?二、使用步骤 1.引入库2.读入数据总结 前言 上篇我们将到如何利用xpath的规则,那么这一次,我们将通过案例来告诉读者如何使用Xpath来定位到我们需要的数据,就算你不懂H5代码是怎么个嵌套或者十分复…

C++新特性-线程

主要内容 thread、condition、mutexatomicfunction、bind使用新特性实现线程池(支持可变参数列表)异常协程其他 1 C11多线程thread 重点: join和detach的使用场景thread构造函数参数绑定c函数绑定类函数线程封装基础类互斥锁mutexconditi…

计算机组成原理网课笔记

无符号整数的表示与运算 带符号整数的表示与运算 原反补码的特性对比 移码

搜狗输入法 PC端 v14.4.0.9307 去广告绿化版.

软件介绍 搜狗拼音输入法作为众多用户计算机配置的必备工具,其功能的全面性已为众所周知,并且以其高效便捷的输入体验受到广大使用者的青睐。然而,该软件在提供便利的同时,其内置的广告元素常常为用户带来一定的干扰。为此&#…

Linux中动态库的用法及优缺点?怎样制作动态库和静态库?

一、什么是gcc gcc的全称是GNU Compiler Collection,它是一个能够编译多种语言的编译器。最开始gcc是作为C语言的编译器(GNU C Compiler),现在除了c语言,还支持C、java、Pascal等语言。gcc支持多种硬件平台. 在 Linux…

PostgreSQL-常用函数和操作符

PostgreSQL 中文社区 PL/pgSQL 是 PostgreSQL 中的一种存储过程语言,它支持许多常用的函数和操作符。下面列举了一些常用的 PL/pgSQL 函数和操作符: 1. 常用函数: RAISE:用于在存储过程中抛出异常。 RAISE EXCEPTION Error oc…

航空电子ARINC818采集卡

ARINC818采集卡是针对航空电子数字视频总线协议(Avionics Digital Video BUS,ADVB)的高性能PCIe视频光纤采集测试设备。ARINC818协议主要应用于机载设备间的实时高清图像传输,目前已经成功应用于多款民用、军用机型当中&#xff0…

渐进淡出背景个人导航页源码(火影版)

渐进淡出背景个人导航页源码&#xff08;火影版&#xff09; 效果图部分源码领取源码下期更新预报 效果图 部分源码 <!DOCTYPE html> <html> <head> <!--小K网 www.xkwo.com --><meta charset"UTF-8"><title>火影版个人主页<…

每日一博 - 闲聊架构设计中的多级缓存设计

文章目录 方法论概述客户端缓存应用层缓存服务层缓存缓存设计的注意事项总结 思维导图戳这里 方法论概述 从客户端到服务层&#xff0c;缓存的应用广泛而重要。通过合理的缓存设计&#xff0c;能够有效地提高系统的性能并降低延迟。 客户端缓存 在客户端层面&#xff0c;浏览…

多模态融合技术现实世界中的挑战与研究进展

在人工智能的诸多领域中&#xff0c;多模态融合技术正逐渐成为连接不同信息源的桥梁。这种技术通过整合来自视觉、听觉、文本等多种模态的数据&#xff0c;旨在提供更为丰富和精确的预测结果。然而&#xff0c;现实世界的数据往往是不完美和不完整的&#xff0c;这给多模态融合…