springcloud~服務發現之k8s服務


springboot開發微服務框架一般使用springcloud全家桶,而整個項目都是容器化的,通過k8s進行編排,而k8s自己也有服務發現機制,所以我們也可以拋棄springcloud里的eureka,而直接使用k8s自己的服務。

添加組件

<dependency>
   <groupId>org.springframework.cloud</groupId>
   <artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
</dependency>
<dependency>
   <groupId>org.springframework.cloud</groupId>
   <artifactId>spring-cloud-starter-kubernetes-ribbon</artifactId>
   <version>0.3.0.RELEASE</version>
</dependency>
<dependency>
   <groupId>org.springframework.cloud</groupId>
   <artifactId>spring-cloud-starter-kubernetes</artifactId>
   <version>0.3.0.RELEASE</version>
</dependency>

注意點

  1. application.name與k8s的服務名相同,即feign里的服務名稱
  2. 必須要開啟@EnableDiscoveryClient注解
  3. springcloud的配置中心需要和項目在一個namespace里,即k8s的clusterIp不能跨namespace,如果是多個namespace需要用nodeport模式
  4. 使用feign時,它的服務同樣需要是同一個namespace下的
spring:
 application:
   name: hello-world-service
 cloud:
   config:
     uri: http://config-server-service #集群內部的端口,需要是一個namespace里的,目前配置中心的端口為80
     fail-fast: true

添加k8s里用戶權限

默認情況下,進行k8s服務調用里會出現用戶權限的錯誤Message: Forbidden!Configured service account doesn't have access. 這時需要為k8s賬號角色添加權限

kubectl create clusterrolebinding permissive-binding \
  --clusterrole=cluster-admin \
  --user=admin \
  --user=kubelet \
  --group=system:serviceaccounts


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM