1. Préparer le projet springboot
Vous pouvez préparer un projet sur le site https://start.spring.io/ , ici en tant qu'apprentissage k8s, alors préparez une interface d'accès simple dans le projet springboot.
2. Préparation de l'environnement serveur
Installer JDK
1. Mettez à jour le package système :
sudo yum update
2. Installez OpenJDK 11 :
sudo yum install java-11-openjdk-devel
3. Vérifiez l'installation de Java :
java -version
4. Configurer les variables d'environnement
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. Faire en sorte que la variable d'environnement prenne effet
source /etc/profile
Installer Maven
1. Vous pouvez télécharger la version 3.5.4 sur le site https://dlcdn.apache.org/maven/maven-3/3.5.4/binaries/apache-maven-3.5.4-bin.zip (ou https:// maven .apache.org/download.cgi pour télécharger la version dont vous avez besoin), téléchargez-la dans le /usr/local/software/
répertoire du serveur
2. Installez la commande unzip
yum install unzip -y
3. Décompressez
unzip apache-maven-3.5.4-bin.zip
modifier le nom
mv apache-maven-3.5.4 maven3.5
4. Configurer les variables d'environnement
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. Faire en sorte que la variable d'environnement prenne effet
source /etc/profile
3. Le projet springboot construit et empaquete docker
1. Définissez le nom du fichier de package sur demo et
définissez finalName dans le fichier pom du projet springboot
2. Ajoutez le fichier Dockerfile, le fichier est placé dans le projet et le répertoire sous
le fichier Dockerfile
FROM adoptopenjdk/openjdk11:jre11u-nightly
ADD target/demo.jar demo.jar
ENTRYPOINT ["java","-jar","/demo.jar"]
3. Téléchargez le projet springboot sur le serveur et entrez le répertoire racine pour l'empaquetage
Exécuter une commande
mvn clean install
Construisez l'image (n'ignorez pas le dernier point)
docker build -t demo:1.0 .
Afficher la liste des miroirs
docker images
Commencez
docker run -d -it -p 8080:8080 --name=k8sdemo demo:1.0
4. Push d'image (exemple Alibaba Cloud)
Adresse d'accès au compte Aliyun
https://cr.console.aliyun.com/
La création de l'entrepôt ne sera pas décrite ici, et Baidu (la version personnelle ne facture pas)
Poussez l'entrepôt privé de miroirs
#仓库地址根据自己的地址替换
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:[镜像版本号]
Projet SpringBoot de déploiement 5.K8s
créer un secret
#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=*****
Créez le fichier yaml de k8sdemo-deployment
Comment générer rapidement des fichiers yaml
kubectl create deployment k8sdemo --image=registry.cn-hangzhou.aliyuncs.com/fqfff/demo:1.0 --dry-run=client -o yaml > demo-k8s.yaml
Modifier le nombre de copies à 2, monter le secret
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: {
}
créer un contrôleur
kubectl apply -f demo-k8s.yaml
Créer un service, type nodePort
kubectl expose deploy k8sdemo --port=8080 --target-port=8080 --type=NodePort
tester l'accès
port de vue
kubectl get svc
IP du nœud d'accès + port + adresse d'interface
succès!