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

相关推荐
豆沙沙包?19 分钟前
2025年--Lc194-516. 最长回文子序列(动态规划在字符串的应用,需要二刷)--Java版
java·算法·动态规划
IT_陈寒20 分钟前
Python性能翻倍的5个冷门技巧:从GIL逃逸到内存视图的实战优化指南
前端·人工智能·后端
_extraordinary_20 分钟前
Java Spring配置
java·开发语言·spring
程序员爱钓鱼23 分钟前
Python编程实战 · 基础入门篇 | 第一个Python程序:Hello World
后端·python·编程语言
企鹅侠客24 分钟前
阿里云ACK多个Service绑定单个SLB实践
阿里云·云计算·service·ack
qq_2642208928 分钟前
K8s-Pod控制器
容器
追梦者12332 分钟前
k8s项目实战篇 kubesphere安装
云原生·容器·kubernetes
D11_35 分钟前
在阿里云CentOS服务器上使用Certbot为Nginx配置SSL证书
服务器·阿里云·centos
工业甲酰苯胺1 小时前
Java并发机制的底层实现原理:从CPU到JVM的全面解析
java·jvm·spring
thginWalker1 小时前
使用Spring Boot构建系统监控层
spring boot