Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/la3rence/kubernetes-springboot-demo
使用 Kubernetes 编排最简单的 Spring Boot 2.x,并与 Redis 做了简单交互。可以学习基础的 Deployment、Pod、Service、Ingress、HPA 用法。Ingress 分支包含了滚动更新的 demo。
https://github.com/la3rence/kubernetes-springboot-demo
cloud-native kubernetes spring-boot
Last synced: about 17 hours ago
JSON representation
使用 Kubernetes 编排最简单的 Spring Boot 2.x,并与 Redis 做了简单交互。可以学习基础的 Deployment、Pod、Service、Ingress、HPA 用法。Ingress 分支包含了滚动更新的 demo。
- Host: GitHub
- URL: https://github.com/la3rence/kubernetes-springboot-demo
- Owner: la3rence
- Created: 2020-11-04T08:27:53.000Z (about 4 years ago)
- Default Branch: master
- Last Pushed: 2024-10-24T14:39:18.000Z (23 days ago)
- Last Synced: 2024-10-25T18:45:03.046Z (22 days ago)
- Topics: cloud-native, kubernetes, spring-boot
- Language: Java
- Homepage: https://lawrenceli.me/blog/k8s-note
- Size: 80.1 KB
- Stars: 9
- Watchers: 2
- Forks: 7
- Open Issues: 10
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
[![codecov](https://codecov.io/gh/Lonor/kubernetes-springboot-demo/branch/master/graph/badge.svg?token=VMFJJQWK15)](https://codecov.io/gh/Lonor/kubernetes-springboot-demo)
[![Maven Test](https://github.com/Lonor/kubernetes-springboot-demo/actions/workflows/ci.yaml/badge.svg)](https://github.com/Lonor/kubernetes-springboot-demo/actions/workflows/ci.yaml)# 基于 Kubernetes 编排的 Spring Boot (Redis) 应用
## 环境准备
- Docker 19
- Kubernetes 1.19## 本地可选步骤
如果要在本地编译并构建 Spring Boot Docker 镜像,需要环境:
- Maven 3
- JDK 8```shell script
mvn clean package
mvn dockerfile:build
docker tag kubernetes-springboot-demo:0.0.2 registry.cn-shanghai.aliyuncs.com/dockerhub2019/spring:0.0.2
```上述步骤可直接跳过。
## 直接部署
创建 Redis 服务的 Deployment。 若本地无镜像则自动从仓库在线拉取:
```shell script
kubectl apply -f redis-deployment.yaml
```查看 Pod 状态:
```shell script
kubectl get pods
```创建 Service,仅在集群内部暴露 Redis 服务:
```shell script
kubectl apply -f redis-service.yaml
```创建 Spring Boot 的 ConfigMap (application.properties):
```shell
kubectl apply -f spring-config.yaml
```创建 Spring Boot 服务的 Deployment。 若本地无镜像则自动从仓库在线拉取:
```shell script
kubectl apply -f spring-deployment.yaml
```创建 Spring Boot 的 Service。且对外暴露 HTTP 服务:
```shell script
kubectl apply -f spring-service.yaml
```查看 Service 状态:
```shell script
kubectl get svc
```伸缩 Spring Boot 副本数量(手动),Service 会自动反向代理以实现负载均衡:
```shell script
kubectl scale deployments/spring-boot --replicas=3
```## 水平自动弹性伸缩
首先确保 Kubernetes 集群中部署了 Metrics Server 来获取 CPU 指标等度量。
你可以使用 `kubectl top pod` 来验证成功与否。Kubernetes 根据 Deployment 定义的 Resource Limit 来发起 Auto Scale, 执行:
```shell script
kubectl autoscale deployment spring-boot --cpu-percent=50 --min=1 --max=5
```或者
```
kubectl apply -f hpa.yaml
```观察此时 Pod 的数量变化。