溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何理解kubernetes的基本知識(shí)

發(fā)布時(shí)間:2021-11-23 10:25:35 來(lái)源:億速云 閱讀:158 作者:柒染 欄目:云計(jì)算

這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)?lái)有關(guān)如何理解kubernetes的基本知識(shí),文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

kubernetes基本介紹

一、kubernetes是什么?   

    Kubernetes是一個(gè)開源的容器管理平臺(tái),簡(jiǎn)稱k8s,用于管理多個(gè)主機(jī)上的容器化應(yīng)用程序,提供應(yīng)用程序的快速部署,擴(kuò)縮容,升級(jí),維護(hù)和擴(kuò)展等機(jī)制,利用service可以實(shí)現(xiàn)服務(wù)注冊(cè)、發(fā)現(xiàn)以及四層負(fù)載均衡,通過(guò)ingress可以實(shí)現(xiàn)七層負(fù)載均衡等功能,Kubernetes這個(gè)名字源于希臘語(yǔ),意思是舵手或飛行員,谷歌在2014年開放了Kubernetes項(xiàng)目,Kubernetes建立在谷歌擁有大量運(yùn)行生產(chǎn)工作量的十五年經(jīng)驗(yàn)的基礎(chǔ)上,結(jié)合了社區(qū)中的最佳創(chuàng)意和實(shí)踐,社區(qū)活躍度極高,幕后擁有大量技術(shù)人員在維護(hù)和支持。

二、kubernetes容器編排工具的優(yōu)勢(shì)

    

     1.用戶體驗(yàn)效果好,可以快速上手操作:

擁有良好的web ui界面,可以實(shí)現(xiàn)應(yīng)用程序的快速部署,升級(jí),擴(kuò)容,縮容,回滾等。

     2.根據(jù)節(jié)點(diǎn)資源的使用情況對(duì)pod進(jìn)行合理的調(diào)度:

可以按照用戶需要調(diào)度pod,例如保證Pod只在資源足夠的節(jié)點(diǎn)上運(yùn)行,會(huì)嘗試把同一功能的pod分散在不同的節(jié)點(diǎn)上,還會(huì)嘗試平衡不同節(jié)點(diǎn)的資源使用率等。

     3.靈活部署:

支持多種平臺(tái),如公有云、私有云、混合云,VMware vSphere、VMware Workstation、虛擬機(jī)、物理機(jī)等。

    4.完善的認(rèn)證授權(quán)機(jī)制,自帶審計(jì)功能:

可以對(duì)多用戶做細(xì)化的授權(quán)管理,達(dá)到相互之間的操作完全隔離,互不影響,而且自身帶有審計(jì)功能,可以對(duì)操作過(guò)程進(jìn)行實(shí)時(shí)的日志記錄,出現(xiàn)問(wèn)題可以方便排查。

    5.可擴(kuò)展性強(qiáng):

擁有強(qiáng)大的集群擴(kuò)展能力,可以根據(jù)業(yè)務(wù)規(guī)模自動(dòng)增加和縮減主機(jī)節(jié)點(diǎn)的數(shù)量,確保服務(wù)可以承受大量并發(fā)帶來(lái)的壓力,保證業(yè)務(wù)穩(wěn)定運(yùn)行。

    6.擁有完善的災(zāi)備預(yù)警解決方案:

擁有多種災(zāi)備解決方案,支持備份和容災(zāi),出現(xiàn)故障可以達(dá)到秒級(jí)切換,保證線上業(yè)務(wù)不受影響。

    7.支持windows節(jié)點(diǎn):

kubernetes支持將windows節(jié)點(diǎn)添加為工作節(jié)點(diǎn)并部署windows容器,確保不再受到具體的操作系統(tǒng)類型的影響,提升整體部署的效率。

三、應(yīng)用場(chǎng)景實(shí)踐

   1.kubernetes在日志管理系統(tǒng)中的應(yīng)用

 在生產(chǎn)環(huán)境中,日志對(duì)于排查問(wèn)題至關(guān)重要,我們需要有一個(gè)日志管理系統(tǒng),如efk,kubernetes可以實(shí)現(xiàn)efk的快速部署,通過(guò)采用daemonset控制器部署fluentd組件,來(lái)收集節(jié)點(diǎn)和k8s集群的日志,通過(guò)kubernetes部署efk日志管理系統(tǒng)可實(shí)現(xiàn)如下功能:

