第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

kubernetes env 變量是臨時的嗎

kubernetes env 變量是臨時的嗎

慕妹3146593 2018-09-30 04:00:08
kubernetes env 變量是臨時的嗎
查看完整描述

1 回答

?
絕地?zé)o雙

TA貢獻(xiàn)1946條經(jīng)驗 獲得超4個贊

我們先從整體上看一下Kubernetes的一些理念和基本架構(gòu), 然后從網(wǎng)絡(luò)、 資源管理、存儲、服務(wù)發(fā)現(xiàn)、負(fù)載均衡、高可用、rolling upgrade、安全、監(jiān)控等方面向大家簡單介紹Kubernetes的這些主要特性。

當(dāng)然也會包括一些需要注意的問題。主要目的是幫助大家快速理解 Kubernetes的主要功能,今后在研究和使用這個具的時候有所參考和幫助。

1.Kubernetes的一些理念:

用戶不需要關(guān)心需要多少臺機(jī)器,只需要關(guān)心軟件(服務(wù))運(yùn)行所需的環(huán)境。以服務(wù)為中心,你需要關(guān)心的是api,如何把大服務(wù)拆分成小服務(wù),如何使用api去整合它們。

保證系統(tǒng)總是按照用戶指定的狀態(tài)去運(yùn)行。

不僅僅提給你供容器服務(wù),同樣提供一種軟件系統(tǒng)升級的方式;在保持HA的前提下去升級系統(tǒng)是很多用戶最想要的功能,也是最難實現(xiàn)的。

那些需要擔(dān)心和不需要擔(dān)心的事情。

更好的支持微服務(wù)理念,劃分、細(xì)分服務(wù)之間的邊界,比如lablel、pod等概念的引入。

對于Kubernetes的架構(gòu),可以參考官方文檔。

大致由一些主要組件構(gòu)成,包括Master節(jié)點(diǎn)上的kube-apiserver、kube-scheduler、kube-controller-manager、控制組件kubectl、狀態(tài)存儲etcd、Slave節(jié)點(diǎn)上的kubelet、kube-proxy,以及底層的網(wǎng)絡(luò)支持(可以用Flannel、OpenVSwitch、Weave等)。

看上去也是微服務(wù)的架構(gòu)設(shè)計,不過目前還不能很好支持單個服務(wù)的橫向伸縮,但這個會在 Kubernetes 的未來版本中解決。

2.Kubernetes的主要特性

會從網(wǎng)絡(luò)、服務(wù)發(fā)現(xiàn)、負(fù)載均衡、資源管理、高可用、存儲、安全、監(jiān)控等方面向大家簡單介紹Kubernetes的這些主要特性 -> 由于時間有限,只能簡單一些了。

另外,對于服務(wù)發(fā)現(xiàn)、高可用和監(jiān)控的一些更詳細(xì)的介紹,感興趣的朋友可以通過這篇文章了解。

1)網(wǎng)絡(luò)

Kubernetes的網(wǎng)絡(luò)方式主要解決以下幾個問題:

a. 緊耦合的容器之間通信,通過 Pod 和 localhost 訪問解決。

b. Pod之間通信,建立通信子網(wǎng),比如隧道、路由,F(xiàn)lannel、Open vSwitch、Weave。

c. Pod和Service,以及外部系統(tǒng)和Service的通信,引入Service解決。

Kubernetes的網(wǎng)絡(luò)會給每個Pod分配一個IP地址,不需要在Pod之間建立鏈接,也基本不需要去處理容器和主機(jī)之間的端口映射。

注意:Pod重建后,IP會被重新分配,所以內(nèi)網(wǎng)通信不要依賴Pod IP;通過Service環(huán)境變量或者DNS解決。

2) 服務(wù)發(fā)現(xiàn)及負(fù)載均衡

kube-proxy和DNS, 在v1之前,Service含有字段portalip 和publicIPs, 分別指定了服務(wù)的虛擬ip和服務(wù)的出口機(jī)ip,publicIPs可任意指定成集群中任意包含kube-proxy的節(jié)點(diǎn),可多個。portalIp 通過NAT的方式跳轉(zhuǎn)到container的內(nèi)網(wǎng)地址。在v1版本中,publicIPS被約定廢除,標(biāo)記為deprecatedPublicIPs,僅用作向后兼容,portalIp也改為ClusterIp, 而在service port 定義列表里,增加了nodePort項,即對應(yīng)node上映射的服務(wù)端口。

DNS服務(wù)以addon的方式,需要安裝skydns和kube2dns。kube2dns會通過讀取Kubernetes API獲取服務(wù)的clusterIP和port信息,同時以watch的方式檢查service的變動,及時收集變動信息,并將對于的ip信息提交給etcd存檔,而skydns通過etcd內(nèi)的DNS記錄信息,開啟53端口對外提供服務(wù)。大概的DNS的域名記錄是servicename.namespace.tenx.domain, "tenx.domain"是提前設(shè)置的主域名。

注意:kube-proxy 在集群規(guī)模較大以后,可能會有訪問的性能問題,可以考慮用其他方式替換,比如HAProxy,直接導(dǎo)流到Service 的endpints 或者 Pods上。Kubernetes官方也在修復(fù)這個問題。

3)資源管理

有3 個層次的資源限制方式,分別在Container、Pod、Namespace 層次。Container層次主要利用容器本身的支持,比如Docker 對CPU、內(nèi)存、磁盤、網(wǎng)絡(luò)等的支持;Pod方面可以限制系統(tǒng)內(nèi)創(chuàng)建Pod的資源范圍,比如最大或者最小的CPU、memory需求;Namespace層次就是對用戶級別的資源限額了,包括CPU、內(nèi)存,還可以限定Pod、rc、service的數(shù)量。

資源管理模型 -》 簡單、通用、準(zhǔn)確,并可擴(kuò)展

目前的資源分配計算也相對簡單,沒有什么資源搶占之類的強(qiáng)大功能,通過每個節(jié)點(diǎn)上的資源總量、以及已經(jīng)使用的各種資源加權(quán)和,來計算某個Pod優(yōu)先非配到哪些節(jié)點(diǎn),還沒有加入對節(jié)點(diǎn)實際可用資源的評估,需要自己的scheduler plugin來支持。其實kubelet已經(jīng)可以拿到節(jié)點(diǎn)的資源,只要進(jìn)行收集計算即可,相信Kubernetes的后續(xù)版本會有支持。

4)高可用

主要是指Master節(jié)點(diǎn)的 HA方式 官方推薦 利用etcd實現(xiàn)master 選舉,從多個Master中得到一個kube-apiserver 保證至少有一個master可用,實現(xiàn)high availability。對外以loadbalancer的方式提供入口。這種方式可以用作ha,但仍未成熟,據(jù)了解,未來會更新升級ha的功能。

一張圖幫助大家理解:

也就是在etcd集群背景下,存在多個kube-apiserver,并用pod-master保證僅是主master可用。同時kube-sheduller和kube-controller-manager也存在多個,而且伴隨著kube-apiserver 同一時間只能有一套運(yùn)行。

5) rolling upgrade

RC 在開始的設(shè)計就是讓rolling upgrade變的更容易,通過一個一個替換Pod來更新service,實現(xiàn)服務(wù)中斷時間的最小化?;舅悸肥莿?chuàng)建一個復(fù)本為1的新的rc,并逐步減少老的rc的復(fù)本、增加新的rc的復(fù)本,在老的rc數(shù)量為0時將其刪除。

通過kubectl提供,可以指定更新的鏡像、替換pod的時間間隔,也可以rollback 當(dāng)前正在執(zhí)行的upgrade操作。

同樣, Kuberntes也支持多版本同時部署,并通過lable來進(jìn)行區(qū)分,在service不變的情況下,調(diào)整支撐服務(wù)的Pod,測試、監(jiān)控新Pod的工作情況。

6)存儲

大家都知道容器本身一般不會對數(shù)據(jù)進(jìn)行持久化處理,在Kubernetes中,容器異常退出,kubelet也只是簡單的基于原有鏡像重啟一個新的容器。另外,如果我們在同一個Pod中運(yùn)行多個容器,經(jīng)常會需要在這些容器之間進(jìn)行共享一些數(shù)據(jù)。Kuberenetes 的 Volume就是主要來解決上面兩個基礎(chǔ)問題的。

Docker 也有Volume的概念,但是相對簡單,而且目前的支持很有限,Kubernetes對Volume則有著清晰定義和廣泛的支持。其中最核心的理念:Volume只是一個目錄,并可以被在同一個Pod中的所有容器訪問。而這個目錄會是什么樣,后端用什么介質(zhì)和里面的內(nèi)容則由使用的特定Volume類型決定。

創(chuàng)建一個帶Volume的Pod:

spec.volumes 指定這個Pod需要的volume信息 spec.containers.volumeMounts 指定哪些container需要用到這個Volume Kubernetes對Volume的支持非常廣泛,有很多貢獻(xiàn)者為其添加不同的存儲支持,也反映出Kubernetes社區(qū)的活躍程度。

emptyDir 隨Pod刪除,適用于臨時存儲、災(zāi)難恢復(fù)、共享運(yùn)行時數(shù)據(jù),支持 RAM-backed filesystemhostPath 類似于Docker的本地Volume 用于訪問一些本地資源(比如本地Docker)。

gcePersistentDisk GCE disk - 只有在 Google Cloud Engine 平臺上可用。

awsElasticBlockStore 類似于GCE disk 節(jié)點(diǎn)必須是 AWS EC2的實例 nfs - 支持網(wǎng)絡(luò)文件系統(tǒng)。

rbd - Rados Block Device - Ceph

secret 用來通過Kubernetes API 向Pod 傳遞敏感信息,使用 tmpfs (a RAM-backed filesystem)

persistentVolumeClaim - 從抽象的PV中申請資源,而無需關(guān)心存儲的提供方

glusterfs

iscsi

gitRepo

根據(jù)自己的需求選擇合適的存儲類型,反正支持的夠多,總用一款適合的 :)

7)安全

一些主要原則:

基礎(chǔ)設(shè)施模塊應(yīng)該通過API server交換數(shù)據(jù)、修改系統(tǒng)狀態(tài),而且只有API server可以訪問后端存儲(etcd)。

把用戶分為不同的角色:Developers/Project Admins/Administrators。

允許Developers定義secrets 對象,并在pod啟動時關(guān)聯(lián)到相關(guān)容器。

以secret 為例,如果kubelet要去pull 私有鏡像,那么Kubernetes支持以下方式:

通過docker login 生成 .dockercfg 文件,進(jìn)行全局授權(quán)。

通過在每個namespace上創(chuàng)建用戶的secret對象,在創(chuàng)建Pod時指定 imagePullSecrets 屬性(也可以統(tǒng)一設(shè)置在serviceAcouunt 上),進(jìn)行授權(quán)。

認(rèn)證 (Authentication)

API server 支持證書、token、和基本信息三種認(rèn)證方式。

授權(quán) (Authorization)

通過apiserver的安全端口,authorization會應(yīng)用到所有http的請求上

AlwaysDeny、AlwaysAllow、ABAC三種模式,其他需求可以自己實現(xiàn)Authorizer接口。

8)監(jiān)控

比較老的版本Kubernetes需要外接cadvisor主要功能是將node主機(jī)的container metrics抓取出來。在較新的版本里,cadvior功能被集成到了kubelet組件中,kubelet在與docker交互的同時,對外提供監(jiān)控服務(wù)。

Kubernetes集群范圍內(nèi)的監(jiān)控主要由kubelet、heapster和storage backend(如influxdb)構(gòu)建。Heapster可以在集群范圍獲取metrics和事件數(shù)據(jù)。它可以以pod的方式運(yùn)行在k8s平臺里,也可以單獨(dú)運(yùn)行以standalone的方式。

注意: heapster目前未到1.0版本,對于小規(guī)模的集群監(jiān)控比較方便。但對于較大規(guī)模的集群,heapster目前的cache方式會吃掉大量內(nèi)存。因為要定時獲取整個集群的容器信息,信息在內(nèi)存的臨時存儲成為問題,再加上heaspter要支持api獲取臨時metrics,如果將heapster以pod方式運(yùn)行,很容易出現(xiàn)OOM。所以目前建議關(guān)掉cache并以standalone的方式獨(dú)立出k8s平臺。


查看完整回答
反對 回復(fù) 2018-11-08
  • 1 回答
  • 0 關(guān)注
  • 1789 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號