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

一、背景

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

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

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

二、架构图

1、NodePort类型的service

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

bash 复制代码
apiVersion: v1
kind: Service
metadata:
  name: channel-service-gray
  namespace: java-service
spec:
  ipFamilies:
    - IPv4
  ipFamilyPolicy: SingleStack
  ports:
    - name: channel-service-gray
      port: 6005
      protocol: TCP
      targetPort: 6005
  selector:
    app: channel-service-gray
  sessionAffinity: None
  type: NodePort
  • consul的健康检测,依赖于http端口号6005

2、外网Service

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

bash 复制代码
apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alicloud-loadbalancer-force-override-listeners: 'true'
    service.beta.kubernetes.io/alicloud-loadbalancer-id: lb-xxxxxxxxxx
  finalizers:
    - service.k8s.alibaba/resources
  name: channel-gray-out-8888
  namespace: java-service
spec:
  ipFamilies:
    - IPv4
  ipFamilyPolicy: SingleStack
  ports:
    - name: channel-gray-out-8888
      port: 8888
      protocol: TCP
      targetPort: 8889
  selector:
    app: channel-service-gray
  sessionAffinity: None
  type: LoadBalancer

3、内网Service

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

bash 复制代码
apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alicloud-loadbalancer-force-override-listeners: 'true'
    service.beta.kubernetes.io/alicloud-loadbalancer-id: lb-xxxxxxxxx
  finalizers:
    - service.k8s.alibaba/resources
  name: channel-gray-inner-8888
  namespace: java-service
spec:
  ipFamilies:
    - IPv4
  ipFamilyPolicy: SingleStack
  ports:
    - name: channel-gray-inner-8888
      port: 8888
      protocol: TCP
      targetPort: 8889
  selector:
    app: channel-service-gray
  sessionAffinity: None
  type: LoadBalancer

三、内外网SLB

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

  • 外网SLB

  • 内网SLB

四、总结

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

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

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

相关推荐
阿华的代码王国16 分钟前
【Android】RecyclerView复用CheckBox的异常状态
android·xml·java·前端·后端
Zyy~16 分钟前
《设计模式》装饰模式
java·设计模式
Jimmy19 分钟前
AI 代理是什么,其有助于我们实现更智能编程
前端·后端·ai编程
A尘埃22 分钟前
企业级Java项目和大模型结合场景(智能客服系统:电商、金融、政务、企业)
java·金融·政务·智能客服系统
AntBlack1 小时前
不当韭菜V1.1 :增强能力 ,辅助构建自己的交易规则
后端·python·pyqt
青云交1 小时前
Java 大视界 -- 基于 Java 的大数据可视化在城市交通拥堵治理与出行效率提升中的应用(398)
java·大数据·flink·大数据可视化·拥堵预测·城市交通治理·实时热力图
CHEN5_021 小时前
【Java基础面试题】Java基础概念
java·开发语言
bobz9651 小时前
pip install 已经不再安全
后端
寻月隐君2 小时前
硬核实战:从零到一,用 Rust 和 Axum 构建高性能聊天服务后端
后端·rust·github
二十雨辰2 小时前
[TG开发]照片机器人
java·web3