成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

照貓畫虎把SpringBoot搬到K8s,居然翻船咧,體驗到了Go在云原生的兩個優勢

開發 前端
這里總結了一下 K8s 常用的入門知識以及相關的實踐操作,只能算是一個非常初級的入門,還有其他很多非常高級的特性能讓我們控制 K8s 對應用的各種調度動作。

這是我們K8s快速入門與實踐的最后一篇啦,上一個實踐篇里我們講了怎么從寫第一行代碼開始到把 Go 服務部署到 K8s 上都有哪些步驟,每一步該怎么做。

今天這篇我們再更新一個怎么把 SpringBoot 應用部署到 K8s 上,本來我是想偷偷懶、照貓畫虎把上節課的改改鏡像名不就行了,沒想到,居然翻車咧,真的是想偷點懶都不行啊。具體怎么翻車,咱們先往后看,在總結里再說說,我對 Go 相比于 Java 在云原生里的優勢。

好了,咱們還是先假裝自己都是是小白哈,讓我帶大家再次從零開始把一個 SpringBoot 應用部署到 K8s 上運行。

SpringBoot 應用,在 K8s 上運行

怎么把一個 SpringBoot 開發的 Web 應用部署到 K8s 集群上運行,有哪幾個步驟要完成的呢,這里我們先歸納一下,后面依次對每一步進行演示。

這里會把我們上面理論部分的知識點再串一遍,主要有這么幾個步驟:

  • 完成應用代碼的編寫
  • 把程序打包成容器鏡像
  • 使用上一步打包的鏡像,創建應用的Pod
  • 用 Deployment 調度應用
  • 使用 Service 暴露應用
  • 通過 Ingress 代理應用

好了,這六步大家一定要記住,下面我們逐一展開,詳細說說。

完成應用代碼的編寫

這一步咱們為了演示,就簡單來搞一個 HelloWorld 級別的代碼就行了,沒必要搞太復雜,再復雜的項目后面幾步的操作也是一樣。

首先,咱們建一個 Maven 管理的項目,POM 文件里引入這幾個依賴 :

圖片

POM 文件里的依賴

POM里的依賴很簡單,首先是 Spring Boot 程序都要先引入的spring-boot-starter-parent,其次我們演示的是 Web 應用,所以在項目依賴里再引入 Spring MVC 的starter 即可。

至于應用的代碼,也非常簡單。

圖片

應用代碼

可以看到,僅就 HelloWorld 級別的代碼來說,并沒有比咱們演示的 Go 程序代碼多多少,主要原因是很多工作 SpringBoot 都已經幫我們做好了。

代碼寫好了,接下來我們把這個 SpringBoot 應用打成 Docker 鏡像。

把程序打包成容器鏡像

首先咱們準備一下打包鏡像的 Dockerfile。

FROM openjdk:8-jre
ADD target/*.jar /application.jar
ENTRYPOINT ["java", "-jar","/application.jar"]

把這個放在項目的根目錄里,具體 Dockerfile 里的命令咱們就不講了,就三個命令,可以在網管叨bi叨公眾號里回復docker,拿到一個 docker 命令的手冊,里面常用 Docker 命令的解釋都有。

下面把應用打包成鏡像:

docker build -t registry.cn-hangzhou.aliyuncs.com/docker-study-lab/simple-app-java:v0.1

把鏡像上傳到遠程倉庫:

docker push registry.cn-hangzhou.aliyuncs.com/docker-study-lab/simple-app-java:v0.1

這次,咱們還是把鏡像傳到,某位老好人創建的鏡像倉庫里,大家練習的時候也可以往里傳,不過首先要在阿里云申請個免費的鏡像云賬號,然后用docker login 命令配置一下你的客戶端就行啦,阿里云的頁面上都有指示,實在不行了也可以在公眾號里問我。

創建應用的Deployment

還記得我在之前的文章 -- K8s 面向對象里說過。

Deployment 是一個復合型的控制器,它包裝了一個叫做 ReplicaSet -- 副本集的控制器。ReplicaSet 管理正在運行的Pod數量,Deployment 在其之上實現 Pod 滾動更新,對Pod的運行狀況進行健康檢查以及回滾更新的能力。

所以,這里我們直接把步驟2、3合起來一起說。其實也沒啥好說的,畢竟 Go 實踐那篇文章里我們已經講過一次了,直接上這次用的 YAML 配置。

圖片

Deployment YAML

誒,我就是在這翻車的,一開始我完全拷貝的 Go 實踐篇里的 Deployment 配置,部署后,服務不停的重啟,排查了一下,是在不停的OOM。

圖片

翻車截圖

因為咱們只給 Go 的那個應用容器分配了 50M 內存,這次用 SpringBoot 雖然也只是個 HelloWorld 程序,但是卻跑不起來,一請求容器就掛。這里就凸顯出 Go 在云原生下的第一個好處啦:占內存小。

排查 K8s 問題的方法,可參考之前的文章:想在研發群里裝?先學會這幾個排查K8s問題的辦法。

上面我直接把容器可用的內存調成了 500M,不是說 Java 應用占的內存是Go應用的 10倍,是我懶得一點點去試,直接設置成了 500M,反正 100 M,試過是不行的,哭!

用 Service 暴露服務

創建好上面這幾個對象后,我們的應用只能在 K8s 集群的內部使用,想能從外部訪問就得把應用暴露出來,這個時候就需要 Service 這個對象了。Service 對象具體的概念解釋,咱們還是看上一篇文章,這里不再贅述了。

下面是一個默認的 Cluster IP 型的 Service,為啥只在集群內暴露呢?因為下面我們還會給 Service 加一層 Ingress,所以就不必再用 NodePort 型的 Service 單獨在節點上開端口再向外暴露服務啦。

圖片

Service YAML

用 Ingress 代理Service

使用 Ingress 前咱們應該干什么呢?對,需要先安裝 Ingress Controller ,這里我們使用開源的 Ingress-Nginx ,它本質上就是個 Nginx,也好理解,Ingress 是代理 Service 對象的,要想代理先得有個基礎設施的支持,只不過 K8s 里任何東西都是面向對象方式管理的,所以就有了 Ingress Controller,它支持不同類型的 Ingress Controller,咱們用的這個是免費的。

安裝參考下面這個鏈接,非常簡單,上次發文章后,不安裝就跑過來問我為啥運行不了的,自己去面壁會兒。

https://kubernetes.github.io/ingress-nginx/deploy/

接下來就是聲明代理我們的 Web 應用的 Ingress 對象。

圖片

Ingress YAML

通過 kubctl apply -f 命令把它提交給 K8s 集群,創建 Ingress 對象。

Ingress 對象創建好后,我們就能通過 java-app.example.com 訪問咱們的服務啦,當然前提是在電腦上配置一下咱們的 hosts 文件,添加一下這個域名到127.0.0.1 的綁定。

看一下咱們的訪問效果:

圖片

K8s 運行應用的效果

常用命令

最近這兩天的實踐篇,我一直在給你們講 K8s 的各種資源對象怎么聲明、怎么配合著使用,操作時執行的命令就提了一嘴,沒有展開說。主要的原因還是它的命令非常簡單,自始至終我就用了一個 kubectl apply 命令,下面我把 K8s 常用的命令組合放這里,供大家操作的時候參考。

  • kubectl apply -f xxx.yaml 讓K8s 創建在集群里按配置文件創建/更新資源對象。
  • kubectl get pod | deploy | svc | ingress 查看集群中的pod、Deployment、Service、Ingress 資源的狀態。
  • kubectl describe pod | deploy | svc | ingress {$objectName} 查看具體資源對象當前的詳細信息。
  • kubectl delete pod | deploy | svc | ingress {$objectName} 刪除指定對象。

總結

這里總結了一下 K8s 常用的入門知識以及相關的實踐操作,只能算是一個非常初級的入門,還有其他很多非常高級的特性能讓我們控制 K8s 對應用的各種調度動作。

責任編輯:武曉燕 來源: 網管叨bi叨
相關推薦

2021-08-13 07:00:41

云原生k8sspringboot

2021-08-26 07:20:05

云原生K8sSpringboot

2024-09-26 09:50:07

2013-07-25 09:32:41

云計算數據處理

2022-04-07 10:17:18

云原生服務器優化

2023-03-06 07:19:50

2021-04-25 10:26:58

云計算云原生

2022-09-07 09:22:36

SpringBootWeb

2022-07-18 18:48:32

Kubernetes云原生

2023-03-03 07:54:21

2025-01-03 08:08:56

2022-11-08 08:55:31

2023-03-07 07:56:37

Sqoopk8s底層

2022-10-14 07:42:50

LuceneHTTPWeb

2024-06-12 13:21:06

2023-11-03 08:43:00

云原生TLS 證書

2023-01-04 17:42:22

KubernetesK8s

2023-02-01 07:46:51

k8s云原生巧妙用法

2023-02-08 07:55:33

K8sHPA服務器

2022-11-06 21:31:11

云原生Sentinel集群模式
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日韩久久精品视频 | 最近中文字幕免费 | 男女羞羞网站 | 欧美一区免费 | 国产在线一区二区 | 免费一区二区 | 亚洲福利网站 | 国产免费让你躁在线视频 | 超碰免费在 | 区一区二区三在线观看 | 亚洲精品国产综合区久久久久久久 | 日韩2020狼一二三 | 国产97久久| 天天干天天草 | 午夜电影网 | 麻豆国产一区二区三区四区 | 久久综合一区 | 欧美成年人网站 | 999久久久| 视频1区2区 | 亚洲欧美日韩电影 | 午夜视频免费在线 | 亚洲欧美日韩高清 | av色站| 国内自拍偷拍 | 欧美在线a | 欧美1区2区| 日日干天天操 | 国产亚洲日本精品 | 亚洲精品乱码久久久久久黑人 | 欧美福利影院 | 成在线人视频免费视频 | 欧洲色综合 | 成年人国产在线观看 | 一本一道久久a久久精品蜜桃 | 先锋影音资源网站 | 久久精品性视频 | 亚洲天堂二区 | 久久天堂网 | 久久久久久久久淑女av国产精品 | 欧美精品一区二区在线观看 |