Springboot(java)程序部署到k8s


新建rc(replication controller)

以下操作在master1做

 

rc是一套程序部署的配置,k8s會根據配置自動運行和管理程序,例如自動啟動程序,程序掛了自動重啟等等

rc配置一般都是寫到配置文件(擴展名yaml),然后指定yaml文件來新建rc,k8s很多“東西”都是這種方式配置

 

在任意目錄(最好是存放文件資料的地方),新建文件springboot-helloworld-rc.yaml,內容如下:

PS:部分項有注釋

apiVersion: v1

kind: ReplicationController#對象類型,這里是rc(全稱ReplicationController)

metadata:

  name: helloworld#名稱

  labels:

    name: helloworld#標注

spec:

  replicas: 3#運行容器的副本數,修改這里可以快速修改分布式節點數量

  selector:

    name: helloworld

  template:

    metadata:

     labels:

       name: helloworld

    spec:

     containers:#docker容器的配置

     - name: helloworld

       image: 192.168.31.141:5000/springio/ewater:0.0.1#pull鏡像的地址

       imagePullPolicy: IfNotPresent#pull鏡像時機,

       ports:

       - containerPort: 20801#容器對方開放端口

 

cd到yaml的目錄,運行:kubectl create -f springboot-helloworld-rc.yaml,根據yaml的配置創建rc(創建什么類型對象是在yaml里面指定,所有類型對象創建命令都是kubectl create)

 

運行:kubectl get rc,可查看rc列表

 

 

 

運行:kubectl get pods,可查看運行的pod列表

 

 

Pod啟動比較容易出錯,以下詳細說明:

首先pod可以理解為docker容器,例如本文rc配置了運行副本(容器)數是3,所以就創建了3個pod(容器)

Pod的狀態(status)是running(運行中)是正常的,如果是其他值說明啟動未成功

未成功有可能是pull鏡像比較慢,這只能等

未成功也有可能是啟動失敗,可以用命令kubectl describe pod helloworld-7jpm5(helloworld-7jpm5代表pod名稱),通過查看某個pod的啟動日志來調試

 

 

例如下圖就說明pull鏡像時出問題

 

 

 

另外可以用命令kubectl logs helloworld-7jpm5(helloworld-7jpm5代表pod名稱)查看pod的命令行日志,相當於在cmd運行jar包的命令行輸出

 

 

 

rc和pod成功創建和運行,相當於java程序在k8s已運行成功,但外網還不能訪問,接下來要創建service


 

新建service

以下操作在master1做

 

Service在k8s體系總負責溝通k8s內外網絡配置(注意內外只是指k8s網絡的內外,而不是局域網和互聯網)

 

在任意目錄(最好是存放文件資料的地方),新建文件springboot-helloworld-svc.yaml,內容如下:

apiVersion: v1

kind: Service #對象類型,這里是service

metadata:

  name: helloworld #名稱

  labels:

    name: helloworld #標注

spec:

  type: NodePort

  ports:

  - port: 20801 #service(對內)的端口

    targetPort: 20801 #pod的端口

    nodePort: 32008 #service對外的端口

  selector:

name: helloworld

 

cd到yaml文件所在目錄,運行:kubectl create -f springboot-helloworld-svc.yaml,根據yaml文件創建service

 

可以運行kubectl get services查看到新的service

PS:20801是內部端口,32008是對外端口

 

 

 

此時可以在瀏覽器訪問測試是否部署成功,注意ip是master1的,端口是service的對外端口

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM