springboot開發微服務框架通常使用springcloud全家桶,而整個項目都是容器化的,經過k8s進行編排,而k8s本身也有服務發現機制,因此咱們也能夠拋棄springcloud裏的eureka,而直接使用k8s本身的服務。
# 添加組件html
<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>
注意點
- application.name與k8s的服務名相同,即feign裏的服務名稱
- 必需要開啓@EnableDiscoveryClient註解
- springcloud的配置中心須要和項目在一個namespace裏,即k8s的clusterIp不能跨namespace,若是是多個namespace須要用nodeport模式
- 使用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帳號角色添加權限node
kubectl create clusterrolebinding permissive-binding \ --clusterrole=cluster-admin \ --user=admin \ --user=kubelet \ --group=system:serviceaccounts