Maison  >  Article  >  Java  >  Comment déployer Springboot ou Nginx à l'aide de Kubernetes

Comment déployer Springboot ou Nginx à l'aide de Kubernetes

PHPz
PHPzavant
2023-05-12 09:25:13990parcourir

1 Préface

C'est très simple, juste un fichier yaml. yaml文件即可。

2 一键部署springboot

2.1 准备yaml文件

当准备好镜像文件后,要部署到kubernetes就非常容易了,只需要一个yaml格式的文件即可,这个文件能描述你所需要的组件,如deploymentserviceingress等。定义如下:

apiversion: apps/v1
kind: deployment
metadata:
 name: pkslow-springboot-deployment
spec:
 selector:
 matchlabels:
  app: springboot
 replicas: 2
 template:
 metadata:
  labels:
  app: springboot
 spec:
  containers:
  - name: springboot
   image: pkslow/springboot-mongo:0.0.6
   ports:
   - containerport: 8080

---
apiversion: v1
kind: service
metadata:
 labels:
 app: springboot
 name: pkslow-springboot-service
spec:
 ports:
 - port: 8080
  name: springboot-service
  protocol: tcp
  targetport: 8080
  nodeport: 30080
 selector:
 app: springboot
 type: nodeport

kind:类型,有deploymentservicepodingress等,非常丰富;

metadata:用于定义一些组件信息,如名字、标签等;

labels:标签功能,非常有用,用于选择关联;但label不提供唯一性,可以使用组合来选择;

nodeport:对于需要给外部暴露的服务,有三种方式:nodeportsloadbalanceringress,这里使用nodeports;需要注意的是,默认它的端口范围是[3000-32767],需要其它范围则需要修改相关参数。

2.2 通过kubectl命令部署

yaml文件准备好之后,就可以通过以下命令部署:

$ kubectl create -f pksow-springboot.yaml 
deployment.apps/pkslow-springboot-deployment created
service/pkslow-springboot-service created

看控制台日志则表明成功创建了deploymentservice。查看dashboard如下:

Comment déployer Springboot ou Nginx à laide de Kubernetes

访问web服务:

Comment déployer Springboot ou Nginx à laide de Kubernetes

通过命令行检查一下:

$ kubectl get deployment
name       ready up-to-date available age
pkslow-springboot-deployment 2/2  2   2   8m2s

$ kubectl get service
name      type  cluster-ip  external-ip port(s)   age
kubernetes     clusterip 10.96.0.1  <none>  443/tcp   10m
pkslow-springboot-service nodeport 10.102.218.119 <none>  8080:30080/tcp 8m7s

$ kubectl get pod
name           ready status restarts age
pkslow-springboot-deployment-68dffc6795-874tp 1/1  running 0   8m15s
pkslow-springboot-deployment-68dffc6795-89xww 1/1  running 0   8m15s

至此,我们已经成功把springboot发布到kubernetes了。

2.3 试试杀死一个pod?

kubernetes最小管理元素并不是容器,而是pod

Comment déployer Springboot ou Nginx à laide de Kubernetes

我们试着删掉一个pod,看看会发生什么?

$ kubectl delete pod pkslow-springboot-deployment-68dffc6795-89xww
pod "pkslow-springboot-deployment-68dffc6795-89xww" deleted

$ kubectl get pod
name           ready status restarts age
pkslow-springboot-deployment-68dffc6795-874tp 1/1  running 0   13m
pkslow-springboot-deployment-68dffc6795-gpw67 1/1  running 0   46s

可以发现,删除了其它一个pod后,会自动为我们新生成一个pod,这样能提高整个服务的高可用。

2.4 试试杀死一个容器?

我们再来探索一下如果杀死一个容器实例,会有什么反应。

$ docker ps
$ docker rm -f 57869688a226
57869688a226

$ docker ps

经实验,杀死一个容器后,也会自动为我们重新生成一个容器实例。而pod并不会变化,也不会重新生成。

2.5 快速扩容pod

用户请求突增,服务要撑不住了,这时需要增加pod的个数。只需要修改yaml配置文件的replicas,将它更新为replicas: 4。然后执行以下命令:

$ kubectl apply -f pksow-springboot.yaml

查看dashboard,在原有两个pod的基础上,增加了两个。

Comment déployer Springboot ou Nginx à laide de Kubernetes

3 一键部署nginx

如果大家没有springboot的镜像,可以使用官方的nginx镜像,yaml文件如下:

apiversion: apps/v1
kind: deployment
metadata:
 name: nginx-deployment
spec:
 selector:
 matchlabels:
  app: nginx
 replicas: 3
 template:
 metadata:
  labels:
  app: nginx
 spec:
  containers:
  - name: nginx
   image: nginx:1.19.0
   ports:
   - containerport: 80

---
apiversion: v1
kind: service
metadata:
 labels:
 app: nginx
 name: nginx-service
spec:
 ports:
 - port: 80
  name: nginx-service1
  protocol: tcp
  targetport: 80
  nodeport: 30000
 - port: 81
  name: nginx-service2
  protocol: tcp
  targetport: 80
  nodeport: 30001
 selector:
 app: nginx
 type: nodeport

执行部署命令:

$ kubectl apply -f nginx-deployment-scale.yaml 
deployment.apps/nginx-deployment created
service/nginx-service created

查看dashboard

2 Déploiement en un clic de springbootComment déployer Springboot ou Nginx à laide de Kubernetes

2.1 Préparer le fichier yaml

Après avoir préparé le fichier image, déployez Il est très facile d'accéder à kubernetes. Vous n'avez besoin que d'un fichier au format yaml. Ce fichier peut décrire les composants dont vous avez besoin, tels que le déploiementcode> , <code>service, entrée, etc. La définition est la suivante : Comment déployer Springboot ou Nginx à laide de Kubernetesrrreee

kind : type, incluant le déploiement, le service, le pod , <code>ingress, etc., très riche #🎜🎜##🎜🎜#métadonnées : utilisé pour définir certaines informations sur les composants, telles que les noms, les étiquettes, etc. .; #🎜🎜##🎜 🎜#labels : Fonction d'étiquette, très utile pour sélectionner des associations mais label ne fournit pas d'unicité, vous pouvez utiliser des combinaisons pour sélectionner # ; 🎜🎜##🎜🎜# nodeport : Pour les services qui doivent être exposés à l'extérieur, il existe trois manières : nodeports, loadbalancer, ingress, utilisé ici nodeports ; Il convient de noter que la plage de ports par défaut est [3000-32767]. besoin de modifier les paramètres pertinents. #🎜🎜##🎜🎜#2.2 Déploiement via la commande kubectl #🎜🎜##🎜🎜#Lorsque le fichier yaml est prêt, il peut être déployé via la commande suivante : #🎜🎜#rrreee# 🎜🎜 #L'examen du journal de la console montre que le déploiement et le service ont été créés avec succès. Affichez le tableau de bord comme suit : #🎜🎜##🎜🎜#Comment déployer Springboot ou Nginx à l'aide de Kubernetes#🎜🎜##🎜🎜#Accès au service web : #🎜🎜##🎜🎜#Comment utiliser Kubernetes pour déployer Springboot ou Nginx#🎜🎜##🎜🎜#Vérifiez-le via la ligne de commande : # 🎜🎜#rrreee# 🎜🎜#À ce stade, nous avons publié avec succès springboot sur kubernetes. #🎜🎜##🎜🎜#2.3 Essayez de tuer un pod ? #🎜🎜##🎜🎜#kubernetesLe plus petit élément de gestion n'est pas un conteneur, mais un pod. #🎜🎜##🎜🎜#Comment utiliser Kubernetes pour déployer Springboot ou Nginx #🎜🎜##🎜🎜# Essayons de supprimer un pod et voyons ce qui se passe ? #🎜🎜#rrreee#🎜🎜#On peut constater qu'après avoir supprimé un autre pod, un nouveau pod sera automatiquement généré pour nous, ce qui peut améliorer la haute disponibilité de toute la prestation. #🎜🎜##🎜🎜#2.4 Essayez de tuer un conteneur ? #🎜🎜##🎜🎜# Explorons ce qui se passe si nous tuons une instance de conteneur. #🎜🎜#rrreee#🎜🎜#Après les expériences, après avoir tué un conteneur, une instance de conteneur sera automatiquement régénérée pour nous. Cependant, le pod ne changera pas et ne sera pas régénéré. #🎜🎜##🎜🎜#2.5 Expansion rapide du pod#🎜🎜##🎜🎜#Il y a une augmentation soudaine des demandes des utilisateurs et le service ne sera pas en mesure de la prendre en charge Pour le moment, le nombre de pod. doit être augmenté. Modifiez simplement les replicas du fichier de configuration yaml et mettez-le à jour vers replicas: 4. Exécutez ensuite la commande suivante : #🎜🎜#rrreee#🎜🎜#View dashboard Sur la base des deux pod d'origine, deux autres sont ajoutés. #🎜🎜##🎜🎜#Comment utiliser Kubernetes pour déployer Springboot ou Nginx #🎜🎜##🎜🎜##🎜🎜#3 Déploiement en un clic de nginx#🎜🎜##🎜🎜##🎜🎜#Si vous n'avez pas d'image springboot, vous pouvez utiliser l'image officielle nginx, le fichier yaml est le suivant : #🎜🎜#rrreee#🎜🎜#Exécuter la commande de déploiement : #🎜🎜#rrreee#🎜🎜# Visualisez le tableau de bord comme suit : #🎜🎜##🎜🎜##🎜🎜##🎜🎜##🎜🎜#Accédez au service : ou . Parce que nous en avons installé deux. #🎜🎜##🎜🎜##🎜🎜##🎜🎜#

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer