當前位置:編程學習大全網 - 源碼下載 - K8s 部署 Spring boot 實踐應用指南

K8s 部署 Spring boot 實踐應用指南

對k8s知識有壹定了解掌握,能夠明白Pod、Deployment、Service、Ingress 具體概念

準備壹套可用的k8s環境

準備壹個部署的spring boot 應用

k8s最小單元是Pod, 而Pod 是壹組運行的容器,那麽容器是怎麽運行起來的呢 ? 就是通過構建的鏡像。(目前我們使用的容器技術都是基於docker)

那先讓我們來壹起制作個鏡像,

將壹個可運行的項目打包成壹個jar文件,創建壹個文件DockerFile,DockerFile和jar放到同壹個目錄 編寫DockerFile

執行生成鏡像命令

docker build -f ./DockerFile -t "/test/helloworld-server:v1" .

查看鏡像 docker images

運行鏡像是否正常 9000為宿主機訪問端口

docker run -p 9000:8080 /test/helloworld-server:v1

通過curl或者瀏覽器訪問 localhost:9000 服務是否正常,如果正常說明鏡像制作成功,開始準備把鏡像上傳到倉庫, 上傳之前確定是否登錄,如果沒有登錄執行 : docker login 倉庫地址

如果倉庫使用的是harbor tag的名字格式改為:

倉庫地址/倉庫/名稱,

比如 harbor.com/test/helloword-service

修改鏡像 tag

docker tag <imageid> reg.com/test/helloworld-server:v1

上傳鏡像

docker push reg.com/test/helloworld-server:v1

上傳完鏡像可以登錄倉庫查看是否上傳成功。

創建deployment.yaml

執行 kubectl apply -f deployment.yaml

查看pod 是否創建成功 處於ready 狀態

kubectl get pod -o wide

如果沒有創建成功,通過log 或者 describe 查看具體原因

kubectl describe pod pod-namexxxxx

pod 的IP重啟之後就會有變化,所以為了能夠固定訪問pod有了service的概念,pod綁定service,我們通過service來訪問pod,service可以理解為集群內部的負載均衡流量的控制器,接下來我們開始創建service

創建service.ymal

我們使用的service type是NodePort,yaml裏沒有申明nodePort 所以k8s會默認創建壹個nodePort (30000-40000),然後我們通過node ip 加 nodePort 就可以訪問service。

kubectl apply -f service.yaml

查看nodePort kubectl get svc -o -wide

通過curl node ip : nodePort 查看是否路由到pod的服務,service的路由是針對內部使用,所以對外我們還需要提供另壹種訪問方式 那就是Ingress,(還有其它訪問方式,本章使用Ingress)接下倆就是創建Ingress

ingress.ymal

kubectl apply -f ingress.ymal

安裝ingress contoller

查看ingress contoller pod 是否創建成功,壹般情況pull鏡像的時候會失敗,需要手動 docker pull .

配置host nodeIP helloserver.com,通過 curl helloserver.com:ingress contoller nodePort 訪問。可以配置HA proxy 解決不用加端口問題

查看ingress contoller nodePort

kubectl get svc -o -wide -n ingress-nginx

到目前為止整個訪問流程就配置完成了,如果我們配置完之後仍然訪問不了

,可以壹步壹步的排除

綁定關系

檢查pod是否正常

kubectl describe pod <pod name>

檢查service 綁定pod配置是否正確 從service 訪問pod Endpoints

kubectl describe service <service-name> | grep Endpoints

壹個 endpoint 是壹對<ip address:port>,並且當 Service(至少)target 壹個 pod 時。至少有壹對

檢查Ingress 配置

kubectl describe ingress <ingress-name>

如果妳能在 /Backend/ 列中看到 endpoint,但依舊無法訪問應用程序,那麽可能是以下問題:

如果妳毫無頭緒,那麽在 Kubernetes 中進行故障排除可能是壹項艱巨的任務。

妳應該永遠記住以從下至上的順序解決問題:現檢查 Pod,然後向上移動堆棧至 Service 和 Ingress。

  • 上一篇:C語言拼音打字程序問題
  • 下一篇:在菲律賓工作工資多少?那些工作太好了。
  • copyright 2024編程學習大全網