bl双性强迫侵犯h_国产在线观看人成激情视频_蜜芽188_被诱拐的少孩全彩啪啪漫画

開發(fā)者應(yīng)該了解Kubernetes對于程序的影響點(diǎn)

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

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

創(chuàng)新互聯(lián)主要從事成都網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站、網(wǎng)頁設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)承德縣,十載網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):13518219792

開發(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ù),同時(shí)需要能適配支持程序?qū)嵗纳炜s,而不是固定將程序設(shè)計(jì)成固定的實(shí)例數(shù)。

充分利用Kubernetes的configmap/secret

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

利用配置中心

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

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

  • 必須支持版本管理

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

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

理解好程序的啟動過程和啟動時(shí)間

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

這里需要特別注意的是:“秒級啟動”不能等同于“秒級可用”。因?yàn)槌绦蛟谌萜鞯膯舆^程大體如下:
開發(fā)者應(yīng)該了解Kubernetes對于程序的影響點(diǎn)cdn.com/1e9b2c7cc652ee02326a2f63d4076cf8abda4a32.png">

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

利用好Kubernetes的健康檢查雙保險(xiǎn)

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

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

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

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

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

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

小結(jié)

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

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

新聞標(biāo)題:開發(fā)者應(yīng)該了解Kubernetes對于程序的影響點(diǎn)
鏈接地址:http://vcdvsql.cn/article24/pehoje.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)網(wǎng)站建設(shè)品牌網(wǎng)站設(shè)計(jì)微信公眾號企業(yè)建站App設(shè)計(jì)面包屑導(dǎo)航

廣告

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

網(wǎng)站托管運(yùn)營