中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

開發(fā)者應(yīng)該了解Kubernetes對于程序的影響點(diǎn)-創(chuàng)新互聯(lián)

作者:了哥-duff 來源:云棲社區(qū)

原文鏈接: https://yq.aliyun.com/articles/631182?spm=a2c4e.11153940.bloghomeflow.78.7ada291a5uIWrz

成都創(chuàng)新互聯(lián)長期為上千余家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為宣恩企業(yè)提供專業(yè)的成都網(wǎng)站設(shè)計、做網(wǎng)站、成都外貿(mào)網(wǎng)站建設(shè)公司,宣恩網(wǎng)站改版等技術(shù)服務(wù)。擁有十多年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。

開發(fā)者是否要了解Kuberntes呢?

現(xiàn)在Kubernters越來越熱了,很多公司都在開發(fā)、測試以及生產(chǎn)上逐步使用上了Kubernetes作為容器集群管理平臺。最新調(diào)查顯示,在5000+的大型企業(yè)中,有超過40%的生產(chǎn)環(huán)境已經(jīng)使用上Kubernetes(*)。但是一般的理解,Kubernetes是更偏運(yùn)維類的系統(tǒng),開發(fā)似乎不用太關(guān)注,是否是這樣?答案是否定的!

雖然說,多數(shù)開發(fā)者可以不用改動原有應(yīng)用就可以把這些應(yīng)用遷移/搬移到容器平臺里(這里用“搬移”意思是,更多的是使用者把容器直接作為虛機(jī)對待),但是如果需要更好的使用Kubernetes,則開發(fā)者需要理解kubernetes的一些架構(gòu)以及原理,并對程序架構(gòu)以及一些實(shí)現(xiàn)細(xì)節(jié)作出調(diào)整。本文從一些細(xì)節(jié)上解釋一下程序需要做出的適配點(diǎn),以更好的把程序運(yùn)行到Kuberentes上。

處理好IP無關(guān)性/動態(tài)性

在程序中,要做到把程序間的相互調(diào)用做到不寫死IP,而且要能適配容器的IP的漂移。要做到IP無關(guān)性,可以通過以下幾個方式:

  1. 通過微服務(wù)的服務(wù)注冊與發(fā)現(xiàn)的方式來獲取對端IP。注意這個是容器IP,一般在集群外是不可見的。如果還有Kubernetes集群外的應(yīng)用,要直接訪問POD(特別是Springcloud類應(yīng)用混布),則需要考慮網(wǎng)絡(luò)模型的問題。在阿里云里,提供了Terway的網(wǎng)絡(luò)模式,利用了彈性網(wǎng)卡技術(shù)(ENI)可以直接支持ECS與POD的互通,很好的支持程序往容器化演進(jìn)。
    (terway已經(jīng)開源 https://github.com/AliyunContainerService/terway ,求star)

  2. 通過Kubernetes的SLB Service或者Ingress的方式訪問POD。特別是對于傳統(tǒng)非改造的的應(yīng)用直接搬遷,需要使用這個模式。因?yàn)镾LB/Ingress的對外IP是固定。如果是集群中訪問,則使用service的域名方式訪問更好。

處理好程序的外部配置

通常,原有的程序都是將相關(guān)配置寫到本地配置文件的。到了容器特別是Kubernetes后,這個方式務(wù)必改變,因?yàn)槌绦虻膯舆^程已經(jīng)無法人為干預(yù),同時需要能適配支持程序?qū)嵗纳炜s,而不是固定將程序設(shè)計成固定的實(shí)例數(shù)。

充分利用Kubernetes的configmap/secret

對于啟動時的配置以及環(huán)境變量配置,盡可能配置到configmap以及secret中。這里需要注意的是,configmap/secret的改動是無法改變已經(jīng)運(yùn)行的容器的環(huán)境變量。如果是通過volume方式使用,則對應(yīng)的文件在不確定時間時在已有的程序中生效。所以對于configmap/secret的使用,后續(xù)的變更都要通過rolling upgrade的方式使其新配置生效

利用配置中心

對于運(yùn)行態(tài)的配置變更,需要利用微服務(wù)體系中的配置中心的概念來處理,需要其更好支持以下核心特性:

  • 必須支持動態(tài)推送

  • 必須支持版本管理

  • 必須支持容錯和恢復(fù)

  • 支持安全通信
    在阿里云上可以免費(fèi)使用配置中心:ACM,其已經(jīng)很好的提供了以上特性。并且其已經(jīng)開源出來,叫NACOS( https://nacos.io)

理解好程序的啟動過程和啟動時間

雖然很多時候我們聽到容器的宣傳是“秒級”啟動,但是對于程序如何在容器/Kubernetes里啟動,是需要程序有明確的認(rèn)識的。

這里需要特別注意的是:“秒級啟動”不能等同于“秒級可用”。因?yàn)槌绦蛟谌萜鞯膯舆^程大體如下:

這里標(biāo)示的時間級別以一個普通tomcat業(yè)務(wù)程序?yàn)槔ɡ缙湫枰B接mysql等)
所以開發(fā)者需要考慮這個過程對于程序的影響

利用好Kubernetes的健康檢查雙保險

以往健康檢查的概念是做health check,但是到Kubernetes則變?yōu)榱藘芍氐臋z查,分別為:liveness和readiness,為什么呢?從上面的程序啟動過程可以看見,容器啟動并不代表程序已經(jīng)可以被訪問,特別是對于java類程序,還有springboot/tomcat等的啟動過程,這個過程也是比較費(fèi)時的。如果在這個時候去訪問程序則是很容易timeout的。

  • Liveness: 確保應(yīng)用還存活,不然Kubernetes就會重啟這個POD

  • Liveness prob合理設(shè)置initialDelaySeconds值,避免不斷重啟POD(考慮使用99%的大延遲最為配置值比較合適)

  • Readiness: 確保應(yīng)用已經(jīng)可以接收流量了,不然不會分發(fā)流量給他,常見問題如:首次訪問超時

  • 用于檢查的三種類型探針:http, cmd, tcp,可以根據(jù)程序情況使用

基于這個設(shè)計原則,程序需要考慮提供兩個被檢查的接口。一個即刻歐用于判斷程序是否存活,例如直接返回http 200。一個接口用于判斷程序是否能正常處理請求,特別是對于程序依賴連接數(shù)據(jù)庫、redis等外資源才能提供服務(wù),則這個接口需要去檢查這些外部資源是否可以使用。這兩個接口是明確的含義,千萬別用反了。

小結(jié)

對于IT系統(tǒng)架構(gòu)越來越復(fù)雜的越來越智能的今天,開發(fā)者已經(jīng)可以把更多的精力放在了業(yè)務(wù)開發(fā)上,但是從架構(gòu)設(shè)計上,還是需要對Kubernetes有個深刻的認(rèn)識,以免違背Kubernetes的設(shè)計原則。

(*) 數(shù)據(jù)來源: https://www.cncf.io/blog/2018/08/29/cncf-survey-use-of-cloud-native-technologies-in-production-has-grown-over-200-percent/

網(wǎng)頁題目:開發(fā)者應(yīng)該了解Kubernetes對于程序的影響點(diǎn)-創(chuàng)新互聯(lián)
轉(zhuǎn)載源于:http://www.rwnh.cn/article26/dcdocg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)網(wǎng)站建設(shè)、企業(yè)建站、電子商務(wù)虛擬主機(jī)、網(wǎng)站排名、服務(wù)器托管

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都app開發(fā)公司
罗江县| 阿尔山市| 勐海县| 永兴县| 乌拉特前旗| 乌拉特前旗| 松溪县| 江山市| 福安市| 新疆| 武隆县| 芜湖县| 韩城市| 盘山县| 凤阳县| 贺州市| 乌海市| 晴隆县| 焦作市| 郎溪县| 凯里市| 噶尔县| 通海县| 孟村| 休宁县| 平塘县| 土默特右旗| 安顺市| 邯郸市| 集贤县| 赣州市| 崇礼县| 仪征市| 龙江县| 临邑县| 观塘区| 剑河县| 元阳县| 天气| 华蓥市| 政和县|