1. Preparar el proyecto springboot
Puede preparar un proyecto en el sitio web https://start.spring.io/ , aquí como k8s learning, así que prepare una interfaz de acceso simple en el proyecto springboot.
2. Preparación del entorno del servidor
Instalar jdk
1. Actualice el paquete del sistema:
sudo yum update
2. Instale OpenJDK 11:
sudo yum install java-11-openjdk-devel
3. Verifique la instalación de Java:
java -version
4. Configurar variables de entorno
vim /etc/profile
#JAVA_HOME 的内容根据具体安装jdk的路径替换
JAVA_HOME=/usr/lib/jvm/java-11-openjdk
CLASSPATH=$JAVA_HOME/lib/
PATH=$PATH:$JAVA_HOME/bin
export PATH JAVA_HOME CLASSPATH
5. Haz que la variable de entorno surta efecto
source /etc/profile
Instalar Maven
1. Puede descargar la versión 3.5.4 en el sitio web https://dlcdn.apache.org/maven/maven-3/3.5.4/binaries/apache-maven-3.5.4-bin.zip (o https:// maven .apache.org/download.cgi para descargar la versión que necesita), cárguela en el /usr/local/software/
directorio del servidor
2. Instale el comando descomprimir
yum install unzip -y
3. Descomprimir
unzip apache-maven-3.5.4-bin.zip
modificar nombre
mv apache-maven-3.5.4 maven3.5
4. Configurar variables de entorno
vim /etc/profile
JAVA_HOME=/usr/lib/jvm/java-11-openjdk
CLASSPATH=$JAVA_HOME/lib/
PATH=$PATH:$JAVA_HOME/bin
MAVEN_HOME=/usr/local/software/maven3.5
PATH=$PATH:$MAVEN_HOME/bin
export PATH JAVA_HOME CLASSPATH MAVEN_HOME
5. Haz que la variable de entorno surta efecto
source /etc/profile
3. El proyecto springboot compila y empaqueta la ventana acoplable
1. Establezca el nombre del archivo del paquete en demostración y
establezca finalName en el archivo pom en el proyecto springboot
2. Agregue el archivo Dockerfile, el archivo se coloca en el proyecto y directorio bajo
el archivo Dockerfile
FROM adoptopenjdk/openjdk11:jre11u-nightly
ADD target/demo.jar demo.jar
ENTRYPOINT ["java","-jar","/demo.jar"]
3. Cargue el proyecto springboot en el servidor e ingrese el directorio raíz para empaquetar
Ejecutar una orden
mvn clean install
Construye la imagen (no ignores el último punto)
docker build -t demo:1.0 .
Ver lista de espejos
docker images
puesta en marcha
docker run -d -it -p 8080:8080 --name=k8sdemo demo:1.0
4. Empuje de imagen (ejemplo de Alibaba Cloud)
Dirección de acceso a la cuenta de Aliyun
https://cr.console.aliyun.com/
La creación del almacén no se describirá aquí, y Baidu (la versión personal no cobra)
Push almacén espejo privado
#仓库地址根据自己的地址替换
docker login --username=gq570566 registry.cn-shenzhen.aliyuncs.com
#打tag
#docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/fqfff/demo:[镜像版本号]
docker tag ba0652a92214 registry.cn-hangzhou.aliyuncs.com/fqfff/demo:1.0
#推送
#docker push registry.cn-hangzhou.aliyuncs.com/fqfff/demo:[镜像版本号]
docker push registry.cn-hangzhou.aliyuncs.com/fqfff/demo:1.0
#拉取
docker pull registry.cn-hangzhou.aliyuncs.com/fqfff/demo:[镜像版本号]
5. Proyecto SpringBoot de implementación de K8s
crear secreto
#kubectl create secret docker-registry demo-docker-secret --docker-server=registry.cn-hangzhou.aliyuncs.com --docker-username=用户名 --docker-password=登录密码
kubectl create secret docker-registry demo-docker-secret --docker-server=registry.cn-hangzhou.aliyuncs.com --docker-username=gq570566--docker-password=*****
Cree el archivo yaml de k8sdemo-deployment
Cómo generar rápidamente archivos yaml
kubectl create deployment k8sdemo --image=registry.cn-hangzhou.aliyuncs.com/fqfff/demo:1.0 --dry-run=client -o yaml > demo-k8s.yaml
Modificar el número de copias a 2, montar el secreto
apiVersion: apps/v1
kind: Deployment
metadata:
creationTimestamp: null
labels:
app: k8sdemo
name: k8sdemo
spec:
replicas: 2
selector:
matchLabels:
app: k8sdemo
strategy: {
}
template:
metadata:
creationTimestamp: null
labels:
app: k8sdemo
spec:
imagePullSecrets:
- name: demo-docker-secret
containers:
- image: registry.cn-hangzhou.aliyuncs.com/fqfff/demo:1.0
name: demo-k8s
resources: {
}
status: {
}
crear controlador
kubectl apply -f demo-k8s.yaml
Crear servicio, tipo nodePort
kubectl expose deploy k8sdemo --port=8080 --target-port=8080 --type=NodePort
prueba de acceso
ver puerto
kubectl get svc
Nodo de acceso ip+puerto+dirección de interfaz
¡éxito!