(1)如果集群擴(kuò)容,那么daemonset控制器會(huì)自動(dòng)檢測(cè)到新增加的node節(jié)點(diǎn),就會(huì)在新的node節(jié)點(diǎn)上部署fluentd,完成日志收集,這就可以減少人為干預(yù),提高工作效率,確保日志可以被正常收集;(2)如果es數(shù)據(jù)量大,kubernetes可以實(shí)現(xiàn)集群中pod應(yīng)用的水平擴(kuò)展,完成應(yīng)用的彈性擴(kuò)容和收縮等操作。

   2.kubernetes在DevOps場(chǎng)景下的應(yīng)用:

    DevOps是一套完整的運(yùn)維開發(fā)流程,可以實(shí)現(xiàn)快速的構(gòu)建、測(cè)試和發(fā)布軟件,整個(gè)流程包括敏捷開發(fā)->持續(xù)集成->持續(xù)交付->持續(xù)部署->DevOps,通過(guò) Kubernetes,我們可以實(shí)現(xiàn)容器在多個(gè)計(jì)算節(jié)點(diǎn)上的統(tǒng)一調(diào)度,可以將容器對(duì)接到持久存儲(chǔ)、虛擬網(wǎng)絡(luò),還可以實(shí)現(xiàn)彈性伸縮等,提高了產(chǎn)品的迭代速度,在DevOps體系下加入k8s可以實(shí)現(xiàn)如下功能:

(1)多集群管理:可以根據(jù)客戶需求對(duì)開發(fā),測(cè)試,生產(chǎn)環(huán)境部署多套kubernetes集群,每個(gè)環(huán)境使用獨(dú)立的物理資源,相互之間避免影響;(2)多環(huán)境一致性:Kubernetes是基于docker的容器編排工具,因?yàn)槿萜鞯溺R像是不可變的,所以鏡像把 OS、業(yè)務(wù)代碼、運(yùn)行環(huán)境、程序庫(kù)、目錄結(jié)構(gòu)都包含在內(nèi),鏡像保存在我們的私有倉(cāng)庫(kù),只要用戶從我們提供的私有倉(cāng)庫(kù)拉取鏡像,就能保證環(huán)境的一致性;(3)持續(xù)集成,持續(xù)部署,持續(xù)交付:可以讓產(chǎn)品快速迭代,自動(dòng)部署,根據(jù)客戶的要求達(dá)到持續(xù)交付的能力。

   3.kubernetes在微服務(wù)中的應(yīng)用

  service Mesh可以很好地保證未拆分的應(yīng)用與已經(jīng)拆分出來(lái)的微服務(wù)之間的互通和統(tǒng)一治理,不將業(yè)務(wù)代碼與任何框架,平臺(tái)或者服務(wù)綁定,管理微服務(wù)時(shí),我們需要對(duì)這些微服務(wù)和它們的調(diào)用關(guān)系進(jìn)行注冊(cè)、為其分配資源、創(chuàng)建一定數(shù)量的節(jié)點(diǎn)副本、并發(fā)布到集群中去;同時(shí)還要為其配置好網(wǎng)絡(luò)和負(fù)載均衡,使這些微服務(wù)能夠被外部訪問(wèn),在這些微服務(wù)的運(yùn)行過(guò)程中,需要始終保持其可用性,一旦有節(jié)點(diǎn)出現(xiàn)問(wèn)題,需要立即創(chuàng)建新的節(jié)點(diǎn)將其替換掉,運(yùn)行過(guò)程中需要對(duì)這些微服務(wù)進(jìn)行監(jiān)控和日志收集;在負(fù)載發(fā)生變化的時(shí)候,還要能夠迅速調(diào)整資源分配,kubernetes在微服務(wù)中可實(shí)現(xiàn)如下功能:

(1)服務(wù)發(fā)現(xiàn):通過(guò)service可以實(shí)現(xiàn)服務(wù)發(fā)現(xiàn),負(fù)載均衡,自修復(fù),自動(dòng)關(guān)聯(lián);(2)提供統(tǒng)一的配置管理中心:對(duì)于配置中心,K8S提供了configMap,可以在容器啟動(dòng)的時(shí)候,將配置注入到環(huán)境變量或者Volume里面;(3)彈性伸縮:通過(guò)控制器創(chuàng)建指定數(shù)量的pod副本,通過(guò)hpa可以實(shí)現(xiàn)pod應(yīng)用的水平擴(kuò)容和回收;(4)通過(guò)jenkins實(shí)現(xiàn)持續(xù)集成/持續(xù)部署(5)自動(dòng)擴(kuò)展:當(dāng)Kubernetes集群的資源嚴(yán)重不足而導(dǎo)致Job排隊(duì)等待時(shí),可以很容易的添加一個(gè)Kubernetes Node到集群中,從而實(shí)現(xiàn)擴(kuò)展。

四、kubernetes特點(diǎn)

   1. 可移植: 

支持公有云,私有云,混合云,多重云(multi-cloud)

   2. 可擴(kuò)展: 

模塊化, 插件化, 可掛載, 可組合

   3. 自愈: 

自動(dòng)布置,自動(dòng)重啟,自動(dòng)復(fù)制,自動(dòng)擴(kuò)展。

五、kubernetes功能詳細(xì)介紹

   1. 多租戶的網(wǎng)絡(luò)隔離:

Kubernetes支持多種網(wǎng)絡(luò)插件,如flannel,calico,canel等,每個(gè)插件都有獨(dú)特的性能,可以分別適用于多種場(chǎng)景,我們可以利用calico的network policy(網(wǎng)絡(luò)策略)解決k8s中的網(wǎng)絡(luò)隔離,對(duì)于多租戶場(chǎng)景,可以每一個(gè)用戶一個(gè)名稱空間,然后對(duì)這個(gè)名稱空間設(shè)置網(wǎng)絡(luò)隔離。

   2. 高可用:

kubernetes中支持多種高可用解決方案,如keepalive+nginx,keepalived+haproxy等,可以使訪問(wèn)流量分發(fā)到不同的主機(jī)節(jié)點(diǎn),減輕節(jié)點(diǎn)壓力,如果某個(gè)節(jié)點(diǎn)出現(xiàn)故障,可以實(shí)現(xiàn)妙級(jí)切換,達(dá)到高可用,保證業(yè)務(wù)不中斷;

  3. 用戶數(shù)據(jù)的持久化存儲(chǔ):

  kubernetes支持多種持久化存儲(chǔ)解決方案,保證數(shù)據(jù)可以得到很好的備份,降低用戶數(shù)據(jù)丟失的風(fēng)險(xiǎn),kubernetes中可使用的存儲(chǔ)方案如下:

(1)本地存儲(chǔ)emptyDir,hostPath(2)網(wǎng)絡(luò)連接類存儲(chǔ)SAN/網(wǎng)絡(luò)附加存儲(chǔ):iSCSINAS/存儲(chǔ)局域網(wǎng)絡(luò):nfs,cifs(3)分布式存儲(chǔ)glusterfs,ceph/塊級(jí)別的存儲(chǔ),cephfs/文件系統(tǒng)級(jí)別的存儲(chǔ)(4)云存儲(chǔ):Azure Disk等

   4. 擁有多種更新回滾策略

通過(guò)管理kubernetes的控制器和service等,可以實(shí)現(xiàn)灰度發(fā)布,藍(lán)綠部署,金絲雀發(fā)布等,達(dá)到業(yè)務(wù)的快速和回滾等操作,用以滿足不同客戶的不同升級(jí)需求。

   5. 彈性伸縮

根據(jù)訪問(wèn)的流量壓力,可以實(shí)現(xiàn)pod的水平擴(kuò)容和縮減,達(dá)到秒級(jí)擴(kuò)容,讓pod始終處于滿足業(yè)務(wù)正常運(yùn)行時(shí)所需的數(shù)量即可,避免了資源的浪費(fèi)。

   6. Kubernetes可以滿足很多運(yùn)行環(huán)境中應(yīng)用的需求,如下:

進(jìn)程協(xié)同,利用復(fù)合應(yīng)用保證應(yīng)用和容器一對(duì)一的模型存儲(chǔ)系統(tǒng)掛載分發(fā)密鑰應(yīng)用健康檢測(cè)應(yīng)用實(shí)例復(fù)制水平自動(dòng)擴(kuò)展命名和發(fā)現(xiàn)負(fù)載均衡滾動(dòng)更新資源監(jiān)控日志訪問(wèn)自檢和調(diào)試識(shí)別和認(rèn)證這為PaaS提供了IaaS層的便利,提供了基礎(chǔ)設(shè)施提供者間的可移植性。


六、kubernetes架構(gòu)
      kubernetes的物理架構(gòu)是master/node模式,master一般是三個(gè)節(jié)點(diǎn)或者五個(gè)節(jié)點(diǎn)做高可用,根據(jù)集群規(guī)模來(lái)定,master高可用指的是對(duì)apiserver做高可用或者對(duì)master的物理節(jié)點(diǎn)做高可用,node可以有多個(gè)節(jié)點(diǎn),專門用來(lái)部署應(yīng)用的,架構(gòu)圖如下所示:

如何理解kubernetes的基本知識(shí)

七、kubernetes核心組件

    1.master節(jié)點(diǎn)組件

    apiserver:提供了資源操作的唯一入口,并提供認(rèn)證、授權(quán)、訪問(wèn)控制、API注冊(cè)和發(fā)現(xiàn)等機(jī)制,負(fù)責(zé)接收、解析、處理請(qǐng)求。

    scheduler:調(diào)度器,負(fù)責(zé)資源的調(diào)度,按照預(yù)定的調(diào)度策略將Pod調(diào)度到相應(yīng)的機(jī)器上。

    kube-controller-manager:控制器,負(fù)責(zé)維護(hù)集群的狀態(tài),檢查pod的健康狀態(tài),比如故障檢測(cè)、自動(dòng)擴(kuò)展、滾動(dòng)更新等一些操作。

    docker:是一個(gè)容器引擎,用于運(yùn)行容器。

    etcd:etcd是一個(gè)key/value形式的鍵值存儲(chǔ),保存了整個(gè)kubernetes集群的狀態(tài),在kubernetes中使用etcd時(shí),需要對(duì)etcd做備份,保證高可用,整個(gè)kubernetes系統(tǒng)中一共有兩個(gè)服務(wù)需要用到etcd用來(lái)協(xié)同和存儲(chǔ)配置,分別是:

(1)網(wǎng)絡(luò)插件calico、對(duì)于其它網(wǎng)絡(luò)插件也需要用到etcd存儲(chǔ)網(wǎng)絡(luò)的配置信息;
(2)kubernetes本身,包括各種對(duì)象的狀態(tài)和元信息配置。
  注:關(guān)于etcd API版本的說(shuō)明

網(wǎng)絡(luò)插件操作etcd使用的是v2的API,而kubernetes操作etcd使用的v3的API,所以在下面我們執(zhí)行etcdctl的時(shí)候需要設(shè)置ETCDCTL_API環(huán)境變量,該變量默認(rèn)值為2,表示使用v2版本的api,v3表示使用v3版本的api。

   2.node節(jié)點(diǎn)(工作節(jié)點(diǎn))組件

   kubelet:負(fù)責(zé)與master節(jié)點(diǎn)的apiserver進(jìn)行通信的,接收到客戶的請(qǐng)求,進(jìn)行創(chuàng)建Pod,管理Pod,啟動(dòng)pod等相關(guān)操作。
  kube-proxy:k8s代理,是在群集中的每個(gè)節(jié)點(diǎn)上運(yùn)行的網(wǎng)絡(luò)代理,kube-proxy負(fù)責(zé)請(qǐng)求轉(zhuǎn)發(fā),一旦發(fā)現(xiàn)了某一個(gè)Service關(guān)聯(lián)的Pod信息發(fā)生了改變(如IP、Port等),由Kube-Proxy就會(huì)把變化后的service轉(zhuǎn)換成IPVS或IPtables規(guī)則中,完成對(duì)后端pod的負(fù)載均衡。
  docker:是一個(gè)容器引擎,用于運(yùn)行容器。

  3.附加組件

   coredns:k8s1.11之前使用的是kubedns,1.11之后才有coredns,coredns是一個(gè)DNS服務(wù)器,能夠?yàn)?Kubernetes services提供 DNS記錄
   dashboard:k8s的web界面,通過(guò)這個(gè)界面可以對(duì)k8s資源進(jìn)行操作
   Ingress Controller :七層負(fù)載均衡控制器,可以創(chuàng)建nginx或者traefik這種七層負(fù)載應(yīng)用,實(shí)現(xiàn)域名和https訪問(wèn)
   prometheus+alertmanager+grafana:監(jiān)控組件
   efk:日志采集組件

上述就是小編為大家分享的如何理解kubernetes的基本知識(shí)了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI