环境准备
minikube 安装,参考minikube k8s 安装详细教程
spring boot demo项目一个
spring boot项目
maven 主要依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
构建主要配置,配置一个打包后的名称:
项目主要内容,一个文件
package net.ifok.demo.k8s;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import java.net.InetAddress;
import java.net.UnknownHostException;
@RestController
@SpringBootApplication
public class DemoK8sApplication {
@GetMapping("/info")
public String getInfo() throws UnknownHostException {
InetAddress addr = InetAddress.getLocalHost();
String address = addr.getHostAddress();
String hostName= addr.getHostName();
return System.getProperty("os.name")+":"+address+":"+hostName;
}
public static void main(String[] args) {
SpringApplication.run(DemoK8sApplication.class, args);
}
}
Get请求,返回一个信息
构建docker镜像
首先将上面的spring boot项目打包为一个jar文件
k8s-boot-app.jar
创建Dockerfile
FROM openjdk:8-alpine
#更新Alpine的软件源为国内(清华大学)
RUN echo "https://mirror.tuna.tsinghua.edu.cn/alpine/v3.4/main/" > /etc/apk/repositories
RUN apk update /
&& apk upgrade /
&& apk add --no-cache bash /
bash-doc /
bash-completion /
&& rm -rf /var/cache/apk/* /
&& /bin/bash
ADD k8s-boot-app.jar /
EXPOSE 8080
CMD ["java","-Xms256M","-Xmx256M","-Duser.timezone=Asia/ShangHai", "-jar", "/k8s-boot-app.jar"]
将dockerfile和项目文件上传到Linux服务器上的一个目录。接下来进行docker镜像构建
sudo docker build -t k8s-boot-app:1.0 ./
构建完成后可以通过命令查看
sudo docker images
编写k8s deployment配置文件
k8s-boot-app-deployment.yml
隐藏内容,登录后查阅
部署spring boot项目到k8s
部署命令:
sudo kubectl create -f ./k8s-boot-app-deployment.yml
查看deployment信息
sudo kubectl get deployments
开放访问端口
sudo kubectl expose deployment k8s-boot-app-deployment --type=NodePort
查看开放端口的服务信息
sudo kubectl get services
查看部署的prod信息
sudo kubectl get pods
查看某个prod的日志信息
sudo kubectl logs -f springboot-k8s-template-deployment-687f8bf86d-lcq5p
提示:springboot-k8s-template-deployment-687f8bf86d-lcq5p 为上面查询到的prod名称
获取访问url地址
sudo minikube service k8s-boot-app-deployment --url
浏览器打开访问接口
查看k8s的仪表盘
deployment信息
prod信息
其他命令:
sudo kubectl create -f ./k8s-boot-app-deployment.yml #部署k8s应用
sudo kubectl get deployments #查看deployment信息
sudo kubectl expose deployment k8s-boot-app-deployment --type=NodePort #开放端口访问
sudo kubectl get services #查看services信息,如端口映射情况
sudo kubectl delete service nginx-service #删除service
sudo kubectl get pods #获取部署的prod列表信息
sudo kubectl logs -f springboot-k8s-template-deployment-687f8bf86d-lcq5p #查看某个pod的日志
sudo minikube service k8s-boot-app-deployment --url #获取访问url
sudo kubectl delete -f ./k8s-boot-app-deployment.yml #删除服务
下一期讲解如何通过服务指定端口访问项目
原创文章,作者:sunnyman218,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/243936.html