前言
spring-cloud-kubernetes是springcloud官方推出的开源项目,用于将Spring Cloud和Spring Boot应用运行在kubernetes环境,并且提供了通用的接口来调用kubernetes服务,GitHub上官方地址是:https://github.com/spring-cloud/spring-cloud-kubernetes
环境安装
安装JDK8
yum install java-1.8.0-openjdk* -y
java -version
安装maven
mkdir /home/work/maven -p
wget http://mirror.bit.edu.cn/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz
tar -zxvf apache-maven-3.6.3-bin.tar.gz
vim /etc/profile
添加以下内容
export M2_HOME=/home/work/maven/apache-maven-3.6.3
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$M2_HOME/bin:$PATH
mvn -v
下载源码
官方demo包含在整个spring-cloud-kubernetes开源项目中,因此要下载整个开源项目,由于主干的提交一直很活跃,因此最好下载个release版本,我这里下载的是v1.0.1.RELEASE,如下图红框所示,地址是:https://github.com/spring-cloud/spring-cloud-kubernetes/releases
修改maven设置
需要事先修改maven的设置,否则编译构建的时候会报错:
- 打开maven的配置文件settings.xml,完整路径是apache-maven-3.6.0/conf/settings.xm;
- 在settings.xml文件内,找到pluginGroups节点,在里面增加两行,修改完成后效果如下:
<pluginGroups>
<pluginGroup>io.fabric8</pluginGroup>
<pluginGroup>org.springframework.boot</pluginGroup>
</pluginGroups>
编译项目源码
将项目中checkstyle的插件去掉
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
</plugin>
将上图中的源码下载解压,得到一个新的文件夹spring-cloud-kubernetes-2.0.0;
mvn clean compile -U
进入目录/spring-cloud-kubernetes-2.0.0/spring-cloud-kubernetes-examples/kubernetes-hello-world-example
,这里面就是官方的入门demo,执行以下命令开始构建并且会部署到minikube:
mvn clean package fabric8:deploy -Pkubernetes
查看服务,已经创建了,类型是NodePort ,并且将8080端口映射到宿主机的30700端口,说明可以用http://宿主机IP:30700来访问此服务:
kubectl get all -o wide
查看项目健康状态
访问 http://192.168.56.123:32554/actuator/health
查看注册上去的节点
执行 curl 192.168.56.123:32554/services
会报错
kubectl logs -f 【podId】
也就是说当前的system:serviceaccount账号是没有权限通过API server访问"services"资源的,此时最快的解决办法是提升账号权限:
kubectl create clusterrolebinding permissive-binding \
--clusterrole=cluster-admin \
--user=admin \
--user=kubelet \
--group=system:serviceaccounts
注意:以上办法只能用于开发和测试环境,不要用在生产环境,在生产环境应该参考Kubernetes的RBAC授权相关设置来处理。
再次访问