Heim > Java > javaLernprogramm > So stellen Sie die SpringBoot-Anwendung auf K8S bereit

So stellen Sie die SpringBoot-Anwendung auf K8S bereit

王林
Freigeben: 2023-05-14 17:22:06
nach vorne
1521 Leute haben es durchsucht

Bild auf Docker Hub übertragen

Bevor wir unser eigenes Image-Warehouse erstellt haben, haben wir dieses Mal die Methode geändert und das Bild auf Docker Hub hochgeladen Geh rein. Docker Hub中去。

  • 首先我们得注册个Docker Hub的账号,Docker Hub地址:https://hub.docker.com/

    So stellen Sie die SpringBoot-Anwendung auf K8S bereit


  • 部署应用使用之前的mall-tiny-fabric项目,先修改pom.xml文件,主要是增加Docker Hub的认证信息和修改下镜像前缀,具体内容如下;

<configuration>    <!-- Docker 远程管理地址-->    <dockerHost>http://192.168.5.94:2375</dockerHost>    <!-- 增加认证信息-->    <authConfig>        <push>            <!--Docker Hub 客户名-->            <username>macrodocker</username>            <!--Docker Hub 密码-->            <password>xxx</password>        </push>    </authConfig>    <images>        <image>            <!--修改镜像前缀为Docker Hub 客户名-->            <name>macrodocker/${project.name}:${project.version}</name>        </image>     </images> </configuration>
Nach dem Login kopieren
  • 修改完成后使用package命令先把镜像打包到Linux服务器,再使用docker:push命令把镜像推送到Docker Hub中去:So stellen Sie die SpringBoot-Anwendung auf K8S bereit

  • 推送成功以后即可以在Docker Hub中看到镜像了。So stellen Sie die SpringBoot-Anwendung auf K8S bereit

应用部署

接下来我们将把应用部署到K8S上去,包含SpringBoot应用的部署和MySQL的部署。

部署MySQL

  • 首先增加配置文件mysql-deployment.yaml用于创立Deployment,具体说明参考注释就可;

apiVersion: apps/v1kind: Deploymentmetadata:  # 指定Deployment的名称  name: mysql-deployment  # 指定Deployment的标签   labels:    app: mysqlspec:  # 指定创立的Pod副本数量   replicas: 1  # 定义如何查找要管理的Pod  selector:    # 管理标签app为mysql的Pod    matchLabels:      app: mysql  # 指定创立Pod的模板  template:    metadata:      # 给Pod打上app:mysql标签      labels:        app: mysql    # Pod的模板规约    spec:      containers:        - name: mysql          # 指定容器镜像          image: mysql:5.7          # 指定开放的端口          ports:            - containerPort: 3306          # 设置环境变量          env:            - name: MYSQL_ROOT_PASSWORD              value: root          # 使用存储卷          volumeMounts:            # 将存储卷挂载到容器内部路径            - mountPath: /var/log/mysql              name: log-volume            - mountPath: /var/lib/mysql              name: data-volume            - mountPath: /etc/mysql              name: conf-volume      # 定义存储卷      volumes:        - name: log-volume          # hostPath类型存储卷在宿主机上的路径          hostPath:            path: /home/docker/mydata/mysql/log            # 当目录不存在时创立            type: DirectoryOrCreate        - name: data-volume          hostPath:            path: /home/docker/mydata/mysql/data            type: DirectoryOrCreate        - name: conf-volume          hostPath:            path: /home/docker/mydata/mysql/conf            type: DirectoryOrCreate
Nach dem Login kopieren
  • 通过应用配置文件来创立Deployment;通过应用配置文件来创立Deployment

kubectl apply -f mysql-deployment.yaml
Nach dem Login kopieren
  • 运行成功后查询Deployment,发现mysql-deployment已经就绪;

[macro@linux-local k8s]$ kubectl get deploymentsNAME                      READY   UP-TO-DATE   AVAILABLE   AGEmysql-deployment          1/1     1            1           38snginx-volume-deployment   2/2     2            2           6d5h
Nach dem Login kopieren
  • 想要其余Pod可以通过服务名称访问MySQL,需要创立Service,增加配置文件mysql-service.yaml用于创立Service

apiVersion: v1kind: Servicemetadata:  # 定义服务名称,其余Pod可以通过服务名称作为域名进行访问  name: mysql-servicespec:  # 指定服务类型,通过Node上的静态端口暴露服务  type: NodePort  # 管理标签app为mysql的Pod  selector:    app: mysql  ports:    - name: http      protocol: TCP      port: 3306      targetPort: 3306      # Node上的静态端口      nodePort: 30306
Nach dem Login kopieren
  • 通过应用配置文件来创立Service

kubectl apply -f mysql-service.yaml
Nach dem Login kopieren
  • 运行成功后查询Service,发现mysql-service已经暴露在Node的30306端口上了;

[macro@linux-local k8s]$ kubectl get servicesNAME            TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)          AGEkubernetes      ClusterIP   10.96.0.1        <none>        443/TCP          7d23hmysql-service   NodePort    10.107.189.51    <none>        3306:30306/TCP   7snginx-service   NodePort    10.101.171.181   <none>        80:30080/TCP     6d2h
Nach dem Login kopieren
  • 部署完成后需要新建mall数据库,并导入相关表,表地址: macrozheng/mall-learning/blob/master/document/sql/mall.sql

  • 这里有个比较简单的方法来导入数据库,通过Navicat创立连接,先配置一个SSH通道;So stellen Sie die SpringBoot-Anwendung auf K8S bereit

  • 之后我们即可以像在Linux服务器上访问数据库一样访问Minikube中的数据库了,直接增加Minikube中数据库IP和端口就可。

    So stellen Sie die SpringBoot-Anwendung auf K8S bereit

部署SpringBoot应用

  • 首先增加配置文件mall-tiny-fabric-deployment.yaml用于创立Deployment,这里我们可以通过环境变量来覆盖SpringBoot中的默认配置;

apiVersion: apps/v1kind: Deploymentmetadata:  name: mall-tiny-fabric-deployment  labels:    app: mall-tiny-fabricspec:  replicas: 1  selector:    matchLabels:      app: mall-tiny-fabric  template:    metadata:      labels:        app: mall-tiny-fabric    spec:      containers:        - name: mall-tiny-fabric          # 指定Docker Hub中的镜像地址          image: macrodocker/mall-tiny-fabric:0.0.1-SNAPSHOT          ports:            - containerPort: 8080          env:            # 指定数据库连接地址            - name: spring.datasource.url              value: jdbc:mysql://mysql-service:3306/mall?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai            # 指定日志文件路径            - name: logging.path              value: /var/logs          volumeMounts:            - mountPath: /var/logs              name: log-volume      volumes:        - name: log-volume          hostPath:            path: /home/docker/mydata/app/mall-tiny-fabric/logs            type: DirectoryOrCreate
Nach dem Login kopieren
  • 通过应用配置文件来创立Deployment

kubectl apply -f mall-tiny-fabric-deployment.yaml
Nach dem Login kopieren
  • 我们可以通过kubectl logs命令来查看应用的启动日志;

[macro@linux-local k8s]$ kubectl get podsNAME                                           READY   STATUS    RESTARTS   AGEmall-tiny-fabric-deployment-8684857dff-pnz2t   1/1     Running   0          47smysql-deployment-5dccc96ccf-sfxvg              1/1     Running   0          25mnginx-volume-deployment-6f6c89976d-nv2rn       1/1     Running   4          6d6hnginx-volume-deployment-6f6c89976d-tmhc5       1/1     Running   4          6d5h[macro@linux-local k8s]$ kubectl logs -f mall-tiny-fabric-deployment-8684857dff-pnz2t
Nach dem Login kopieren
  • 假如想要从外部访问SpringBoot应用,需要创立Service,增加配置文件mall-tiny-fabric-service.yaml用于创立Service

apiVersion: v1kind: Servicemetadata:  name: mall-tiny-fabric-servicespec:  type: NodePort  selector:    app: mall-tiny-fabric  ports:    - name: http      protocol: TCP      port: 8080      targetPort: 8080      # Node上的静态端口      nodePort: 30180
Nach dem Login kopieren
  • 通过应用配置文件来创立Service

kubectl apply -f mall-tiny-fabric-service.yaml
Nach dem Login kopieren
  • 此时服务已经暴露到了Node的30180端口上了;

[macro@linux-local k8s]$ kubectl get servicesNAME                       TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)          AGEkubernetes                 ClusterIP   10.96.0.1        <none>        443/TCP          7d23hmall-tiny-fabric-service   NodePort    10.100.112.84    <none>        8080:30180/TCP   5smysql-service              NodePort    10.107.189.51    <none>        3306:30306/TCP   13mnginx-service              NodePort    10.101.171.181   <none>        80:30080/TCP     6d2h
Nach dem Login kopieren
  • Linux服务器上,我们可以通过curl命令来访问下项目的Swagger页面,不过只能查看到返回的一串HTML

    • Zuerst müssen wir ein Docker Hub-Konto registrieren, Docker Hub< /code>Adresse: https://hub.docker.com/</li></ul><img src="https://img.php.cn/upload/article/000/465/014/168405612989328. png" alt="So stellen Sie SpringBoot-Anwendungen auf K8S bereit" /><p ><strong><br/></strong></p><li>#🎜🎜#<Code vor der Bereitstellung der Anwendung >mall -tiny-fabric-Projekt: Ändern Sie zunächst die Datei pom.xml, hauptsächlich um die Authentifizierungsinformationen von Docker Hub hinzuzufügen und das Bildpräfix zu ändern sind wie folgt ;#🎜🎜##🎜🎜##🎜🎜#
      curl $(minikube ip):30180/swagger-ui.html
      Nach dem Login kopieren
      • #🎜🎜#Nachdem die Änderung abgeschlossen ist, verwenden Sie das Paket</ code>-Befehl, um das Image zuerst zu packen. Gehen Sie zum <code>Linux-Server und verwenden Sie den docker:push-Befehl, um das Image an Docker Hub zu senden: < img src="https://img .php.cn/upload/article/000/465/014/168405612921101.png" alt="So stellen Sie die SpringBoot-Anwendung auf K8S bereit" />#🎜🎜##🎜🎜#< li>#🎜🎜#Push erfolgreich Sie können das Bild jetzt im Docker Hub sehen. So stellen Sie SpringBoot-Anwendungen auf K8S bereit#🎜🎜##🎜🎜 # #🎜🎜#

        Anwendungsbereitstellung#🎜🎜##🎜🎜##🎜🎜#Als nächstes werden wir die Anwendung auf K8S bereitstellen, einschließlich der SpringBoot-Anwendungsbereitstellung und Bereitstellung von MySQL. #🎜🎜##🎜🎜##🎜🎜#MySQL bereitstellen#🎜🎜##🎜🎜#
        • #🎜🎜#Fügen Sie zuerst die Konfigurationsdatei hinzu < code>mysql-deployment.yaml wird zum Erstellen von Deployment verwendet. Spezifische Anweisungen finden Sie in den Kommentaren =" list- paddingleft-2" >
        • #🎜🎜# Erstellen Sie eine Bereitstellung mithilfe von Konfigurationsdateien; erstellen Sie eine Bereitstellung mithilfe von Konfigurationsdateien; 🎜# #🎜🎜#
          server {    listen       80;    server_name  mall-tiny.macrozheng.com; #修改域名    location / {        proxy_set_header Host $host:$server_port;        proxy_pass   http://192.168.49.2:30180; #修改为代理商服务地址        index  index.html index.htm;    }    error_page   500 502 503 504  /50x.html;    location = /50x.html {        root   /usr/share/nginx/html;    }}
          Nach dem Login kopieren
          Nach dem Login kopieren
          • #🎜🎜# Fragen Sie nach erfolgreichem Vorgang Deployment ab und finden Sie mysql-deployment</ code> ist fertig ;#🎜🎜##🎜🎜##🎜🎜#<div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:css;toolbar:false">192.168.5.94 mall-tiny.macrozheng.com</pre><div class="contentsignin">Nach dem Login kopieren</div></div><div class="contentsignin">Nach dem Login kopieren</div></div><ul class=" list-paddingleft-2" ><li>#🎜🎜# Will den Rest des <code>Pod Um über den Dienstnamen MySQL erreichbar zu sein, müssen Sie Service erstellen und die Konfigurationsdatei mysql-service.yaml hinzufügen, um zu erstellen Service; #🎜🎜# #🎜🎜##🎜🎜#rrreee
            • #🎜🎜#Erstellen Sie Service durch Anwenden der Konfiguration files; #🎜🎜##🎜🎜 ##🎜🎜#rrreee
              • #🎜🎜# Nach erfolgreicher Ausführung fragen Sie Service ab und finden das mysql-service wurde auf dem Port 30306 des Knotens verfügbar gemacht; #🎜🎜##🎜🎜##🎜🎜#rrreee
                • #🎜🎜# Bereitstellung abgeschlossen. Anschließend müssen Sie eine neue mall-Datenbank erstellen und die relevanten Tabellen importieren. Die Tabellenadresse lautet: Macrozheng/mall-learning/blob/master/document/sql /mall.sql#🎜🎜##🎜🎜#
                • # 🎜🎜#Hier ist eine relativ einfache Methode, um die Datenbank über Navicat zu importieren und zuerst einen SSH-Kanal zu konfigurieren img src="https://img.php.cn/upload/article /000/465/014/168405613019188.png" alt="So stellen Sie SpringBoot-Anwendungen auf K8S bereit" />#🎜🎜##🎜🎜#< li>#🎜🎜#Danach können wir wie in Linux auf die Datenbank in Minikube zugreifen, genau wie Sie auf die Datenbank auf dem Server zugreifen und direkt in Minikube portieren. #🎜🎜##🎜🎜#So stellen Sie SpringBoot-Anwendungen auf K8S bereit #🎜🎜##🎜🎜##🎜🎜##🎜🎜##🎜🎜#SpringBoot-Anwendung bereitstellen #🎜🎜##🎜🎜#
                  • #🎜🎜 # Fügen Sie zunächst die Konfigurationsdatei mall-tiny-fabric-deployment.yaml hinzu, um Deployment zu erstellen. Hier können wir SpringBoot überschreiben Konfiguration von ;#🎜🎜##🎜🎜##🎜🎜#rrreee
                    • #🎜🎜#Wir können die Anwendung über die kubectl-Protokolle</code anzeigen > Befehl Startprotokoll; #🎜🎜##🎜🎜##🎜🎜#rrreee<ul class=" list-paddingleft-2" ><li>#🎜🎜#Wenn Sie auf den <code>SpringBoot</code zugreifen möchten > Anwendung von außen, Sie müssen <code>Service erstellen und die Konfigurationsdatei mall-tiny-fabric-service.yaml hinzufügen, um Service zu erstellen; 🎜🎜##🎜🎜 ##🎜🎜#rrreee
                      • #🎜🎜#Erstellen Sie Dienst durch Anwenden der Konfigurationsdatei #🎜🎜## 🎜🎜##🎜 🎜#rrreee
                        • #🎜🎜#Zu diesem Zeitpunkt wurde der Dienst dem 30180-Port des Knotens ausgesetzt; 🎜##🎜🎜# #🎜🎜#rrreee
                          • #🎜🎜#Auf dem Linux-Server können wir über den curl-Befehl Laden Sie die Swagger-Seite des Projekts herunter, Sie können jedoch nur die zurückgegebene Zeichenfolge von HTML-Codes anzeigen. #🎜🎜##🎜🎜##🎜🎜#rrreee#🎜🎜##🎜🎜#Externe Zugriffsanwendung#🎜🎜##🎜🎜#

                            因为使用Minikube安装的K8S Node处于Linux服务器的内网环境,无法直接从外部访问,所以我们需要安装一个Nginx反向代理商下才能访问。

                            • 首先我们需要安装Nginx

                            • 安装完成后增加一个Nginx的配置文件,这里我的配置路径为/mydata/nginx/conf/conf.d/,用于将mall-tiny.macrozheng.com域名的访问代理商到K8S中的SpringBoot应用中去,proxy_pass为上面curl使用的路径;

                            server {    listen       80;    server_name  mall-tiny.macrozheng.com; #修改域名    location / {        proxy_set_header Host $host:$server_port;        proxy_pass   http://192.168.49.2:30180; #修改为代理商服务地址        index  index.html index.htm;    }    error_page   500 502 503 504  /50x.html;    location = /50x.html {        root   /usr/share/nginx/html;    }}
                            Nach dem Login kopieren
                            Nach dem Login kopieren
                            • 重启Nginx服务,再修改访问Linux服务器的本机host文件,增加如下记录;

                            192.168.5.94 mall-tiny.macrozheng.com
                            Nach dem Login kopieren
                            Nach dem Login kopieren
                            • 之后就可直接在本机上访问K8S上的SpringBoot应用了,访问地址:http://mall-tiny.macrozheng.com/swagger-ui.html

                            • So stellen Sie die SpringBoot-Anwendung auf K8S bereit

                            Das obige ist der detaillierte Inhalt vonSo stellen Sie die SpringBoot-Anwendung auf K8S bereit. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:yisu.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage