Heim  >  Artikel  >  Java  >  So stellen Sie Springboot oder Nginx mit Kubernetes bereit

So stellen Sie Springboot oder Nginx mit Kubernetes bereit

PHPz
PHPznach vorne
2023-05-12 09:25:13990Durchsuche

1 Vorwort

Das ist ganz einfach, nur eine yaml-Datei. 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如下:

So stellen Sie Springboot oder Nginx mit Kubernetes bereit

访问web服务:

So stellen Sie Springboot oder Nginx mit Kubernetes bereit

通过命令行检查一下:

$ 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

So stellen Sie Springboot oder Nginx mit Kubernetes bereit

我们试着删掉一个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的基础上,增加了两个。

So stellen Sie Springboot oder Nginx mit Kubernetes bereit

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 Ein-Klick-Bereitstellung von SpringbootSo stellen Sie Springboot oder Nginx mit Kubernetes bereit

2.1 Yaml-Datei vorbereiten

Nach der Vorbereitung der Image-Datei ist die Bereitstellung auf kubernetes sehr einfach, nur ein yamlwird benötigt > Formatdatei kann verwendet werden. Diese Datei kann die von Ihnen benötigten Komponenten beschreiben, z. B. deployment, service, ingress usw. Die Definition lautet wie folgt: So stellen Sie Springboot oder Nginx mit Kubernetes bereitrrreee

kind: Typ, einschließlich deployment, service, pod, ingress usw., sehr umfangreich; 🎜🎜<code>metadata: wird verwendet, um einige Komponenteninformationen wie Namen, Labels usw. zu definieren; 🎜🎜labels : Label-Funktion, sehr nützlich, zum Auswählen von Assoziationen verwenden; label bietet jedoch keine Eindeutigkeit, Sie können Kombinationen zum Auswählen verwenden 🎜🎜nodeport: Für Dienste, die sein müssen Nach außen hin gibt es drei Möglichkeiten: nodeports, loadbalancer, ingress, nodeports wird hier verwendet; Beachten Sie, dass der Standard-Portbereich [ 3000-32767] ist. Wenn Sie andere Bereiche benötigen, müssen Sie die entsprechenden Parameter ändern. 🎜🎜2.2 Bereitstellung über den Befehl kubectl🎜🎜Wenn die yaml-Datei fertig ist, können Sie sie mit dem folgenden Befehl bereitstellen: 🎜rrreee🎜Ein Blick auf das Konsolenprotokoll zeigt, dass die deployment wurde erfolgreich erstellt und service. Sehen Sie sich das Dashboard wie folgt an: 🎜🎜So verwenden Sie Kubernetes um Springboot oder Nginx bereitzustellen🎜🎜Besuchen Sie den Web-Dienst: 🎜🎜So stellen Sie Springboot oder Nginx mit Kubernetes bereit🎜🎜Überprüfen Sie es über die Befehlszeile: 🎜rrreee🎜Zu diesem Zeitpunkt haben wir springboot erfolgreich auf kubernetes veröffentlicht . 🎜🎜2.3 Versuchen Sie, eine Schote zu töten? 🎜🎜kubernetesDas kleinste Verwaltungselement ist kein Container, sondern ein Pod. 🎜🎜So verwenden Sie Kubernetes zum Bereitstellen von Springboot oder Nginx🎜🎜Wir versuchen es löschen Einen Pod ablegen und sehen, was passiert? 🎜rrreee🎜Sie können feststellen, dass nach dem Löschen eines anderen Pod automatisch ein neuer Pod für uns generiert wird, was die Hochverfügbarkeit des gesamten Dienstes verbessern kann. 🎜🎜2.4 Versuchen Sie, einen Container zu töten? 🎜🎜Lassen Sie uns untersuchen, was passiert, wenn wir eine Containerinstanz beenden. 🎜rrreee🎜Nach Experimenten wird nach dem Beenden eines Containers automatisch eine Containerinstanz für uns neu generiert. pod wird jedoch nicht geändert oder neu generiert. 🎜🎜2.5 Schnelle Pod-Erweiterung🎜🎜Benutzeranfragen nehmen plötzlich zu und der Dienst kann dies nicht unterstützen. Zu diesem Zeitpunkt müssen Sie die Anzahl der Pod erhöhen. Ändern Sie einfach die replicas der yaml-Konfigurationsdatei und aktualisieren Sie sie auf replicas: 4. Führen Sie dann den folgenden Befehl aus: 🎜rrreee🎜View dashboard Basierend auf den ursprünglichen zwei pod werden zwei weitere hinzugefügt. 🎜🎜So verwenden Sie Kubernetes zum Bereitstellen von Springboot oder Nginx🎜🎜🎜3 Mit einem Klick nginx bereitstellen🎜🎜🎜Wenn Sie kein springboot-Image haben, können Sie das offizielle nginx-Image verwenden. Die yaml-Datei ist wie folgt: 🎜rrreee🎜Führen Sie den Bereitstellungsbefehl aus: 🎜rrreee🎜Sehen Sie sich dashboard wie folgt an: 🎜🎜🎜🎜🎜Greifen Sie auf den Dienst zu: oder . Weil wir zwei aufgestellt haben. 🎜🎜🎜🎜

Das obige ist der detaillierte Inhalt vonSo stellen Sie Springboot oder Nginx mit Kubernetes bereit. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen