k8s部署nacos 2.x集群 springBoot 连接nacos时gRPC连接问题解决办法

k8s部署nacos 2.x集群 springBoot 连接nacos时gRPC连接问题解决办法

一、nacos 2.x 端口

8848 服务端口

9848 服务端访问服务端gRPC端口

9849 客户端访问服务端gRPC端口(这个端口是springBoot中nacos client报错的主要原因)

二、springBoot 、springCloud、 springCloudAlibaba版本匹配

一定要选择匹配的版本,常见的各种错误大多来自不匹配的版本依赖。

SpringBoot、Spring Cloud Alibaba 版本关系

Spring Boot VersionSpring Cloud Alibaba VersionSpring Cloud Version
3.0.22022.0.0.0Spring Cloud 2022.0.0
3.0.22022.0.0.0-RC2Spring Cloud 2022.0.0
3.0.02022.0.0.0-RC1Spring Cloud 2022.0.0
2.6.132021.0.5.0Spring Cloud 2021.0.5
2.6.112021.0.4.0Spring Cloud 2021.0.4
2.6.32021.0.1.0Spring Cloud 2021.0.1
2.4.22021.1Spring Cloud 2020.0.1
2.3.12.RELEASE2.2.10-RC1Spring Cloud Hoxton.SR12
2.3.12.RELEASE2.2.9.RELEASESpring Cloud Hoxton.SR12
2.3.12.RELEASE2.2.8.RELEASESpring Cloud Hoxton.SR12
2.3.12.RELEASE2.2.7.RELEASESpring Cloud Hoxton.SR12
2.3.2.RELEASE2.2.6.RELEASESpring Cloud Hoxton.SR9
2.2.5.RELEASE2.2.1.RELEASESpring Cloud Hoxton.SR3
2.2.X.RELEASE2.2.0.RELEASESpring Cloud Hoxton.RELEASE
2.1.13.RELEASE2.1.4.RELEASESpring Cloud Greenwich.SR6
2.1.X.RELEASE2.1.2.RELEASESpring Cloud Greenwich
2.0.X.RELEASE2.0.4.RELEASE(停止维护,建议升级)Spring Cloud Finchley
1.5.X.RELEASE1.5.1.RELEASE(停止维护,建议升级)Spring Cloud Edgware

Spring Cloud Alibaba 最佳版本匹配

Spring Cloud Alibaba VersionSentinel VersionNacos VersionRocketMQ VersionDubbo VersionSeata Version
2022.0.0.01.8.62.2.14.9.4~停止维护1.7.0
2022.0.0.0-RC21.8.62.2.14.9.4~停止维护1.7.0-native-rc2
2021.0.5.01.8.62.2.04.9.4~停止维护1.6.1
2.2.10-RC11.8.62.2.04.9.4~停止维护1.6.1
2022.0.0.0-RC11.8.62.2.1-RC4.9.4~停止维护1.6.1
2.2.9.RELEASE1.8.52.1.04.9.4~停止维护1.5.2
2021.0.4.01.8.52.0.44.9.4~停止维护1.5.2
2.2.8.RELEASE1.8.42.1.04.9.3~停止维护1.5.1
2021.0.1.01.8.31.4.24.9.2~停止维护1.4.2
2.2.7.RELEASE1.8.12.0.34.6.12.7.131.3.0
2.2.6.RELEASE1.8.11.4.24.4.02.7.81.3.0
2021.1 or 2.2.5.RELEASE or 2.1.4.RELEASE or 2.0.4.RELEASE1.8.01.4.14.4.02.7.81.3.0
2.2.3.RELEASE or 2.1.3.RELEASE or 2.0.3.RELEASE1.8.01.3.34.4.02.7.81.3.0
2.2.1.RELEASE or 2.1.2.RELEASE or 2.0.2.RELEASE1.7.11.2.14.4.02.7.61.2.0
2.2.0.RELEASE1.7.11.1.44.4.02.7.4.11.0.0
2.1.1.RELEASE or 2.0.1.RELEASE or 1.5.1.RELEASE1.7.01.1.44.4.02.7.30.9.0
2.1.0.RELEASE or 2.0.0.RELEASE or 1.5.0.RELEASE1.6.31.1.14.4.02.7.30.7.1

推荐maven依赖 最佳匹配

nacos服务端 与 nacos client 版本需要一致,不建议使用不同版本的nacos client去连接服务端。

在这里插入图片描述在这里插入图片描述

nacos 2.1.0 使用如下版本
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
        <!-- 最佳版本搭配!! 不要随意更改版本  -->
        <spring-boot-version>2.3.12.RELEASE</spring-boot-version>
        <spring-cloud>Hoxton.SR12</spring-cloud>
        <spring-cloud-alibaba-version>2.2.8.RELEASE</spring-cloud-alibaba-version>

        <sentinel-version>1.8.4</sentinel-version>
        <nacos-version>2.1.0</nacos-version>
        <rocketmq-version>4.9.3</rocketmq-version>
        <seata.version>1.5.1</seata.version>
    </properties>

nacos 2.2.0 使用如下版本
        <spring-boot-version>2.6.13</spring-boot-version>
        <spring-cloud>2021.0.5</spring-cloud>
        <spring-cloud-alibaba-version>2021.0.6.0</spring-cloud-alibaba-version>
(其他版本可自行按查找匹配)
<dependencyManagement>
        <!--spring boot  版本控制-->
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${spring-boot-version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <!--spring cloud 版本管理  -->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <!-- spring cloud alibaba 版本管理 -->
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>${spring-cloud-alibaba-version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

三、kubenetes 部署注意事项

因为nacos 2.x client 需要连接默认8848端口还要连接gRPC端口9849 ,因此这是容易忽略的地方。在k8s部署nacos时注意将这辆个端口开放出来。
1.开发阶段使用如下方法开放端口8848->30848 9848->30848
2.开发阶段修改springBoot bootstrap.yml配置文件

k8s 创建 service 指定开放端口

---
apiVersion: v1
kind: Service
metadata:
  name: nacos-headless
  namespace: nacos
  labels:
    app: nacos-headless
spec:
  type: NodePort
  # 服务端口
  ports:
    - name: server
      # k8s内部访问端口
      port: 8848
      # pod端口
      targetPort: 8848
      #用于本地开发,外部访问
      nodePort: 30848
    #服务端gRPC->服务端
    - port: 9848
      name: client-rpc
      targetPort: 9848
      #用于本地开发,外部访问
      nodePort: 31848
    #客户端gRPC->服务端
    - port: 9849
      name: raft-rpc
      targetPort: 9849
      #用于本地开发,外部访问
      nodePort: 30849
    ## 兼容1.4.x版本的选举端口
    - port: 7848
      name: old-raft-rpc
      targetPort: 7848
  selector:
    app: nacos

springBoot 连接nacos 服务端口和gRPC端口

spring:
  cloud:
    nacos:
      discovery:
        # 30848 指向k8s内部8848
        server-addr: 192.168.19.17:30848
        # 30849 指向k8s内部8849 
        grpc-port: 30849
        username: nacos
        password: nacos
      config:
        server-addr: ${spring.cloud.nacos.discovery.server-addr}
        username: ${spring.cloud.nacos.discovery.username}
        password: ${spring.cloud.nacos.discovery.password}
        file-extension: yml
  profiles:
    active: dev
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.context.config.annotation.RefreshScope;

@RefreshScope
@EnableDiscoveryClient
@SpringBootApplication
public class DemoApplication {    
    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
   
}

确保nacos 集群正常运行

在这里插入图片描述
在这里插入图片描述

检查service 端口正确开放

在这里插入图片描述

确认springBoot 配置正确

在这里插入图片描述

启动项目

在这里插入图片描述

检查nacos 是否有服务注册

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值