日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Kubernetes与docker集群管理常见问题解析

發(fā)布時(shí)間:2025/3/8 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Kubernetes与docker集群管理常见问题解析 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

很榮幸受邀參加開源中國社區(qū)的高手問答,我是時(shí)速云團(tuán)隊(duì)的后端工程師,負(fù)責(zé)主機(jī)管理功能開發(fā)。在互動(dòng)過程中,發(fā)現(xiàn)大家在使用/調(diào)研kubernetes(簡稱k8s)過程中遇到了很多問題,這里我總結(jié)為幾點(diǎn):

l 如何搭建

l 性能(包括網(wǎng)絡(luò)性能)

l 如何管理容器

l 容器如何對外提供服務(wù)

l K8s 與docker swarm對比

下面我們對這幾個(gè)方面分別說明。

如何搭建

kubernetes項(xiàng)目本身模塊化和功能分離做得很好,優(yōu)點(diǎn)是插件支持度高、 適合多個(gè)模塊多人并行開發(fā),缺點(diǎn)是部署困難。作為一個(gè)分布式系統(tǒng)和我們的特殊國情,部署問題排查更加困難。K8s官方提供了針對多個(gè)云平臺(tái)(和本地)的多個(gè)部署方案(猛戳這里),包括本地集群(Local Machine)、IaaS(GCE、AWS、AZURE)和許多自定義方式。部署方式優(yōu)缺點(diǎn)對比參考下表,個(gè)人比較推薦Local (Docker-based)和Docker: Multi-Node。

本地集群(Local Machine) ,便于調(diào)試、省錢

Local (Docker-based)

優(yōu)點(diǎn):組件都運(yùn)行在容器中,部署方便

缺點(diǎn):gcr.io在墻外,可以替換成index.tenxcloud.com;slave不能通過https方式訪問master

Vagrant

優(yōu)點(diǎn):一鍵部署一個(gè)多節(jié)點(diǎn)集群;Mac用戶的福音

缺點(diǎn):需要裝virtualbox

Local (No VM)

優(yōu)點(diǎn):可以使用自己編譯的etcd等組件,便于本地調(diào)試

缺點(diǎn):依賴多、配置起來有些繁瑣

IaaS(GCE、AWS、AZURE),一鍵部署,爽快

GCE、AWS、AZURE

優(yōu)點(diǎn):一鍵部署,可以用于生產(chǎn)環(huán)境

缺點(diǎn):只能用國外的機(jī)器,國內(nèi)不能用;花錢多

自定義安裝 (為發(fā)騷而生,最符合天朝國情)

裸機(jī)(適配Linux發(fā)行版)Bare Metal

優(yōu)點(diǎn):組件定制,可以使用很多高級功能,可用于生產(chǎn)環(huán)境

缺點(diǎn):配置繁瑣,容易出錯(cuò),樂趣無窮

容器化 Docker: Multi Node

優(yōu)點(diǎn):k8s組件均運(yùn)行在容器中,可移植性好

缺點(diǎn):gcr.io在墻外,可以換成index.tenxcloud.com

性能(包括網(wǎng)絡(luò)性能)

大家比較關(guān)注的性能問題這里分為兩個(gè)方面:調(diào)度性能和網(wǎng)絡(luò)性能。關(guān)于調(diào)度性能,Kubernetes博客上有一篇文章專門講解,這里會(huì)簡單說明一下;關(guān)于網(wǎng)絡(luò)性能,其實(shí)是網(wǎng)絡(luò)插件的性能,關(guān)鍵因子是network overlay-ed or not。

調(diào)度性能

官方給出的數(shù)據(jù)(猛戳鏈接):目前單個(gè)kubernetes集群支持100個(gè)節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)30個(gè)pod,滿足兩條性能指標(biāo):

a. “API-responsiveness”:99%的API調(diào)用能夠在1秒內(nèi)返回(list, get, update, patch, delete)

b. “Pod startup time”: 99%的pod能夠在5秒內(nèi)啟動(dòng)(鏡像提前下載好)

下面表格展示了集群pod飽和度分別在10%、25%、50%和100%時(shí)pod的啟動(dòng)時(shí)間。

10%-full

25%-full

50%-full

100%-full

50th percentile

0.90s

1.08s

1.33s

1.94s

90th percentile

1.29s

1.49s

1.72s

2.50s

99th percentile

1.59s

1.86s

2.56s

4.32s


想知道更多,到Kubernetes博客去看,墻略高,翻過去才能看。

網(wǎng)絡(luò)性能

Kubernetes自身不提供集群內(nèi)節(jié)點(diǎn)組網(wǎng)互連的功能,目前有很多插件方案可以實(shí)現(xiàn),最經(jīng)典莫過于etcd/flannel組合,它在vxlan模式下性能也不錯(cuò)。在CNUT大會(huì)上,浙大張磊分享了他的性能測試數(shù)據(jù),這里直接貼出來(PPT鏈接第45頁):

Qperf test

Flannel UDP

Flannel VxLAN

Weave

Socketplane

Native

TCP bandwidth

28.7 MB/s

47.8 MB/s

3.75 MB/s

42.8 MB/s

62.5 MB/s

TCP latency

200 μs

127 μs

384.4 μs

110.9 μs

96.1μs

這里對比Flannel(udp和vxlan)、Weave、Socketplane和Native網(wǎng)絡(luò)的性能,由于比較早,沒有考慮calico。Flannel udp和Weave是基于overlay network,性能損失比較大,Flannel vxlan、Socketplane與Native網(wǎng)絡(luò)性能差距不大。Calico是基于iptables和路由實(shí)現(xiàn)的,性能與flannel vxlan應(yīng)該在一個(gè)級別上。

在網(wǎng)絡(luò)隔離上,calico提供了網(wǎng)絡(luò)隔離,但是docker 1.9開始內(nèi)置網(wǎng)絡(luò)隔離,意味著下一個(gè)支持docker 1.9的kubernetes可能使用docker自帶的隔離,Calico的優(yōu)勢也將不復(fù)存在,flannel仍然是主流。

如何管理容器

Kubernetes提供了命令行和Rest API兩種方式管理容器,分別為

1. 命令行工具 kubectl。windows、linux和MacOS上均可使用該工具,既可以管理本地集群,也可以操作遠(yuǎn)程集群。查看使用方式猛搓這里。

2. Restful API。API目前有多種語言的版本,go語言版本包含在kubernetes代碼包中,由官方維護(hù)。Node.js版本最初由時(shí)速云CEO黃啟功實(shí)現(xiàn)并開源(Github node-kubernetes-client )。其他語言版本的鏈接這里查看。

容器如何對外提供服務(wù)

在kubernetes集群中創(chuàng)建出的pod是集群內(nèi)可見的,需要從外界訪問的話,可以通過kube-proxy、外部工具(nginx、haproxy等)甚至自己寫一套工具將服務(wù)暴露出來。我們將對這兩種方式分別說明。

Kube-proxy

在創(chuàng)建rc或pod以后,配置對應(yīng)的service的ServiceType可以選擇是否暴露應(yīng)用到外網(wǎng)、如何暴露。ServiceType的值可以是下面三種:

  • ClusterIP:只使用集群內(nèi)部IP。設(shè)置以后,服務(wù)將無法從外部訪問。
  • NodePort:service有一個(gè)集群內(nèi)部IP,同時(shí)也會(huì)把端口暴露到所在宿主機(jī)上。訪問時(shí)既可以通過內(nèi)網(wǎng)ip:port訪問,也可以通過<NodeIP>:NodePort訪問。
  • LoadBalancer:service有一個(gè)集群內(nèi)部IP,同時(shí)將其暴露到宿主機(jī)上,而且會(huì)要求云服務(wù)提供商提供一個(gè)負(fù)載均衡器指向<NodeIP>:NodePort。

外部插件(Nginx、Haproxy)

通過修改nginx或haproxy的配置文件,將內(nèi)網(wǎng)中的service暴露到主機(jī)上。

自定義

自己實(shí)現(xiàn)一套路由轉(zhuǎn)發(fā)工具,將service暴露到主機(jī)上

Kubernetes vs docker swarm

很多人問,kubernetes和docker swarm哪個(gè)棒,我可以心懷偏見地告訴你kubernetes綜合實(shí)力最棒。這里不談爹,只說設(shè)計(jì)理念、易用性和對微服務(wù)的支持。

為了不失偏頗,先說Docker swarm的優(yōu)點(diǎn)。Docker swarm在分布式支持、微服務(wù)的設(shè)計(jì)上借鑒了很多kubernetes的理念和做法,同時(shí)避免了kubernetes的一些問題,在易用性和學(xué)習(xí)曲線上完爆kubernetes。

Docker swarm把集群當(dāng)成一個(gè)超級機(jī)器,典型特征是對docker API的自然延伸,尤其便于docker用戶的理解。反過來,kubernetes把集群當(dāng)成一個(gè)可調(diào)度的資源池,在物理層面對集群、節(jié)點(diǎn)、應(yīng)用三個(gè)級別分別提供了API,應(yīng)用在軟件層面上抽象成replication controller、service和pod的組合。這種設(shè)計(jì)提供了極大的靈活性和擴(kuò)展性,一方面,使用kubernetes技術(shù)棧即可獲取完整的DevOps體驗(yàn)、無比強(qiáng)大的微服務(wù)支持;另一方面,replication controller、service和pod的解耦,保證了應(yīng)用的可定制化。這種超前的設(shè)計(jì)理念是Docker Swarm很難模仿和追隨的。

應(yīng)用到工業(yè)生產(chǎn)中,如果你喜歡簡單方便,或者技術(shù)人員培養(yǎng)新技術(shù)的成本過高、周期過長,可以使用docker swarm;如果業(yè)務(wù)對彈性要求比較高,或者規(guī)模比較大,可以選用kubernetes。

最后打一段廣告。時(shí)速云是國內(nèi)領(lǐng)先的容器云平臺(tái)和解決方案提供商,基于以Docker為代表的容器技術(shù),為開發(fā)者和企業(yè)提供應(yīng)用的鏡像構(gòu)建、持續(xù)集成/交付、容器部署、運(yùn)維管理的新一代云服務(wù)平臺(tái)。其中包括標(biāo)準(zhǔn)化、高可用的鏡像構(gòu)建、存儲(chǔ)服務(wù),大規(guī)模、可伸縮的容器托管服務(wù),及自有主機(jī)集群混合云服務(wù)。時(shí)速云致力打造下一代以應(yīng)用為中心的云計(jì)算平臺(tái),幫助客戶優(yōu)化開發(fā)運(yùn)維環(huán)節(jié),;提高業(yè)務(wù)效率,降低IT成本,實(shí)現(xiàn)持續(xù)創(chuàng)新。

本文轉(zhuǎn)自開源中國-Kubernetes與docker集群管理常見問題解析

與50位技術(shù)專家面對面20年技術(shù)見證,附贈(zèng)技術(shù)全景圖

總結(jié)

以上是生活随笔為你收集整理的Kubernetes与docker集群管理常见问题解析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。