1. 使用springboot开发简单程序
程序比较简单,能运行,有返回值即可,以下是程序内容,将程序打包获得web-0.0.1-SNAPSHOT.jar
1.1 pom文件内容
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>web</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>web</name>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.4.RELEASE</version>
<relativePath />
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
1.2 application.yml文件内容
server:
port: 8081
spring:
application:
name: web
1.3 控制层
@RestController
public class HelloController {
@Autowired
private RestTemplate restTemplate;
@GetMapping("/")
public String home() {
return "hello world";
}
}
2. 将程序制作成docker镜像
创建Dockerfile文件,内容如下:
FROM openjdk:8
LABEL description="springboot web"
WORKDIR /app
COPY webapp.jar /app/web-0.0.1-SNAPSHOT.jar
EXPOSE 9001
CMD java -jar /app/web-0.0.1-SNAPSHOT.jar
执行docker build -t webapp .
将创建镜像webapp,因为基于openjdk镜像创建的,镜像已经装好了jdk8,在启动webapp镜像的容器时会执行web-0.0.1-SNAPSHOT.jar这个程序。
3. k8s部署实例
3.1 创建rc
创建文件webapp-rc.yaml,文件内容如下:
apiVersion: v1
kind: ReplicationController
metadata:
name: webapp-rc
spec:
replicas: 2
selector:
name: webapp
template:
metadata:
labels:
name: webapp
spec:
containers:
- name: webapp
image: 192.168.174.128:5000/webapp
ports:
- containerPort: 9001
执行kubectl create -f webapp-rc.yaml
将自动创建pos实例,replicas值表示实例个数
说明:
image: 192.168.174.128:5000/webapp,镜像路径是私有仓库的地址,也可以将镜像webapp上传到docker hub中,然后指向该镜像地址
3.3 创建svc,提供访问pod组的统一访问入口
apiVersion: v1
kind: Service
metadata:
name: webapp-svc1
spec:
ports:
- port: 80
targetPort: 9001
selector:
name: webapp
3.4 访问
因为服务只能在集群内部访问,可以进入某一个pod访问该服务,通过以下命令访问
kubectl exec PODNAME – curl -s http://webapp-svc1