准备工作依赖2款软件:
centos7安装Docker version 20.10.18和kubectl Version: v4.5.7
docker -v 和 kubectl version --client 查看版本
kubectl常用命令
1 验证kubectl 连接性
kubectl cluster-info
2 查看指定命名空间pods名字
kubectl -n rz-dt get pods
3 根据pods名字查看pod日志
kubectl -n rz-dt logs --tail=20 nginx-85f7fc95c4-5rngk
4 查看应用被映射到节点哪个端口
kubectl -n rz-dt get services
5 删除Deployment|StatefulSet|Pod|Service
kubectl -n rz-dt delete Deployment springboot-k8s
本实例使用阿里云k8s和镜像仓库
<一> 新建文件目录
/usr/local/java/k8s-springboot-demo
上传本地windows项目文件列表到centos如下:
1 /usr/local/java/k8s-springboot-demo/target/k8s-springboot-demo.jar
2 Dockerfile
3 k8s-springboot-demo.yaml
<二> 构建镜像
1 根据Dockerfile制作镜像: docker build -f /usr/local/java/k8s-springboot-demo/Dockerfile -t k8s-springboot-demo/k8s-springboot-demo:2022-11-25-12-07 .
2 指定镜像名称和tag :docker build -t k8s-springboot-demo/k8s-springboot-demo:2022-11-25-12-07 .
3 登录镜像仓库 :docker login --username=aliyun0398513152 rz-dt-image-server-registry.cn-shanghai.cr.aliyuncs.com
4 制作镜像重命名镜像
docker images 查看b66d536c80a9
docker tag b66d536c80a9 rz-dt-image-server-registry.cn-shanghai.cr.aliyuncs.com/rz-dt/k8s-springboot-demo:2022-11-25-12-07
5 上传镜像
docker push rz-dt-image-server-registry.cn-shanghai.cr.aliyuncs.com/rz-dt/k8s-springboot-demo:2022-11-25-12-07
Dockerfile文件内容:
#基础镜像,如果本地仓库没有,会从远程仓库拉取 openjdk:8
FROM openjdk:8
#暴露端口
EXPOSE 8089
#容器中创建目录
RUN mkdir -p /usr/local/cenobitor
#编译后的jar包copy到容器中创建到目录内
COPY target/k8s-springboot-demo.jar /usr/local/cenobitor/k8s-springboot-demo.jar
#指定容器启动时要执行的命令
ENTRYPOINT ["java","-jar","/usr/local/cenobitor/k8s-springboot-demo.jar"]
<三> 发布
3 部署命令
kubectl apply -f k8s-springboot-demo.yaml
k8s-springboot-demo.yaml 文件内容如下:
apiVersion: v1
kind: Service
metadata:
name: k8s-springboot-demo
namespace: rz-dt
labels:
app: k8s-springboot-demo
spec:
type: NodePort
ports:
- port: 8089
nodePort: 30091 #service对外开放端口
selector:
app: k8s-springboot-demo
---
apiVersion: apps/v1
kind: Deployment #对象类型
metadata:
name: k8s-springboot-demo #名称
namespace: rz-dt
labels:
app: k8s-springboot-demo #标注
spec:
replicas: 1 #运行容器的副本数,修改这里可以快速修改分布式节点数量
selector:
matchLabels:
app: k8s-springboot-demo
template:
metadata:
labels:
app: k8s-springboot-demo
spec:
containers: #docker容器的配置
- name: k8s-springboot-demo
image: rz-dt-image-server-registry.cn-shanghai.cr.aliyuncs.com/rz-dt/k8s-springboot-demo:2022-11-25-12-07 # pull镜像的地址 ip:prot/dir/images:tag
imagePullPolicy: IfNotPresent #pull镜像时机,
ports:
- containerPort: 8089 #容器对外开放端口,需与springboot配置文件一致
#从私有仓库拉取镜像凭证
imagePullSecrets:
- name: rz-dt-miyue
pom.xml文件内容如下:
<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.4</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example.demo</groupId>
<artifactId>k8s-springboot-demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>k8s-springboot-demo</name>
<description>k8s-springboot-demo for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<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>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.22</version>
</dependency>
</dependencies>
<build>
<finalName>k8s-springboot-demo</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<excludes>
<exclude>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
<!-- ������Maven��������������������������������?���Docker������ -->
<plugin>
<groupId>com.spotify</groupId>
<!-- ������������������dockerfile-maven-plugin������ -->
<artifactId>dockerfile-maven-plugin</artifactId>
<version>1.4.10</version>
<executions>
<execution>
<id>default</id>
<goals>
<goal>build</goal>
<goal>push</goal>
</goals>
</execution>
</executions>
<configuration>
<!-- Dockerfile������������ ������������-->
<dockerfile>Dockerfile</dockerfile>
<!--��������������? -->
<repository>cenobitor/${project.build.finalName}</repository>
<!-- ������������������ ������������ ���������latest -->
<tag>${project.version}</tag>
<buildArgs>
<!-- ����������������������������������������?����Dockerfile��������������������������? -->
<JAR_FILE>${project.build.finalName}.jar</JAR_FILE>
</buildArgs>
</configuration>
</plugin>
</plugins>
</build>
<repositories>
<repository>
<id>public</id>
<name>aliyun nexus</name>
<url>https://maven.aliyun.com/repository/public</url>
<releases>
<enabled>true</enabled>
</releases>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>public</id>
<name>aliyun nexus</name>
<url>https://maven.aliyun.com/repository/public</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
</project>
项目源码下载:
k8s发布springboot项目服务-Java文档类资源-CSDN下载