主要內(nèi)容:
K8s介紹
K8s組件介紹
K8s中zookeeper集群部署
K8s常見(jiàn)故障及處理方法
1. 服務(wù)發(fā)現(xiàn)和負(fù)載均衡
Kubernetes 可以使用 DNS 名稱(chēng)或自己的 IP 地址公開(kāi)容器,如果到容器的流量很大,Kubernetes 可以負(fù)載均衡并分配網(wǎng)絡(luò)流量,從而使部署穩(wěn)定。
2. 存儲(chǔ)編排
Kubernetes 允許您自動(dòng)掛載您選擇的存儲(chǔ)系統(tǒng),例如本地存儲(chǔ)、公共云提供商等
3. 自動(dòng)部署和回滾
您可以使用 Kubernetes 描述已部署容器的所需狀態(tài),它可以以受控的速率將實(shí)際狀態(tài)更改為所需狀態(tài)。例如,您可以自動(dòng)化 Kubernetes 來(lái)為您的部署創(chuàng)建新容器,刪除現(xiàn)有容器并將它們的所有資源用于新容器。
4. 自我修復(fù)
Kubernetes 重新啟動(dòng)失敗的容器、替換容器、殺死不響應(yīng)用戶(hù)定義的運(yùn)行狀況檢查的容器,并且在準(zhǔn)備好服務(wù)之前不將其通告給客戶(hù)端。
5. 密鑰與配置管理
Kubernetes 允許您存儲(chǔ)和管理敏感信息,例如密碼、OAuth 令牌和 ssh 密鑰。您可以在不重建容器鏡像的情況下部署和更新密鑰和應(yīng)用程序配置,也無(wú)需在堆棧配置中暴露密鑰。
etcd 是兼具一致性和高可用性的鍵值數(shù)據(jù)庫(kù),用于存儲(chǔ)K8S中資源對(duì)象,如集群中Pod,Node等狀態(tài)以及配置數(shù)據(jù)等。生產(chǎn)中需要對(duì)etcd進(jìn)行高可用部署,通常為三個(gè)節(jié)點(diǎn)到七個(gè)節(jié)點(diǎn)之間的奇數(shù)節(jié)點(diǎn),并且需要定期進(jìn)行數(shù)據(jù)備份。etcd各個(gè)節(jié)點(diǎn)使用raft共識(shí)算法進(jìn)行數(shù)據(jù)復(fù)制。當(dāng)節(jié)點(diǎn)數(shù)量過(guò)多會(huì)導(dǎo)致仲裁和數(shù)據(jù)復(fù)制的效率降低!
在kubernetes集群中,僅apiserver會(huì)和etcd集群進(jìn)行通信。在k8s集群中,etcd的性能至關(guān)重要!
master和node是兩個(gè)邏輯上節(jié)點(diǎn),當(dāng)服務(wù)器資源充足時(shí),可以將其分開(kāi)在不同的機(jī)器上部署,當(dāng)服務(wù)器資源不足時(shí),也可以放到同一臺(tái)機(jī)器上部署。master節(jié)點(diǎn)在部署的時(shí)候必須要考慮高可用方案,至少部署兩個(gè)master。
主節(jié)點(diǎn)上負(fù)責(zé)提供 Kubernetes API 服務(wù)的組件;它是 Kubernetes 控制面的前端。是整個(gè)集群中資源操作的唯一入口,并提供認(rèn)證、授權(quán)、訪(fǎng)問(wèn)控制、API注冊(cè)和發(fā)現(xiàn)等機(jī)制。
apiserver提供了集群管理的restful api接口(鑒權(quán)、數(shù)據(jù)校驗(yàn)、集群變更等),負(fù)責(zé)和其它模塊之間進(jìn)行數(shù)據(jù)交互,承擔(dān)了通信樞紐功能。
apiserver是無(wú)狀態(tài)的,可以橫向擴(kuò)展,當(dāng)存在多個(gè)apiserver時(shí),前端會(huì)采用LB作為負(fù)載均衡,如Nginx,LVS,ELB等
controller manager 譯為“控制器管理器”,k8s內(nèi)部有很多資源控制器,比如:Node Controller、Replication Controller、Deployment Controller、Job Controller、Endpoints Controller等等,為了降低復(fù)雜度,將這些控制切都編譯成了一個(gè)可執(zhí)行文件,并且在同一個(gè)進(jìn)程中運(yùn)行。controller manager 負(fù)責(zé)維護(hù)集群的狀態(tài),比如故障檢測(cè)、自動(dòng)擴(kuò)展、滾動(dòng)更新等。
controller-manager 雖然允許同時(shí)運(yùn)行多個(gè)實(shí)例,但是只有一個(gè)能成為leader,并處理控制器的請(qǐng)求。controller-manager 鎖對(duì)象存儲(chǔ)在 kube-system 名稱(chēng)空間下的 kube-controller-manager endpoints對(duì)象中。
調(diào)度器組件監(jiān)視那些新創(chuàng)建的未指定運(yùn)行節(jié)點(diǎn)的 Pod,并選擇節(jié)點(diǎn)讓 Pod 在上面運(yùn)行。調(diào)度決策考慮的因素包括單個(gè) Pod 和 Pod 集合的資源需求、硬件/軟件/策略約束、親和性和反親和性規(guī)范、數(shù)據(jù)位置、工作負(fù)載間的干擾和最后時(shí)限。
一個(gè)在集群中每個(gè)節(jié)點(diǎn)上運(yùn)行的代理,kubelet 接收一組通過(guò)各類(lèi)機(jī)制提供給它的 PodSpecs,確保這些 PodSpecs 中描述的容器處于運(yùn)行狀態(tài)且健康。kubelet 不會(huì)管理非 Kubernetes 創(chuàng)建的容器。
kube-proxy 是集群中每個(gè)節(jié)點(diǎn)上運(yùn)行的網(wǎng)絡(luò)代理,是實(shí)現(xiàn)service資源功能組件之一。kube-proxy 建立了pod網(wǎng)絡(luò)和集群網(wǎng)絡(luò)之間的關(guān)系,即 cluster ip 和 pod ip 中間的關(guān)系。不同node上的service流量轉(zhuǎn)發(fā)規(guī)則會(huì)通過(guò)kube-proxy進(jìn)行更新,其實(shí)是調(diào)用apiserver訪(fǎng)問(wèn)etcd進(jìn)行規(guī)則更新。
service流量調(diào)度方式有三種方式: userspace(廢棄,性能很差)、iptables(性能差,復(fù)雜)、ipvs(性能好,轉(zhuǎn)發(fā)方式清晰)。
即容器運(yùn)行環(huán)境,Kubernetes 支持多個(gè)容器運(yùn)行環(huán)境: Docker、 containerd、cri-o、 rktlet 以及任何實(shí)現(xiàn) Kubernetes CRI (容器運(yùn)行環(huán)境接口)。常用的是Docker CE。
通過(guò) echo 1 > /proc/sys/net/ipv4/ip_forward
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config
更多精彩干貨分享
點(diǎn)擊下方名片關(guān)注
IT那活兒
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/129865.html
摘要:二月份,微軟正式加入支持的行列,宣布容器服務(wù)支持。去年月,在亞馬遜彈性容器服務(wù)首次亮相。是年的最后一次重大更新,于月日正式推出。值得注意的公告包括亞馬遜網(wǎng)絡(luò)服務(wù)于八月份以白金會(huì)員最高級(jí)別加入了。 2017年的云計(jì)算市場(chǎng),有一個(gè)領(lǐng)域獲得了空前的關(guān)注 -- Kubernetes。 Kubernetes可以追溯到2014年,當(dāng)時(shí)Google公開(kāi)發(fā)布了該項(xiàng)目的開(kāi)源代碼。2017年,Kubern...
摘要:二月份,微軟正式加入支持的行列,宣布容器服務(wù)支持。去年月,在亞馬遜彈性容器服務(wù)首次亮相。是年的最后一次重大更新,于月日正式推出。值得注意的公告包括亞馬遜網(wǎng)絡(luò)服務(wù)于八月份以白金會(huì)員最高級(jí)別加入了。 2017年的云計(jì)算市場(chǎng),有一個(gè)領(lǐng)域獲得了空前的關(guān)注 -- Kubernetes。 Kubernetes可以追溯到2014年,當(dāng)時(shí)Google公開(kāi)發(fā)布了該項(xiàng)目的開(kāi)源代碼。2017年,Kubern...
摘要:在這一假設(shè)之下,是一個(gè)新奇的觀點(diǎn)編排才是容器生態(tài)的中心,而引擎就我們所知,只是一個(gè)開(kāi)發(fā)工具。是特有的概念,但容器生態(tài)系統(tǒng)必須采用這個(gè)概念。 showImg(https://segmentfault.com/img/remote/1460000007157260?w=640&h=480); 開(kāi)源項(xiàng)目 CRI-O ,其前身為 OCID ,官方簡(jiǎn)介是 OCI-based implementa...
摘要:騰訊云在年底決定開(kāi)發(fā)容器產(chǎn)品隨后組建容器技術(shù)團(tuán)隊(duì)并進(jìn)行技術(shù)選型通過(guò)對(duì)不同編排工具的分析對(duì)比最終選擇作為容器編排引擎并且迅速在年初推出容器解決方案為用戶(hù)提供托管的一站式服務(wù)。但是騰訊云最終選擇了現(xiàn)在看來(lái)這個(gè)選擇無(wú)比正確。Kubernetes 很火,一大批互聯(lián)網(wǎng)公司早已領(lǐng)先一步,搭建起專(zhuān)有的 PaaS平臺(tái),傳統(tǒng)企業(yè)們看到的 Kubernetes的趨勢(shì),亦不甘落后,在試水的道上一路狂奔。雖然,Ku...
摘要:面對(duì)平臺(tái)化的競(jìng)爭(zhēng),推出了調(diào)度引擎,但從未真正流行起來(lái),因?yàn)檎麄€(gè)行業(yè)更傾向于采用,這是第一次死亡它失去了平臺(tái)之戰(zhàn)。左耳朵耗子說(shuō)過(guò)一段話(huà),讓人深以為然:我清楚地看到了 Go 和 Docker 這兩種技術(shù)的生態(tài)圈發(fā)展過(guò)程。讓我收獲最大的并不是這些技術(shù)本身,而是技術(shù)的變遷和行業(yè)的發(fā)展。從中,我看到了非常具體的各種思潮和思路,這些更有價(jià)值...... 這些關(guān)鍵新技術(shù),可以讓你拿到技術(shù)的先機(jī)。這些對(duì)一個(gè)...
摘要:從容器到容器編排平臺(tái)以及周邊生態(tài)系統(tǒng)包含很多工具來(lái)管理容器的生命周期。終止運(yùn)行中的容器。發(fā)現(xiàn)在由運(yùn)行于多個(gè)主機(jī)上的容器組成的分布式部署容器發(fā)現(xiàn)至關(guān)重要。類(lèi)似的,當(dāng)容器崩潰時(shí),編排工具可以啟動(dòng)替換。 從容器到容器編排 Docker平臺(tái)以及周邊生態(tài)系統(tǒng)包含很多工具來(lái)管理容器的生命周期。例如,Docker Command Line Interface(CLI)支持下面的容器活動(dòng): 從注冊(cè)表...
閱讀 1356·2023-01-11 13:20
閱讀 1707·2023-01-11 13:20
閱讀 1215·2023-01-11 13:20
閱讀 1906·2023-01-11 13:20
閱讀 4165·2023-01-11 13:20
閱讀 2757·2023-01-11 13:20
閱讀 1402·2023-01-11 13:20
閱讀 3671·2023-01-11 13:20