在阿里云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的一个大坑,很深很深的坑。。。

相关推荐
开发者联盟league13 小时前
maven核心插件介绍
java·maven
编程令我快乐13 小时前
maven中deploy 的流程
java·maven
newerp13 小时前
Go net/http 标准库基础
后端·程序员·go
jaysee-sjc13 小时前
【JavaWeb】Tlias智能学习辅助系统|后端Web实战(登录认证)
java·开发语言·前端·学习·mybatis
南城以南溫暖如初14713 小时前
社区健身小程序开发流程详解:技术选型与实施经验分享
java·经验分享·spring boot·mysql·vue·apache
mONESY13 小时前
React 前端如何不傻等后端接口?
前端·javascript·后端
万维易源13 小时前
免费药品信息查询:用API 读懂常用药
java·前端·数据库·药品信息·药品查询·药品查询api
星火102413 小时前
【LangChain4j系列03】AI Services 高层抽象设计解析
人工智能·后端
wear工程师13 小时前
Java 类初始化到底何时触发?别把加载、连接和 static 执行混在一起
java·jvm
hard_hot13 小时前
RabbitMQ异步下单架构设计
java·rabbitmq·java-rabbitmq