保证Kubernetes 集群初始化已完成,要验证是否已完成初始化,返回到Dashboard页面查看集群的状态是否为Normal。
Spring Boot部署到Kubernetes
前提条件
Java 8+、Maven、Docker、Kubectl
验证
验证 kubectl能否连接到集群,运行以下命令:
kubectl get nodes
输出如下
NAME STATUS ROLES AGE VERSION 10.77.223.210 Ready <none> 8h v1.11.7+IKS
在正确配置了命令行后,可以开始部署并配置 Spring Boot 应用程序。
部署并运行之前在集群上创建的镜像:
kubectl run storm-tracker --image=us.icr.io/living-on-the-cloud/storm-tracker
此行告知 Kubernetes 运行 --image argument 所定义的名为 storm-tracker 的镜像。
为了能够从外部 IP 访问服务,需要公开该服务,如下所示:
kubectl expose deployment storm-tracker --port=8080 --target-port=8080 --name=storm-tracker-service --type=NodePort
选项说明:
expose 告知 Kubernetes 使资源公开可用。
deployment 是资源类型,在此例中是一个部署。
storm-tracker 是要公开的资源的名称。
--port=8080 是提供服务的端口。
--targetPort=8080 是服务将流量定向到的端口。
要查找已公开的端口,可以要求 Kubernetes 提供创建的 NodePort 的描述:
kubectl describe service storm-tracker-service
输出如下:
Name: storm-tracker-service Namespace: default Labels: run=storm-tracker Annotations: <none> Selector: run=storm-tracker Type: NodePort IP: XXX.XXX.XXX.XXX Port: <unset> 8080/TCP TargetPort: 8080/TCP NodePort: <unset> 30299/TCP Endpoints: XXX.XXX.XXX.XXX:8080 Session Affinity: None External Traffic Policy: Cluster Events: <none>
示例输出中,公开的端口为 30299。
还需要获取 Kubernetes 集群的公共 IP:
ID Public IP Private IP Machine Type State Status Zone Version kube-hou02-paeb33817993d9417f9ad8cfad7fcf270e-w1 184.172.XXX.XXX XXX.XXX.XXX.XXX free normal Ready hou02 1.11.7_1544
使用这些输出的公共 IP 和端口,在
<public IP>:<exposed port>/api/v1/storms
中调用 Spring Boot 应用程序。
项目参考地址:
https://github.com/wkorando/living-on-the-cloud/tree/1-deploying-spring-boot