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

相关推荐
leobertlan4 分钟前
2025年终总结
前端·后端·程序员
面向Google编程27 分钟前
从零学习Kafka:数据存储
后端·kafka
易安说AI1 小时前
Claude Opus 4.6 凌晨发布,我体验了一整晚,说说真实感受。
后端
易安说AI1 小时前
Ralph Loop 让Claude无止尽干活的牛马...
前端·后端
易安说AI1 小时前
用 Claude Code 远程分析生产日志,追踪 Claude Max 账户被封原因
后端
engchina2 小时前
WSL Ubuntu で Kubernetes v1.34.2 + Docker 環境を構築する
ubuntu·docker·kubernetes
JH30732 小时前
SpringBoot 优雅处理金额格式化:拦截器+自定义注解方案
java·spring boot·spring
颜酱3 小时前
图结构完全解析:从基础概念到遍历实现
javascript·后端·算法
Coder_Boy_3 小时前
技术让开发更轻松的底层矛盾
java·大数据·数据库·人工智能·深度学习
invicinble3 小时前
对tomcat的提供的功能与底层拓扑结构与实现机制的理解
java·tomcat