精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

K8s和云原生愛橫情仇

云計(jì)算 云原生
Johnny Boursiquot: 大家好,歡迎收聽 Go Time。這是一個多元化的討論節(jié)目,邀請?zhí)貏e嘉賓一起探討 Go 語言及其相關(guān)領(lǐng)域的各種話題,包括云基礎(chǔ)設(shè)施、分布式系統(tǒng)、微服務(wù)、無服務(wù)器架構(gòu),今天特別要討論的是非常流行且開源的容器編排平臺 Kubernetes。

Johnny[2] 和 Mat[3] 與 Kris Nova[4] 和 Joe Beda[5] 一起探討了 Kubernetes 和云原生。他們討論了 Kubernetes 推動的“云原生”應(yīng)用的興起、使用 Kubernetes 的合適場合、運(yùn)行如此大型的開源項(xiàng)目所面臨的挑戰(zhàn)、Kubernetes 的可擴(kuò)展性以及 Kubernetes 如何融入更大的云原生世界。

過程中為符合中文慣用表達(dá)有適當(dāng)刪改, 版權(quán)歸原作者所有.

圖片圖片

Johnny Boursiquot: 大家好,歡迎收聽 Go Time。這是一個多元化的討論節(jié)目,邀請?zhí)貏e嘉賓一起探討 Go 語言及其相關(guān)領(lǐng)域的各種話題,包括云基礎(chǔ)設(shè)施、分布式系統(tǒng)、微服務(wù)、無服務(wù)器架構(gòu),今天特別要討論的是非常流行且開源的容器編排平臺 Kubernetes。

我是 Johnny Boursiquot,今天和我一起的嘉賓陣容非常強(qiáng)大,正如 Mat Ryer 常說的那樣。今天我們請到了 Mat 本人,還有另外兩位對 Kubernetes 非常了解的嘉賓。請歡迎 Joe Beda,前 Heptio(譯者注: 現(xiàn)已被VMware收購) 的 CTO,現(xiàn)在是 VMware 的一員;以及 Kris Nova,一位杰出的作者,同時也是 Kubernetes 的全能專家。大家好!

Joe Beda: 大家好,大家好!

Kris Nova: 嗨!

Johnny Boursiquot: 大家好!

Mat Ryer: 很高興今天能請到你們上節(jié)目。這將是一次非常有趣的討論……我知道很多聽眾對 Kubernetes 很了解,或者至少我認(rèn)為他們很了解 Kubernetes,但我想我們還是需要先統(tǒng)一一下基本概念。這是我們節(jié)目中經(jīng)常做的事情---讓那些剛接觸 Go 的人、剛加入社區(qū)的人和那些已經(jīng)深入了解 Kubernetes 背后有大量 Go 代碼的人都能有所收獲。

讓我們從基本問題開始,先弄清楚什么是容器編排,Kubernetes 在這個體系中扮演什么角色。

Joe Beda: Nova,你想先來解釋一下,還是我先來做一個簡短的 "什么是 Kubernetes" 五分鐘快速介紹?

Kris Nova: 我想聽你先做五分鐘的 Kubernetes 介紹,然后我可以再補(bǔ)充。

Joe Beda: 好的,你可以指出我哪里講錯了。

Kris Nova: [笑]

Joe Beda: 假設(shè)大家對容器有一定的基礎(chǔ)了解---為了統(tǒng)一認(rèn)識,容器的基本概念是將一個程序及其所有依賴項(xiàng)打包成一個東西,并使你可以在不同的機(jī)器上以可預(yù)測的方式運(yùn)行它。所以這實(shí)際上是關(guān)于程序的可移植性。我認(rèn)為 Go 語言開發(fā)者已經(jīng)很幸運(yùn)了,因?yàn)?Go 是靜態(tài)鏈接的,你可以把一個 Go 二進(jìn)制文件拿到任何地方運(yùn)行……但如果你試試用 Ruby 應(yīng)用、PHP 應(yīng)用、Python 應(yīng)用或 Node.js 應(yīng)用來做這件事,就會發(fā)現(xiàn)并不是所有的東西都像 Go 一樣自包含。因此,將這些東西打包成容器是一個很好的選擇。 (譯者注: "Go 是靜態(tài)鏈接"這種說法實(shí)際是不準(zhǔn)確的)

顯然,Docker 讓容器變得非常易用且易于訪問,但最早的 Docker 只在單機(jī)上運(yùn)行,而我們在 Google 構(gòu)建類似系統(tǒng)的經(jīng)驗(yàn)表明,當(dāng)你開始考慮跨多臺機(jī)器的容器可移植性時,事情變得更有趣。

因此,Kubernetes 的作用就是,你告訴它你想運(yùn)行什么---"我想運(yùn)行這個容器鏡像的十個副本",鏡像就是那個東西---然后它決定在何處運(yùn)行這些東西,并確保它們一直在運(yùn)行。

然后你會遇到一系列其他問題---網(wǎng)絡(luò)應(yīng)該如何配置,存儲應(yīng)該如何處理,容器如何互相發(fā)現(xiàn),如何管理指向這些容器的負(fù)載均衡器等。所以,Kubernetes 解決了分配程序到計(jì)算機(jī)后衍生出的許多問題。

從編排的角度來看,這就是 Kubernetes 的作用。與此同時,我們實(shí)際上構(gòu)建了一個通用的分布式系統(tǒng)內(nèi)核,不僅可以描述如何運(yùn)行容器,還可以描述你想運(yùn)行哪些容器,如何升級它們,而且我們還使其具有可擴(kuò)展性,這也是目前 Kubernetes 生態(tài)系統(tǒng)中許多有趣的地方。

Kris Nova: 對,然后我想補(bǔ)充一下---你說得非常棒,一如既往……我唯一想強(qiáng)調(diào)的是,在過去四五年中,我們構(gòu)建 API 的重要性。正如你所說,Joe,它有點(diǎn)像分布式系統(tǒng)的內(nèi)核,但真正的價值在于我們終于能夠在整個行業(yè)中標(biāo)準(zhǔn)化。我們第一次看到大家聚集在一起,以相同的方式定義他們的應(yīng)用程序、網(wǎng)絡(luò)和存儲……這是云原生生態(tài)系統(tǒng)中一個非常強(qiáng)大的原語。

Johnny Boursiquot: 對,關(guān)于這個云原生術(shù)語……

Joe Beda: 如果你愿意,我可以為你定義一下……

Johnny Boursiquot: 請說。

Joe Beda: 好的,我想很多人都會對云原生的定義有所不同……Nova 也寫了一本關(guān)于這個的書,她可能是專家,但既然現(xiàn)在是我在說話,我就先講完……[笑] 抱歉,Nova。 在我看來,云的本質(zhì)就是運(yùn)行在別人的基礎(chǔ)設(shè)施上;它是 API 驅(qū)動的,自助服務(wù)的,并且具有彈性。因此,從開發(fā)者的角度來看,云通常意味著不需要與銷售人員溝通的一種服務(wù)。你可以直接使用信用卡進(jìn)行操作并開始使用。這非常強(qiáng)大。

我認(rèn)為你還可以將這種 API 驅(qū)動的自助服務(wù)應(yīng)用到企業(yè)內(nèi)部,雖然可能是另一個部門在提供服務(wù)……但如果做得好,應(yīng)用開發(fā)者仍然擁有自助的體驗(yàn)。對我來說,云原生是指工具、文化和流程,用來充分利用這種能力。

如何真正利用這種 API 驅(qū)動的自助服務(wù),并將其反饋到軟件構(gòu)建的過程中。你是如何定義的,Nova?

Kris Nova: 再次強(qiáng)調(diào),你又搶了我所有的好句子。你對云的定義確實(shí)很好,作為一種一等原語。不過當(dāng)我想到云原生時,我認(rèn)為云是一回事,但原生(native)是另一回事,而這往往被忽視了……也就是在第一天,當(dāng)你走到白板前,打開終端,或者在你寫代碼的地方,設(shè)計(jì)系統(tǒng)的地方---在第一天就考慮到它是在云上運(yùn)行的。所以現(xiàn)在我們看到很多應(yīng)用程序的遷移,或者將現(xiàn)有的遺留應(yīng)用程序移到云上……在我看來,這只是將遺留系統(tǒng)移到云上運(yùn)行,并不是真正的云原生應(yīng)用程序。云原生是從一開始就以云為中心來設(shè)計(jì)應(yīng)用程序。

Mat Ryer: 那么這個項(xiàng)目是如何開始的呢?Joe,它是從你在 Google 的工作中產(chǎn)生的嗎?然后這個開源項(xiàng)目就由此衍生出來了嗎?

Joe Beda: 我最初啟動了 Google Compute Engine,這是一個在 Google 上運(yùn)行虛擬機(jī)的奇怪項(xiàng)目,因?yàn)閹缀鯖]有人使用虛擬機(jī)……而這個項(xiàng)目的作用其實(shí)是建立 GCP 的基礎(chǔ)設(shè)施云。你看看任何主要的云平臺,虛擬機(jī)都是其基礎(chǔ)服務(wù)之一,其他所有東西都是基于它構(gòu)建的。

在 Google 內(nèi)部,幾乎沒人用虛擬機(jī),因?yàn)樗麄兪褂昧艘粋€叫做 Borg 的系統(tǒng)。它有點(diǎn)像 Kubernetes;容器的概念,打包成鏡像的方式---這些東西都有些不同……但總體的理念是一樣的:你描述你的程序,然后有一個系統(tǒng)來調(diào)度和運(yùn)行它。這個理念在 Google 內(nèi)部已經(jīng)驗(yàn)證了十年。因此,我們了解了這種方式對開發(fā)者的好處以及它所能帶來的效率。

所以我們當(dāng)時的處境是這樣的---我們有幾件事想通過 Kubernetes 來做。首先是改變游戲規(guī)則,因?yàn)槲覀冊谂c其他云平臺競爭。像 Amazon 這樣的公司已經(jīng)占據(jù)了市場的主導(dǎo)地位,因此我們可以直接在虛擬機(jī)方面與它們競爭,或者我們可以嘗試讓開發(fā)者以不同的方式編寫程序,以充分發(fā)揮 Google 云的優(yōu)勢。

其次,我們希望將內(nèi)部員工開發(fā)與外部客戶開發(fā)的方式逐漸統(tǒng)一起來,這樣內(nèi)部員工使用的系統(tǒng)體驗(yàn)會與外部客戶的體驗(yàn)更接近(如果不是完全相同的話)。

我們也知道,如果沒有開源,這些東西就不會產(chǎn)生影響。從一開始我們就認(rèn)為開源是絕對必要的,并且我們真正承諾要做到開放---從第一天起,我們就說“你可以在 Amazon 上運(yùn)行這個”,這讓很多人感到驚訝……我們還做了其他一些事情,比如引入了很多來自 Red Hat 的優(yōu)秀人才。Red Hat 是我們早期的一個重要合作伙伴,幫助擴(kuò)展了 Kubernetes 的應(yīng)用場景和思維方式……所以這就是事情的開始。

Mat Ryer: 這是一個非常有趣的故事。這個問題本身也非常有趣……我以前是 App Engine 的用戶,雖然從外面看不太清楚內(nèi)部是如何運(yùn)作的,但我現(xiàn)在能看到使用 App Engine 與之前的差異,我只能想象在底層發(fā)生了什么變化……估計(jì)和 Kubernetes 和容器有關(guān)。因?yàn)閺?App Engine 的角度來看,部署現(xiàn)在感覺更加自然。是這樣的嗎?這個項(xiàng)目發(fā)生了類似的事情嗎?

Joe Beda: 我認(rèn)為 App Engine 本身也經(jīng)歷了演變,我不想替那個團(tuán)隊(duì)發(fā)言……但 GCE 和 App Engine 之間總是有點(diǎn)緊張關(guān)系,我認(rèn)為這種緊張關(guān)系也適用于 Kubernetes 和 App Engine。

上周我在 SpringOne[6] 平臺會議上做了一個演講(譯者注: 是VMWare組織的一個Spring開發(fā)者、應(yīng)用程序架構(gòu)師的社區(qū)Conf),我談到了一點(diǎn)關(guān)于基礎(chǔ)設(shè)施即服務(wù)(IaaS)和平臺即服務(wù)(PaaS)之間的哲學(xué)差異。基礎(chǔ)設(shè)施即服務(wù)基本上是一組構(gòu)建塊,是一組樂高積木,可以用來構(gòu)建各種不同的東西。這不僅適用于虛擬機(jī),我認(rèn)為 Kubernetes 也仍然屬于這種工具箱級別的東西……而平臺即服務(wù)則更像是一個框架,其中有一些推薦的模式,如果你不遵循這些模式,那么使用起來就會更加困難,甚至無法完成你想做的事情。雖然這種方式通常效率很高,但有時也會帶來限制。

我認(rèn)為我們期待的是進(jìn)入一個兩者之間的界限不那么明顯的世界,這兩種解決問題的方式可以更好地結(jié)合起來。

Johnny Boursiquot: 在我腦海中,我試圖想象在組織中,誰的角色會負(fù)責(zé)這個問題?基本上,我應(yīng)該把 Kubernetes 看作是一個用于部署應(yīng)用程序的工具,還是一個用于構(gòu)建部署平臺的工具?它是一個平臺構(gòu)建器,還是一個實(shí)際的平臺?

Joe Beda: 我認(rèn)為---我也很想聽聽 Nova 的看法……但我認(rèn)為目前 Kubernetes 大致有三類用戶。我們發(fā)現(xiàn)有平臺團(tuán)隊(duì),我認(rèn)為最具前瞻性的組織會將平臺視為一種內(nèi)部產(chǎn)品。如何提供一個平臺,讓他們能夠擴(kuò)展,向內(nèi)部團(tuán)隊(duì)提供更多的服務(wù)選項(xiàng),并在某種程度上提供類似于云的體驗(yàn),但在更大的組織限制范圍內(nèi)。這是在企業(yè)中我們常常看到的情況。

然后是應(yīng)用程序運(yùn)營者和開發(fā)者,應(yīng)用程序運(yùn)營者在 Kubernetes 之上運(yùn)行應(yīng)用……有時人們也會同時扮演這兩種角色,就像 DevOps 的方式一樣。

我還認(rèn)為,平臺運(yùn)營者通常會選擇使用 Kubernetes 的原始形式,但他們也會利用擴(kuò)展性和其他系統(tǒng),構(gòu)建出一種推薦的使用 Kubernetes 的方式,這樣會更容易使用……隨著時間的推移,這種推薦的體驗(yàn)會越來越像 PaaS,開發(fā)者可以直接上手,完成工作;運(yùn)維的角色會減少很多繁瑣的工作,開發(fā)者的體驗(yàn)會更像“我寫代碼,我發(fā)布,它就能運(yùn)行”的方式。

Kris Nova: 補(bǔ)充一下---我們在《云原生基礎(chǔ)設(shè)施》這本書中也談到了這個問題---我認(rèn)為還有第四類角色。我認(rèn)為書中提到的“基礎(chǔ)設(shè)施工程師”就是這個角色。實(shí)際上,這些人就像 Joe 和我一樣,負(fù)責(zé)在幕后編寫管理基礎(chǔ)設(shè)施的軟件。這些人是 Kubernetes 的貢獻(xiàn)者,編寫operator軟件的人,編寫準(zhǔn)入控制器實(shí)現(xiàn)的人……我認(rèn)為這是一個非常新的工程角色,直到我們開始擁有一個 Joe 喜歡稱為“平臺之平臺”的東西之前,我們還沒有看到過這種角色。

Johnny Boursiquot: 順著這個思路---這讓我想起了我之前在 Twitter 上看到的一些內(nèi)容---這些角色對經(jīng)驗(yàn)的要求非常高,因此很難讓一個初級開發(fā)者加入這些團(tuán)隊(duì)并有效地做出貢獻(xiàn)。進(jìn)入這些角色的門檻是否太高了?我看到很多招聘廣告,要求非常多,“你需要這個經(jīng)驗(yàn),你需要那個經(jīng)驗(yàn)……”從我的角度來看,似乎進(jìn)入這些角色的門檻非常高……從你的經(jīng)驗(yàn)來看,這是事實(shí)嗎?

Kris Nova: 我的看法是,這取決于你的團(tuán)隊(duì)有多成熟。如果我們已經(jīng)有基礎(chǔ)設(shè)施工程師和平臺團(tuán)隊(duì)到位,并且已經(jīng)有系統(tǒng)可以構(gòu)建應(yīng)用程序鏡像并推送到生產(chǎn)環(huán)境,那么進(jìn)入的門檻會比較低。這只需要你選擇一種你擅長的語言編寫應(yīng)用程序,然后讓現(xiàn)有系統(tǒng)處理剩下的事情。

但是,建立這些系統(tǒng)是一個完全不同的故事,這就是我們看到的高進(jìn)入門檻的地方,尤其是當(dāng)人們必須回答“我們?nèi)绾伍_始為構(gòu)建流水線的各個階段以及推送到生產(chǎn)環(huán)境實(shí)施解決方案?”時。

Joe Beda: 是的,這里的確有很多東西需要學(xué)習(xí)。如果我們把 Kubernetes 稱為一個分布式系統(tǒng)內(nèi)核,那么那些擴(kuò)展它的人、深入研究它的人---在某種程度上,他們就是內(nèi)核工程師。而要成為一個 Linux 內(nèi)核的專家,深入了解 Linux 內(nèi)核的方方面面并不容易,對吧?

我的一個觀察是,雖然這些東西是新的,但如果我們看看 AWS,它的服務(wù)菜單也不容易理解。需要掌握的內(nèi)容很多,要真正熟練使用 AWS 需要花費(fèi)幾個月的時間。這也是他們推出 Lightsail 的原因。(譯者注: AWS推出的一項(xiàng)基于云端的輕量級計(jì)算服務(wù),旨在使用戶能夠輕松快速地建立虛擬專用服務(wù)器(VPS),提供簡便、經(jīng)濟(jì)實(shí)惠的云計(jì)算解決方案)  我認(rèn)為,對于任何高級云系統(tǒng)來說,都會有這樣一條學(xué)習(xí)曲線。

我還認(rèn)為,我們看到的現(xiàn)象是,學(xué)習(xí) Linux 的曲線也是如此,但它已經(jīng)成為了行業(yè)中的一種共享知識,大家一起學(xué)習(xí),隨著時間的推移,它逐漸成為了行業(yè)中的背景噪聲。我認(rèn)為云計(jì)算也是如此,熟悉 Amazon (的云服務(wù)) 某種程度上也已經(jīng)幾乎成為了默認(rèn)要求,成為了背景噪聲……我認(rèn)為如果 Kubernetes 繼續(xù)保持它的增長軌跡,并成為一種更普遍的底層技術(shù),那么熟悉或至少具備 Kubernetes 的工作知識將成為我們行業(yè)中默認(rèn)的技能之一。

Mat Ryer:  說到開源團(tuán)隊(duì),這個項(xiàng)目最初是如何開始的?我想它和大多數(shù)項(xiàng)目一樣,應(yīng)該有一個較小的范圍吧?我不確定。它是如何演變的?有什么驚喜,或者你看到的有趣的事情是什么?

Kris Nova: 對我來說,最有趣的事情之一就是讓 Kubernetes 運(yùn)行起來……Joe 寫了一本關(guān)于這個的書。但我注意到,無論是在開源社區(qū)還是在商業(yè)企業(yè)中,從零開始運(yùn)行 Kubernetes 對很多人來說一直是一個難點(diǎn)(譯者注: 結(jié)合語境,把a(bǔ) high point of friction翻譯為 “難點(diǎn)”)?;仡^看,這也是我最初被 Kubernetes 吸引的原因之一,我對我們已經(jīng)走了這么遠(yuǎn)感到驚訝,但我們在這方面仍然沒有一個非常好的解決方案。

我認(rèn)為我們正在取得進(jìn)展,比如 Cluster API 項(xiàng)目[7]Kubeadm 工具[8],但即便如此,我認(rèn)為關(guān)于如何從零開始運(yùn)行 Kubernetes,至今仍有很多問題需要解答。

Joe Beda: 是的,我覺得這也是我最驚訝的地方。早期在 Kubernetes 項(xiàng)目中,我寫了很多 Bash 腳本,用于在 GCP 和其他環(huán)境中部署 Kubernetes---這些腳本并沒有很好地適應(yīng)時間的變化……[笑] 我甚至寫了一種方法來在 Bash 中導(dǎo)出堆棧跟蹤;對此我既感到害怕又有點(diǎn)自豪。所以我們并沒有真正重視集群本身的生命周期管理,包括運(yùn)行它的環(huán)境類型、如何構(gòu)建能夠跨所有這些環(huán)境擴(kuò)展的部署系統(tǒng)……因?yàn)樵谥饕墓苍铺峁┥躺蠁右粋€集群,和在裸機(jī)上,或者用樹莓派啟動集群,是完全不同的體驗(yàn)。

我認(rèn)為 Kubernetes 的一個優(yōu)勢在于它的可擴(kuò)展性---從零售商在每個商店中使用它, 像 Chick-fil-A 就是一個例子(譯者注: Chick-fil-A是一家總部位于美國喬治亞州的美式連鎖快餐店,以雞肉三明治為主要特色),他們用 Kubernetes 來管理店內(nèi)系統(tǒng),比如售貨點(diǎn)系統(tǒng)、數(shù)字標(biāo)牌等),到像 CERN(譯者注: 歐洲核子研究組織) 的粒子加速器這樣的大型設(shè)施,他們基本上是用它來做數(shù)據(jù)分析。所以這種可擴(kuò)展性非常強(qiáng)大,但這也意味著你在管理生命周期時會遇到不同的挑戰(zhàn),而我們在項(xiàng)目早期顯然低估了這種復(fù)雜性。

Johnny Boursiquot: 在行業(yè)會議上,你可能聽到有人說“我們要用 Kubernetes 來實(shí)現(xiàn)跨云部署。這將成為我們在所有云之上的基礎(chǔ),這樣我們就有自由在不同云之間切換,甚至同時使用多個云?!蹦阏J(rèn)為這是明智之舉嗎?企業(yè)和開發(fā)團(tuán)隊(duì)?wèi)?yīng)該在這一高層構(gòu)建,而不充分利用任何一個云的特定優(yōu)勢嗎?

Joe Beda: 我的看法是,對于很多公司來說,多云戰(zhàn)略是有意義的。首先,如果你是一家初創(chuàng)公司,你的首要任務(wù)是證明自己對世界有價值,而不是破產(chǎn)---無論如何,盡一切辦法證明你的價值主張是正確的。但是對于更成熟的公司來說,這更多的是風(fēng)險管理問題。這些公司認(rèn)為依賴單一供應(yīng)商有風(fēng)險,如果有辦法降低這種風(fēng)險,那就值得嘗試,而 Kubernetes 是實(shí)現(xiàn)這一目標(biāo)的技術(shù)之一。

另外,它還能很好地分離操作角色。你可以有專門的團(tuán)隊(duì)來管理 Kubernetes,無論是在 X、Y 或 Z 基礎(chǔ)設(shè)施上運(yùn)行 Kubernetes,還是使用某些服務(wù)來處理其中的一部分工作。最終你會在應(yīng)用層面上獲得一定的通用性。

當(dāng)然,我們可能無法屏蔽底層平臺的每一個細(xì)節(jié),有時你需要利用底層平臺的一些特定特性。但如果我們可以減少那些不必要的差異,就能讓應(yīng)用團(tuán)隊(duì)的技能更具可移植性,甚至讓應(yīng)用程序本身更加可移植。

另外,我們看到的一點(diǎn)是,這種做法可以在企業(yè)和其供應(yīng)商之間形成杠桿作用。比如你是亞馬遜的一個大客戶,正在談?wù)劭邸璠笑] 如果你完全依賴某些原生服務(wù),你的議價能力就會減弱,除非你有可信的“遷移”威脅。也就是說,你可以對他們說:“我們可以在兩個月內(nèi)從基礎(chǔ)設(shè)施 A 遷移到 B。” 這時,你和供應(yīng)商之間的談判就會更加平衡。

Kris Nova: 接著 Joe 剛才的話題,我覺得在跨云定義應(yīng)用、網(wǎng)絡(luò)、存儲等抽象層次時,我們經(jīng)歷了一段非常有趣的思維過程。例如,當(dāng)我們在設(shè)計(jì) Cluster API 時,無論你多么通用化,總會遇到某些特定于云的配置。因此,這是一項(xiàng)艱巨的任務(wù),首先要搞清楚哪些是通用部分,然后盡量減少為特定云設(shè)計(jì)的配置量。

如果你看看我們在 Cluster API 中如何使用 provider config,你會發(fā)現(xiàn)我們開始為特定云的部分進(jìn)行版本管理,同時仍然保持一個通用的配置超集。這是基于我們在設(shè)計(jì) Kops[9](譯者注: Kops(Kubernetes Operations)是一個用于管理和部署 Kubernetes 集群的工具。它主要用于在云環(huán)境中(如 AWS、GCE 和其他云提供商)創(chuàng)建、管理和維護(hù) Kubernetes 集群) 和 Kubicorn[10] (譯者注: Kubicorn 是一個用于管理和部署 Kubernetes 集群的開源工具。它的目標(biāo)是提供一種簡單而靈活的方式來創(chuàng)建和管理 Kubernetes 集群,特別是在云環(huán)境中. 項(xiàng)目幾乎不維護(hù)了)時學(xué)到的經(jīng)驗(yàn)教訓(xùn),我們試圖讓它盡可能通用……但最終我們發(fā)現(xiàn)無法完全做到通用化。

因此,如果你有機(jī)會讀我的書,我們會談到如何有效地使用軟件來管理 Kubernetes 集群的生命周期。而 Kubernetes 最根本的原則之一就是聲明式的本質(zhì)。換句話說,你定義了目標(biāo)或期望的狀態(tài),然后我們會隨著時間推移去協(xié)調(diào)那個狀態(tài)。Cluster API 只是在遵循這個原理,并將其應(yīng)用到基礎(chǔ)設(shè)施管理上。

你首先聲明 Kubernetes 集群的樣子,然后我們會去協(xié)調(diào)并使其成真。這在管理集群生命周期時很有幫助,因?yàn)槿绻覀兿雽哼M(jìn)行變更、擴(kuò)展、升級或進(jìn)行某種方式的調(diào)整,我們都在遵循相同的聲明式原則,背后會有某種機(jī)制自動執(zhí)行這些操作。

Joe Beda: 我會這么說:我們基本上是在用 Kubernetes 已經(jīng)在大規(guī)模環(huán)境中驗(yàn)證過的模式來管理 Kubernetes 本身。

Johnny Boursiquot: 這很有道理。

Mat Ryer: 聽起來像《盜夢空間》啊。 [笑]

Joe Beda: 是的,Cluster API 項(xiàng)目的標(biāo)志是一堆疊起來的海龜,因?yàn)檫@就是“海龜疊疊樂”的概念。(譯者注: 一款流行的益智類游戲,通常以小海龜為主題, 游戲的主要目標(biāo)是通過疊放海龜來形成穩(wěn)定的結(jié)構(gòu),玩家需要運(yùn)用一定的策略和技巧來完成任務(wù))

Mat Ryer: 哈哈,沒錯。

Johnny Boursiquot: [笑] 真有趣。我們來自 GoTime FM Slack 頻道的一個問題……對于正在收聽的朋友們---是的,我們錄制時會實(shí)時接受問題,這是你們的機(jī)會。有人在頻道里問道:“Kubicorn 還活著嗎?還是已經(jīng)被 Kubeadm 和 Kops 取代了?”

Kris Nova: 這是一個好問題。我知道有些人---包括我自己---時不時還會用 Kubicorn。我認(rèn)為它從未打算成為可用于企業(yè)級規(guī)模管理 Kubernetes 集群的生產(chǎn)就緒工具。我覺得它是一次很好的思維練習(xí),可能我從中獲得的最大價值是它是第一個基于 Kubeadm 構(gòu)建的開源 Kubernetes 管理工具……而這一點(diǎn)至今依然存在。如果你看看 Kubicorn 的工作原理,它現(xiàn)在相對靜態(tài),因?yàn)槲覀兛梢栽谶\(yùn)行時直接使用由上游推送的最新 Kubeadm 版本。所以我認(rèn)為,Kubicorn 只是一個自動化使用 Kubeadm 而不是管理集群的工具。

通過 Kubicorn、Kops 和 Kubeadm,我們學(xué)到了很多東西,而 Cluster API 是將這些經(jīng)驗(yàn)教訓(xùn)整合起來的很好的體現(xiàn)。所以,雖然它不再有所增長,但我不會說它已經(jīng)完全消亡了。

Mat Ryer: 有趣的是,我注意到我們已經(jīng)提到了幾次這個主題---我對此非常感興趣,就是這些理念和項(xiàng)目必須不斷演進(jìn)。你談到了低估了向不同目標(biāo)部署的復(fù)雜性,而這是一個很好的例子。如果在一開始就認(rèn)識到這些復(fù)雜性,可能你根本不會開始這些項(xiàng)目,然而這些項(xiàng)目最終卻變得如此龐大、強(qiáng)大且功能齊全。所以這個理念是說,你不能在真空中設(shè)計(jì)這些東西。你必須先構(gòu)建它,讓它被使用,進(jìn)入現(xiàn)實(shí)世界,軟件才能變得更好、更成熟。你同意這一點(diǎn)嗎?

Joe Beda: 是的,我覺得---有幾點(diǎn)要說……我認(rèn)為我們在開始時確實(shí)對 Kubernetes 的增長方向有一個相對清晰的愿景,這是基于我們在 Borg 上的經(jīng)驗(yàn)。但確實(shí)有些地方我們一開始簡化了,只為了啟動項(xiàng)目。你需要先開始做這些事情。

隨著項(xiàng)目的成長,我們也擴(kuò)展了范圍。大約三、三年半前,我們意識到,隨著 Kubernetes 添加的功能越來越多……首先,我們無法跟上所有人的想法;其次,我們可能會犯錯,因此我們需要一種實(shí)驗(yàn)機(jī)制。所以我們開始在 Kubernetes 中創(chuàng)建可擴(kuò)展性機(jī)制,我覺得這真的將 Kubernetes 從一個僅用于容器編排的工具,轉(zhuǎn)變?yōu)檎嬲?code style="background-color: rgb(231, 243, 237); padding: 1px 3px; border-radius: 4px; overflow-wrap: break-word; text-indent: 0px; display: inline-block;">---當(dāng)我們從技術(shù)上談?wù)撈脚_時,它確實(shí)是平臺的基礎(chǔ)。通過這樣做,它讓我們能夠保持 Kubernetes 的范圍適當(dāng)。

Kubernetes 生態(tài)系統(tǒng)中的很多事情并不屬于 Kubernetes 項(xiàng)目本身,我認(rèn)為這是其成功的一個重要部分---能夠讓一個繁榮的生態(tài)系統(tǒng)蓬勃發(fā)展,在 Kubernetes 之上做有趣的事情,而不需要與核心 Kubernetes 開發(fā)者打交道。這極大地推動了項(xiàng)目和整個生態(tài)系統(tǒng)的發(fā)展?,F(xiàn)在所有關(guān)于如何在 Kubernetes 之上部署應(yīng)用程序并提供分布式管理的討論,正是圍繞這一點(diǎn)展開的。

Mat Ryer: 你剛才談到這個問題---那么 Kubernetes 是如何實(shí)現(xiàn)可擴(kuò)展的?有哪些擴(kuò)展方式呢?

Joe Beda:  Kubernetes 有一堆內(nèi)置對象,你可以向它發(fā)出請求。例如,你可以說“我想要一個 pod”,它本質(zhì)上是一個容器組,Kubernetes 會負(fù)責(zé)選擇運(yùn)行它的機(jī)器,然后啟動它。你還可以說“我想要一個副本集”,這意味著“我想要這個特定模板的多個副本,我需要十個?!盞ubernetes 會確保你有十個副本。接著你還可以說“我想要一個部署對象,這是一個版本管理的方式?!彼阅憧梢赃M(jìn)行版本升級等操作。我們?yōu)?Kubernetes 構(gòu)建了一層又一層的對象系統(tǒng)。

最核心的擴(kuò)展性功能是所謂的 自定義資源定義(CRDs)。它允許你在 Kubernetes 中創(chuàng)建新的對象,擴(kuò)展 Kubernetes 的模式,以便你可以將自己的東西引入。如果你不喜歡 Kubernetes 中的部署方式,因?yàn)樗鼰o法按照你想要的方式進(jìn)行藍(lán)綠部署,你可以編寫一個與部署對象類似的對象,稱之為藍(lán)綠部署,它可以實(shí)現(xiàn)你想要的邏輯。

這實(shí)際上是擴(kuò)展了 Kubernetes 的模式,然后運(yùn)行一段代碼,執(zhí)行之前 Nova 提到的協(xié)調(diào)循環(huán),這是 Kubernetes 實(shí)現(xiàn)分布式系統(tǒng)的核心。

令人興奮的是,大家不僅將這一模式應(yīng)用于更領(lǐng)域特定的問題上。例如,你可以管理 MySQL 實(shí)例或 Kafka 實(shí)例的部署,而不僅僅是應(yīng)用程序的部署。我們開始看到大家將操作知識轉(zhuǎn)化為代碼,并在 Kubernetes 上運(yùn)行這些代碼。這樣你就可以用 Kubernetes 來創(chuàng)建一個類似 Amazon RDS 的系統(tǒng),既可以描述你想要的東西,也可以實(shí)現(xiàn)如何運(yùn)行這個 RDS 類似系統(tǒng)的邏輯。

同時我們還看到人們將這種控制模式應(yīng)用到其他領(lǐng)域,不僅僅是運(yùn)行 Kubernetes 上的東西,還可以用于配置硬件負(fù)載均衡器、在特定云中配置服務(wù)等。我還聽說有人在企業(yè)內(nèi)部創(chuàng)建了一個自定義資源定義,用于描述團(tuán)隊(duì)及其成員……一旦你定義了這個,它就會自動為你創(chuàng)建 Bitbucket 倉庫、Slack 頻道,并設(shè)置 CI/CD 系統(tǒng),所有這些都是基于你聲明的團(tuán)隊(duì)文檔。這就是 Kubernetes 賦予我們的分布式系統(tǒng)內(nèi)核的強(qiáng)大力量,它為 Kubernetes 注入了第二波活力。

Kris Nova: 當(dāng)我和 Kubernetes 新手交談時,試圖向他們解釋 Joe 剛才提到的 CRD 的強(qiáng)大之處,我通常會先定義 CRD 中的兩個重要元素,這在 Kubernetes 的每個對象中都能看到:一個是 spec,它是你想要的定義;另一個是 status,它是對象當(dāng)前的實(shí)時狀態(tài)。正是因?yàn)槲覀兺瑫r擁有這兩者,協(xié)調(diào)這一原理才能發(fā)揮作用,這也是我們能夠構(gòu)建復(fù)雜的協(xié)調(diào)循環(huán)、控制器和運(yùn)算符的原因,無論我們想要做什么,作為軟件工程師都可以做到這一點(diǎn)。我認(rèn)為很多人沒有意識到 Kubernetes 在定義這些運(yùn)算符和控制器時賦予我們的強(qiáng)大能力和智慧。

Johnny Boursiquot: 嗯,我想他們現(xiàn)在肯定會關(guān)注這個了……[笑]

Joe Beda: 我會說的是,編寫這些控制器實(shí)際上比應(yīng)該的要難……這是目前的一個活躍探索領(lǐng)域,人們正在研究如何讓 Kubernetes 更易于使用,也更容易編程。我們還有很長的路要走,才能讓這些東西更加可消費(fèi),更容易使用。

我想推薦一本書。這不是我的書,也不是 Kris 的書,而是由 Stefan Schimanski 和 Michael Hausenblas 編寫的《Programming Kubernetes》[11]。我手里有一本……如果你想了解如何使用 Go 編寫 Kubernetes 代碼并開始做一些 CRD 和控制器循環(huán)的開發(fā),這是一本很好的入門書。這是一本 O'Reilly 出版的書。

Mat Ryer: 謝謝。

Johnny Boursiquot: 很棒。

Kris Nova: 是的,我覺得還需要指出的是,這個領(lǐng)域也有很多工具。我們從一個原型開始,有一個名為 operator framework[12] 的解決方案,它來自 Red Hat 和 Core OS 的開發(fā)者。我們還有一個開源的上游項(xiàng)目 Kubebuilder[13]……所以我們正在尋找構(gòu)建控制器和運(yùn)算符的框架,但這仍然是一個不斷迭代和完善的過程,我們還沒有完全到達(dá)目標(biāo)。

Joe Beda: 說到 Go,我認(rèn)為現(xiàn)在 Go 是編寫這些東西的首選語言……所以,這就是了。 [笑聲]

Mat Ryer: 是的,我本來想問這個問題……如果你看 github.com/kubernetes/kubernetes 倉庫,我猜這是 Kubernetes 的主代碼庫……

Joe Beda: 我們叫它 KK。 [笑] Kubernetes/Kubernetes。

Mat Ryer: 好的!我們不會再嵌套了。

Joe Beda: 哈哈。 [笑聲]

Mat Ryer: 我注意到在語言構(gòu)成中,超過 90% 是 Go。那為什么一開始 Kubernetes 選擇了 Go 作為開發(fā)語言呢?

Joe Beda: 嗯,我想剩下的 10% 大概是 Bash,那都是我的錯,抱歉…… [笑聲] 我們選擇 Go 的第一個原因是 Docker 是其中一個關(guān)鍵因素,而 Docker 當(dāng)時也是現(xiàn)在也是用 Go 編寫的。這對我們有很大的影響。我實(shí)際上堅(jiān)持使用 Go,因?yàn)榱硪晃粍?chuàng)始人 Brendan Burns 的最初 Kubernetes 原型是用 Java 編寫的。我們同時也受到了 Mesosphere 的影響,它是一個較早的系統(tǒng);Mesosphere 也使用了一些不同的擴(kuò)展和編程理念,但本質(zhì)上它是一個龐大的 C++ 代碼庫。

(譯者注: 現(xiàn)在該公司叫D2iQ,Mesos背后的公司,可參考 曾經(jīng) Mesos 背后的公司,如今在干嘛?[14])

因此,我在考慮“我們是要像 Mesos 那樣做 C++ 嗎?還是要像 Apache Hadoop 那樣用 Java?又或者我們要看看社區(qū)、代碼質(zhì)量以及 Docker 生態(tài)系統(tǒng)中的互動性?”我認(rèn)為 Go 是一個很好的選擇,它既足夠系統(tǒng)級別,又不像 C++ 那么難以接近,同時比 C++ 更加高效。因?yàn)橐业叫碌呢暙I(xiàn)者,并讓他們在一個龐大的 C++ 代碼庫中快速上手,這非常困難。盡管有人批評 Kubernetes 是“Java 開發(fā)者用 Go 寫的”,但我覺得 Go 作為一個易于接近的系統(tǒng)級語言,最終是 Kubernetes 的正確選擇。

Kris Nova: 如果你對那些批評 Kubernetes 是基于面向?qū)ο蟮?Go 系統(tǒng)感興趣,我去年在 FOSDEM 上做了一場演講,叫《You Can't Have a Cluster \[BLEEP\] Without a Cluster》[15]。在那次演講中我提到了許多 Go 編程語言中的反模式,這些模式可能源自傳統(tǒng)的面向?qū)ο笏季S。不想太多批評你和 Brendan,Joe……

Joe Beda:  是的,你知道,社區(qū)發(fā)展得太快了,很多人加入項(xiàng)目時并不了解 Go……這在一定程度上推動了 Go 的發(fā)展,但也意味著他們可能是有經(jīng)驗(yàn)的程序員,但不一定擅長 Go……所以這就是我們看到的結(jié)果。我敢打賭,很多代碼庫看起來都很相似,基于相同的動態(tài)。

Kris Nova: 但它是一個成功的模式,對我們而言是有效的。再次回到那個隨時間演變的教訓(xùn),我們是如何走到今天的,并不是一開始就決定要以這種方式構(gòu)建系統(tǒng)的。真的很有趣。

Johnny Boursiquot: 讓我真正感受到 Kubernetes 價值的一個方面是,它最初的討論總是圍繞著“我們在虛擬機(jī)之上進(jìn)行容器編排,Kubernetes 為你提供了這種抽象,賦予你 pod 這個概念?!币虼?,你可以更高層次地處理部署,而不必直接處理虛擬機(jī)。那么現(xiàn)在“無服務(wù)器”---我做了個引號---已經(jīng)成為一種趨勢,盡管我們都知道這更多是個市場術(shù)語,但支持 Kubernetes 上的無服務(wù)器確實(shí)是件事,對吧?通過 virtual-kubelet 項(xiàng)目[16],這變得可能。

從這個角度來看,你認(rèn)為 Kubernetes 是否會成為下一代部署模式的平臺?從虛擬機(jī)到容器,再到函數(shù)即服務(wù)……無論下一步是什么,Kubernetes 是否有能力通過其擴(kuò)展性來應(yīng)對?

Joe Beda: 我希望如此,但我無法預(yù)測未來……首先我們要認(rèn)識到,作為開發(fā)者和工程師,我們總有一種“唯一正確的方式”的心態(tài)。所以我們看到新技術(shù)時,它們很吸引人,大家都為之興奮……但實(shí)際上,隨著時間的推移,我們只會增加技術(shù)層面,而不會移除舊的東西。比如主機(jī)業(yè)務(wù)對 IBM 來說仍是一個增長業(yè)務(wù)。所以虛擬機(jī)不會很快消失。

我認(rèn)為我們可以把它視為一個光譜,并為不同的場景提供合適的工具。沒有哪種應(yīng)用程序是完全無服務(wù)器的、容器化的或虛擬機(jī)的。你可以說,“我會用函數(shù)即服務(wù)平臺來處理大部分工作,但我有一個需要用容器的機(jī)器學(xué)習(xí)模型,此外,我可能還需要運(yùn)行一個遺留的單體架構(gòu)?!边@可以是一個應(yīng)用程序使用的多種技術(shù)組合。我覺得這就是我們更常見的場景,新技術(shù)不會完全取代舊的東西。希望 Kubernetes 能夠足夠靈活,成為下一代技術(shù)的良好起點(diǎn)。

Mat Ryer: 是的,Jon Calhoun曾告訴我,很多人會把Kubernetes的代碼庫當(dāng)作模式和示例的參考。他提到了一些編寫代碼時需要不同思維方式的地方......顯然,這里面有很多好的示例,Jon也說這些是被廣泛使用的。那么,關(guān)于代碼組織是否還有其他具體的地方呢?

Jon提到的其中一件事是Kubernetes必須迅速演變,你無法從一開始就設(shè)計(jì)出一個干凈、完美的設(shè)計(jì);每個人的代碼都會自然演變,我認(rèn)為這本身就是一個很好的教訓(xùn)。那么,關(guān)于代碼結(jié)構(gòu)或者這個項(xiàng)目,或者Go開發(fā)者從Kubernetes代碼庫中可以汲取到的東西,還有什么值得注意的嗎?

Kris Nova: 我認(rèn)為Kubernetes代碼庫在我看來,可能是使用Go接口的最佳示例之一。 特別是當(dāng)你在看Go中一些不太常規(guī)的原則時,比如組合(composition)和嵌入(embedding),我們在使用ObjectMeta時做得很好,ObjectMeta[17]嵌入在每個Kubernetes對象中。這是一個很好的例子,展示了我們?nèi)绾味x通用部分,然后將它們分享給包含其他特定部分的對象中。

所以我認(rèn)為這多少暗示了面向?qū)ο螅∣O)風(fēng)格的思維模式,但這些是Go的一級特性,而我認(rèn)為Kubernetes在巧妙利用這些特性方面做得非常出色。

Joe Beda: 我是看到了問題......[笑聲] 我認(rèn)為Kubernetes經(jīng)歷了從一個單一代碼庫到嘗試拆分的過程......現(xiàn)在它算是半拆分狀態(tài),我甚至不想描述當(dāng)前的狀態(tài),這個拆分的過程是痛苦的。所以我認(rèn)為這里可能有一些值得汲取的教訓(xùn),比如單一代碼庫的利與弊。

不過,我認(rèn)為我們做對的一件事是,我們希望Kubernetes成為一個結(jié)構(gòu)良好的分布式系統(tǒng)。所以我們并沒有一開始就創(chuàng)建一個單一的二進(jìn)制文件,而是將不同的功能拆分成不同的二進(jìn)制文件,并讓它們通過基本上所有人都能訪問的相同API進(jìn)行通信。

所以從結(jié)構(gòu)上看,創(chuàng)建多個可以通過網(wǎng)絡(luò)通信的二進(jìn)制文件,并堅(jiān)持沒有私有接口的原則---這是一個值得汲取的教訓(xùn)。也許這不完全是Go的事情,但當(dāng)你開始構(gòu)建分布式系統(tǒng)時,創(chuàng)建正確的機(jī)制來幫助保持架構(gòu)的整潔度是非常重要的。

Mat Ryer: 我猜,你們也是在不斷自我驗(yàn)證的過程中?

Kris Nova: 是的,完全正確。我們完全是在使用自己的客戶端。如果你查看Go中的官方客戶端,看看人們?nèi)绾螛?gòu)建與Kubernetes交互的Go程序,它實(shí)際上就是我們在Kubernetes內(nèi)部使用的相同的源代碼。所以我們實(shí)際上是在運(yùn)行我們建議大家用來解決自己問題的代碼......我認(rèn)為這是一個非常好的模式。

Mat Ryer: 是的,我同意這個觀點(diǎn)。即便是它被頻繁使用的事實(shí),你也能發(fā)現(xiàn)其中的任何問題......但是我們在Machine Box也注意到了一些其他有趣的副作用,Machine Box也是類似的情況---我們使用SDK,我們有一個用于Machine Box API的Go SDK,并在我們的集成測試中使用它。所以我們盡可能多地將測試整合到一起,以同時測試盡可能多的內(nèi)容。但它確實(shí)提供了一定的穩(wěn)定性,這真的很有趣。

Johnny Boursiquot: John在頻道里問到,Kubernetes作為一個開源項(xiàng)目,是否迫使你們在代碼結(jié)構(gòu)、組織方式和包管理上走上一條特定的道路......如果這是一個私有代碼庫或私有項(xiàng)目,你們會做得不同嗎?

Joe Beda: 從代碼結(jié)構(gòu)上講,我不認(rèn)為我們會有很大的不同。我確實(shí)認(rèn)為,社區(qū)的擴(kuò)展和代碼是共同演變的,這是一個有趣的現(xiàn)象。隨著項(xiàng)目的增長,我們需要有方法來管理誰負(fù)責(zé)、誰決定功能、如何推動項(xiàng)目前進(jìn)......我認(rèn)為Kubernetes現(xiàn)在所使用的是我們稱之為開放治理的模式,基本上是由一群公開的人員決定項(xiàng)目的未來,而不是由某個公司控制。我認(rèn)為在代碼結(jié)構(gòu)的某些地方,我們確實(shí)看到了這種演變。

Kubernetes的可擴(kuò)展性機(jī)制確實(shí)適合這種開源的“讓事情變得廣泛”的模式......如果沒有開源的角度,我們可能不會在可擴(kuò)展性上投入這么多。

我覺得我們幾乎“打破”了GitHub項(xiàng)目的規(guī)模和工作流......Kubernetes社區(qū)開發(fā)了一個叫Prow的系統(tǒng),基本上是GitHub的自動化工具。幾乎沒有人真正擁有Kubernetes GitHub組織的管理員權(quán)限。相反,一切都是通過/test、/approve或/lgtm命令來完成的,然后Prow機(jī)器人會處理這些內(nèi)容。所以我們能夠在此基礎(chǔ)上構(gòu)建一個更豐富的所有權(quán)模型和權(quán)限模型。這些東西都是用Go編寫的。但這不是代碼本身的問題,而是社區(qū)和代碼處理流程的一部分。

Kris Nova: 關(guān)于Kubernetes的快速迭代速度,有很多值得一提的地方。我們已經(jīng)提到過幾次,作為一個開源項(xiàng)目,它的進(jìn)展非常迅速,我認(rèn)為這可以從Kubernetes K/K代碼庫中反映出來,看看我們在其中有多少二進(jìn)制文件,以及我們引入了多少依賴項(xiàng)。雖然我不想在Go Time節(jié)目中提起依賴管理問題......但我認(rèn)為它發(fā)展得很快,因此我們看到了代碼庫呈現(xiàn)出一種獨(dú)特的形態(tài),這在其他情況下可能不會出現(xiàn)。

Johnny Boursiquot: 說到治理和公司對項(xiàng)目的影響,每當(dāng)一個流行的開源項(xiàng)目---或者說支持這些項(xiàng)目的組織---被收購時,總會有一種膝跳反應(yīng)式的擔(dān)憂,人們會想,“哦,看來我們的項(xiàng)目完了。現(xiàn)在我們將開始看到對某一家公司有利的東西,而對其他公司不利?!睆耐饨鐏砜?,Kubernetes似乎沒有受到Heptio被VMware收購的影響......但我也很好奇,從你的角度來看,自從收購以來,有沒有哪些優(yōu)勢對Kubernetes有益?

Joe Beda: 我首先要說的是,Heptio確實(shí)為Kubernetes做出了貢獻(xiàn),但我們并不是最大的貢獻(xiàn)者。我認(rèn)為我們可能在公司規(guī)模上做得超出預(yù)期,但我們參與的池子非常大。

我認(rèn)為我的聯(lián)合創(chuàng)始人在Google時做得很好的一件事就是啟動了云原生計(jì)算基金會(CNCF),并把大家聚集在一起。我的聯(lián)合創(chuàng)始人Craig McLuckie是Heptio的共同創(chuàng)始人。這最終成為了一個中立的廠商平臺,用來托管Kubernetes。CNCF和Linux基金會有它們的優(yōu)缺點(diǎn)......這是另一個可以在喝酒時討論的話題。但總的來說,讓這個項(xiàng)目不被任何一個公司擁有,是項(xiàng)目成功的關(guān)鍵之一,也讓它能夠繼續(xù)發(fā)展,無論是Heptio還是其他任何公司。

至于Heptio加入VMware的事情,我認(rèn)為我們能夠激活VMware內(nèi)部的很多人,帶更多的人進(jìn)入社區(qū),真正開始彌補(bǔ)我們通過客戶視角看到的一些空白。我們確實(shí)非常注重確保我們?yōu)轫?xiàng)目投入的比從中獲取的更多。

Kris Nova: 回到之前關(guān)于治理的討論,我認(rèn)為Kubernetes是第一個成功完成CNCF畢業(yè)流程的項(xiàng)目,設(shè)定了基調(diào)和參考架構(gòu)。如果你看像Joe提到的Prow工具,它現(xiàn)在已經(jīng)是一個開源工具,你可以引入它進(jìn)行使用。你會看到CNCF生態(tài)系統(tǒng)中很多項(xiàng)目都在使用它。我們在本地的Falco項(xiàng)目中也在使用它,我知道還有很多其他項(xiàng)目也在使用它。同樣,我們要感謝Kubernetes,因?yàn)樗堑谝粋€通過CNCF畢業(yè)流程的項(xiàng)目,設(shè)定了很多后續(xù)流程的標(biāo)準(zhǔn)。

Johnny Boursiquot: 非??帷kS著時間的推移,我很好奇接下來Kubernetes的重大步驟或改進(jìn)是什么?你們認(rèn)為代碼庫會變得更加穩(wěn)定,還是還有很多大塊的功能需要完成,以使平臺更加完善?

Kris Nova: 我有個答案,當(dāng)然我有些偏見。如果你看看我們作為社區(qū)已經(jīng)解決的問題---我們已經(jīng)解決了存儲問題,并迭代了幾次;我們也完成了網(wǎng)絡(luò)問題,完成了計(jì)算問題,甚至包括我們?nèi)绾味x應(yīng)用程序以及如何管理狀態(tài)的方式都已經(jīng)有了進(jìn)展......但如果你看看安全問題,目前還沒有一個好的解決方案。我認(rèn)為這是Kubernetes需要解決的最后一個領(lǐng)域。

關(guān)于在Kubernetes中運(yùn)行應(yīng)用程序并保持其安全,甚至是保持整個Kubernetes集群的安全,有很多已知的問題。所以在我看來,這是在生態(tài)系統(tǒng)中存在的一個比較大的問題,正如Joe之前提到的那樣。

Joe Beda: 需要澄清的是,這些問題是可以解決的。我認(rèn)為只是目前還不夠簡單或直觀,或者說沒有達(dá)到一鍵式的便捷程度。我認(rèn)為在安全性方面,隨著時間的推移,Kubernetes將成為安全最佳實(shí)踐的標(biāo)桿,因?yàn)槟隳塬@得大量關(guān)于運(yùn)行程序、它們?nèi)绾芜\(yùn)行、是誰決定運(yùn)行這些程序、誰采取了哪些操作的數(shù)據(jù)。這些數(shù)據(jù)在傳統(tǒng)的DevOps環(huán)境中往往是看不到的。但我認(rèn)為我們看到了這種潛力;不過我們還沒有完全實(shí)現(xiàn)這一點(diǎn)。所以我完全同意Kris的看法。

我們在Kubernetes核心項(xiàng)目中經(jīng)常談?wù)摰囊患虑槭牵孠ubernetes變得“無趣”。好的基礎(chǔ)設(shè)施應(yīng)該是無趣的。我記得Brad Fitzpatrick曾經(jīng)在談?wù)撃硞€Go的版本發(fā)布時說,“這個Go版本沒有什么特別的地方,這其實(shí)是一件好事?!盙o從那時起變得更有趣了,但曾經(jīng)有一個時期,Go本身非常穩(wěn)定,以至于發(fā)布說明只是“我們改進(jìn)了垃圾回收器,并提高了性能,但從用戶的角度來看,幾乎沒有什么變化?!?/p>

我們也希望Kubernetes能夠到達(dá)這個階段,核心部分非常無趣,所有有趣的事情都發(fā)生在核心之外。我認(rèn)為我們正在朝這個方向前進(jìn)。所以我覺得這對我們來說是一個好地方,能夠讓生態(tài)系統(tǒng)中的事情變得更有趣,而不是核心項(xiàng)目本身。

Kris Nova:  我第一次聽到有人用“無趣”來形容軟件的時候,好像是Rob Pike在Go剛推出時的某個早期演講中提到的。

Mat Ryer: 是的。我有個快速問題,如果我寫k8s……

Joe Beda: 哈哈哈!

Mat Ryer: ……我是讓自己難堪了嗎?這是“潮”還是“不潮”啊?我不確定,這還流行嗎,還是……

Joe Beda: 還流行啊。

Mat Ryer: 還流行啊。

Joe Beda: 對于那些不清楚的人來說---這就像我們寫國際化或本地化一樣,i...

Johnny Boursiquot: i18n...

Joe Beda: i18n,類似的東西。或者Andreessen Horowitz的a16z……[笑聲] 這是同樣的邏輯,k和s之間有8個字母。但我們還有一個優(yōu)勢,那就是你可以把它叫做“kates”。因此很多人在讀它時,不叫Kube或Kubernetes,而是叫kates。我不知道是誰開始這么叫的......這既酷,因?yàn)樗且粋€簡寫,但它也增加了Kubernetes世界的新手學(xué)習(xí)的難度,因?yàn)橛侄嗔艘粋€術(shù)語。人們會想,“好吧,我知道Kubernetes,但我看到k8s......這到底是怎么回事啊?!”

Mat Ryer: 是的。

Kris Nova: 我喜歡它的原因是,它讓我在Twitter上談?wù)揔ubernetes時可以最少化字符數(shù)。

Johnny Boursiquot: 這確實(shí)有幫助。說到更多術(shù)語......是“kube cuttle”,還是“kube control”?[笑聲]

Joe Beda: “Queue Beck tall”!

Johnny Boursiquot: [笑聲]

Joe Beda: 這就像是I/O控制,你是說“I/O控制”還是“eye octal”(ioctl)?我們經(jīng)常在這些發(fā)音上爭論不休。我們在Heptio有一位員工,現(xiàn)在在VMware---她堅(jiān)持把Kubernetes錯誤發(fā)音成Kapernikes(Copernicus) [笑聲] 這成了我們團(tuán)隊(duì)的一個游戲,看看誰能找到最糟糕的發(fā)音。

Johnny Boursiquot: 太棒了。

Mat Ryer: 最后一個問題,Nova......K/K代碼庫有85,000多個提交記錄。你最喜歡哪個?可以直接給個簡短的哈希值。

Kris Nova: 我最喜歡的提交記錄......讓我們稱之為Joe的提交吧。Joe是第一個在開源代碼庫中提交代碼的人,如果沒有他的提交,我想我們現(xiàn)在都不會在這里。

Mat Ryer: 這是個好答案。

Johnny Boursiquot: 答案揭曉。

Joe Beda: 我必須反駁一下......在我們把代碼庫移到GitHub之前,我們其實(shí)有一個內(nèi)部代碼庫。我只是做了一些清理工作,準(zhǔn)備發(fā)布代碼......[笑聲] 所以我不能說那都是我寫的代碼。我只是負(fù)責(zé)在我們準(zhǔn)備發(fā)布時整理了代碼。

Mat Ryer: 我認(rèn)為GitHub的歷史不會騙人,它在法庭上也是可以接受的證據(jù)。

Johnny Boursiquot: [笑聲] 你知道你可以修改那個歷史記錄,對吧?我只是說一下。

Mat Ryer: 真的可以嗎?

Johnny Boursiquot: [笑聲] 好吧。我覺得這是我參與過的最有趣的一期節(jié)目之一,因?yàn)槲覍A(chǔ)設(shè)施充滿了熱情,作為一個SRE,知道無趣的技術(shù)才是我們想要的讓我感到安心......因?yàn)楫?dāng)我值班時,我不希望有有趣的事情發(fā)生,所以......[笑聲] 知道項(xiàng)目的方向真是太棒了,今天能有你們來節(jié)目真是太好了。

Joe,你經(jīng)常主持TGI Kubernetes直播,我們經(jīng)常看你偶爾遇到點(diǎn)小麻煩,但大多數(shù)時候你都能順利完成任務(wù),還有社區(qū)的幫助......

Joe Beda: 是的,我想我們已經(jīng)做了90多期了。我們每周五都會直播......Nova在她還在Heptio工作時也主持了很多期。我知道她現(xiàn)在也在計(jì)劃在Twitch上做一些自己的直播。

Johnny Boursiquot: 嗯,期待你的直播,Nova。

Kris Nova: 是的,我們已經(jīng)做了第一次直播,正在努力完善。我想我們會更多地聚焦于Kubernetes和其他容器編排,拓寬一些話題范圍......當(dāng)然,我們是一家安全公司,所以肯定會有很多安全相關(guān)的討論。

Mat Ryer: 太好了,我們也很期待觀看......

Kris Nova: 是的,我想“觀看”是個合適的詞。

Mat Ryer: 謝謝你。 [笑聲] 我只是確認(rèn)一下。

Johnny Boursiquot: 等待確認(rèn)......[笑聲]

Joe Beda: 有趣的是,YouTube/Twitch的直播和播客有著不同的感覺,我認(rèn)為它們的消費(fèi)方式也不一樣......所以看到不同的媒介找到自己的方式很有趣。

Kris Nova: 是的,當(dāng)你開始直播時,總有那么一瞬間,你會意識到自己已經(jīng)在一個小房間里,一個人對著空氣說了30分鐘......[笑聲] 很容易陷入這種自說自話的狀態(tài)。

Johnny Boursiquot: 太棒了。非常感謝你們來參加我們的節(jié)目,感謝所有現(xiàn)場收聽的聽眾,感謝你們在頻道里提問。如果你們之后再聽到這期節(jié)目,希望你們也會喜歡。

Reference

[1] Kubernetes and Cloud Native: https://changelog.com/gotime/105

[2] Johnny: https://github.com/jboursiquot

[3] Mat: https://github.com/matryer

[4] Kris Nova: https://github.com/krisnova

[5] Joe Beda: https://github.com/jbeda

[6] SpringOne: https://springone.io/

[7] Cluster API 項(xiàng)目: https://github.com/kubernetes-sigs/cluster-api

[8] Kubeadm 工具: https://github.com/kubernetes/kubeadm

[9] Kops: https://github.com/kubernetes/kops

[10] Kubicorn: https://github.com/kubicorn/kubicorn

[11] 《Programming Kubernetes》: https://book.douban.com/subject/33393681/

[12] operator framework: https://github.com/operator-framework

[13] Kubebuilder: https://github.com/kubernetes-sigs/kubebuilder

[14] 曾經(jīng) Mesos 背后的公司,如今在干嘛?: https://2d2d.io/s1/mesos/

[15] 《You Can't Have a Cluster [BLEEP] Without a Cluster》: https://www.youtube.com/watch?v=CLVIbCs2VJY

[16] virtual-kubelet 項(xiàng)目: https://github.com/virtual-kubelet/virtual-kubelet

[17] ObjectMeta: https://kubernetes.io/zh-cn/docs/reference/kubernetes-api/common-definitions/object-meta/

責(zé)任編輯:武曉燕 來源: 旅途散記
相關(guān)推薦

2023-03-06 07:19:50

2021-04-25 10:26:58

云計(jì)算云原生

2023-03-03 07:54:21

2022-04-07 10:17:18

云原生服務(wù)器優(yōu)化

2025-01-03 08:08:56

2022-10-14 07:42:50

LuceneHTTPWeb

2023-03-07 07:56:37

Sqoopk8s底層

2024-06-12 13:21:06

2022-11-08 08:55:31

2021-08-13 07:00:41

云原生k8sspringboot

2022-11-06 21:31:11

云原生Sentinel集群模式

2023-02-08 07:55:33

K8sHPA服務(wù)器

2021-08-26 07:20:05

云原生K8sSpringboot

2022-07-18 18:48:32

Kubernetes云原生

2024-06-06 09:19:09

2023-03-01 07:42:12

HBase編排部署數(shù)據(jù)

2024-06-21 09:28:05

2024-06-18 13:22:42

Nginx云原生Kubernetes

2023-02-01 07:46:51

k8s云原生巧妙用法

2021-06-04 06:01:49

Yarn workspTypeScript云原生
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

青草成人免费视频| 欧美精品乱码久久久久久按摩| 国产精品一区二区a| 久久综合加勒比| 精品一区二区男人吃奶| 天天影视涩香欲综合网| 免费h精品视频在线播放| 男操女视频网站| 日韩在线中文| 日韩欧美激情四射| 国产91porn| 国产91久久久| 日本网站在线观看一区二区三区| 在线播放精品一区二区三区 | 国产日韩亚洲欧美| 久久噜噜色综合一区二区| 麻豆国产精品| 色综合久久综合中文综合网| 中文字幕日韩精品一区二区| 天堂在线视频观看| 久久国产精品第一页| 欧美激情网站在线观看| 性色av蜜臀av浪潮av老女人| 深夜视频一区二区| 亚洲一区二区欧美| 亚洲国产一区在线| 国产 日韩 欧美 精品| 99综合在线| 久久九九国产精品怡红院| 国产日韩视频一区| 久久夜夜久久| 欧美日在线观看| 91制片厂免费观看| 色播色播色播色播色播在线 | 国产毛片久久久久久| 国产社区精品视频| 国产精品成人免费在线| 精品国产综合久久| 在线观看免费中文字幕| 国产亚洲永久域名| 九色精品美女在线| 日本人亚洲人jjzzjjz| 超碰97久久| 欧美日韩国产123区| 国产精品50p| 亚洲91av| 最好看的中文字幕久久| 日韩三级电影| 你懂的在线观看| 国产精品一区免费视频| 国产精品久久久久久亚洲影视 | www.精品视频| 蜜臀av性久久久久蜜臀aⅴ流畅| 97色在线观看| 强行糟蹋人妻hd中文| 久久porn| 久久最新网址| 一本大道久久a久久综合| 日本高清视频免费在线观看| 色哟哟免费在线观看 | 国产欧美亚洲精品| 五月婷婷视频在线| 国产精品大片免费观看| 久久久999成人| 中文字幕第69页| 欧美人妖在线| 亚洲精品永久免费| 呦呦视频在线观看| 成人av地址| 精品国产一区二区三区四区四| 青青草原播放器| 99视频有精品高清视频| 欧美精品亚洲一区二区在线播放| 久久久精品麻豆| av在线不卡精品| 欧美影视一区二区三区| 老司机午夜av| 蜜桃视频成人m3u8| 欧美亚洲综合网| 成人黄色一区二区| 蜜桃成人精品| 欧美性xxxxxxxx| 艹b视频在线观看| 粉嫩91精品久久久久久久99蜜桃 | 午夜精品一区二区在线观看 | 日韩中文欧美在线| 日韩免费中文字幕| 狠狠人妻久久久久久综合| 亚洲一区欧美激情| 国产精品高潮呻吟久久av无限| 无码人妻久久一区二区三区| 日本成人超碰在线观看| 国产在线高清精品| 精品毛片一区二区三区| 成人h版在线观看| 国产传媒一区二区| 天天操天天干天天干| 97超碰欧美中文字幕| 日韩av电影免费在线| 懂色一区二区三区| 亚洲人成影院在线观看| 国产精品一色哟哟| 日韩新的三级电影| 日韩欧美极品在线观看| xx欧美撒尿嘘撒尿xx| 久草综合在线| 日韩欧美卡一卡二| 无码人妻精品一区二区三应用大全| 精品大片一区二区| 久久影院在线观看| 国产精品99精品无码视| 日韩精品亚洲一区| 成人av网站观看| 加勒比一区二区三区在线| 亚洲欧美一区二区久久| 欧美 丝袜 自拍 制服 另类| 99久久亚洲国产日韩美女| 精品奇米国产一区二区三区| 中文字幕狠狠干| 成人精品影视| 久久久久久久久久久网站| 最好看的日本字幕mv视频大全 | 中文字幕在线观看91| 任我爽精品视频在线播放| 国产亚洲一区精品| 久久久全国免费视频| 欧美bbbbb| 国产99在线免费| 成人精品福利| 五月激情丁香一区二区三区| 91女神在线观看| 久久夜色精品国产噜噜av小说| 色老头一区二区三区| 国产午夜福利片| 久久国产精品一区二区| 久久久免费看| 日本欧美电影在线观看| 色香蕉久久蜜桃| 北京富婆泄欲对白| 欧美成熟视频| 成人网中文字幕| 韩国福利在线| 精品高清一区二区三区| 中文字幕第22页| av一区二区高清| 欧美一区亚洲一区| 黄色一级大片在线免费看国产一| 国产精品福利一区二区三区| 成年人在线观看视频免费| 欧美丝袜美腿| 久久久久久成人精品| 国产精品一区二区三区在线免费观看| 26uuu国产在线精品一区二区| 狠狠精品干练久久久无码中文字幕| 国产欧美在线观看免费| 国产视频亚洲精品| 日本中文字幕免费| 成人av手机在线观看| 国产91沈先生在线播放| 精品国模一区二区三区欧美| 色偷偷88888欧美精品久久久| 无码视频在线观看| 久久影视一区二区| 欧美,日韩,国产在线| 欧美变态网站| 色综合五月天导航| 亚洲精品无码久久久| 一区二区视频在线| 久久久久无码精品| 欧美hd在线| 国产欧美日韩免费看aⅴ视频| 第九色区av在线| 色天天综合色天天久久| 日本少妇高潮喷水xxxxxxx| 久久狠狠一本精品综合网| 99re在线| free性护士videos欧美| 亚洲国产精品高清久久久| 国产精品99精品| 99re在线视频这里只有精品| 成人免费观看毛片| 少妇一区二区视频| 国产日韩欧美中文| 精品美女视频在线观看免费软件| 91官网在线免费观看| 特级西西www444人体聚色| 美女视频网站久久| 午夜啪啪福利视频| 日本免费精品| 国外色69视频在线观看| 色中色在线视频| 91搞黄在线观看| 熟女少妇a性色生活片毛片| 国产精品影视天天线| 精品少妇人妻av免费久久洗澡| 香蕉久久夜色精品国产使用方法| 日韩美女在线看| 99riav在线| 3d成人动漫网站| 免看一级a毛片一片成人不卡| www.欧美.com| 人妻有码中文字幕| 日韩欧美一区二区三区在线视频| 亚洲精品欧美极品| 在线观看特色大片免费视频| 中文字幕日韩电影| 亚洲av无码一区二区乱子伦| 富二代精品短视频| 强伦人妻一区二区三区| 精品一区二区三区视频| 久久久性生活视频| 香蕉久久精品| 国产精品r级在线| 黄网页免费在线观看| 亚洲大胆美女视频| 探花国产精品一区二区| 亚洲一级在线观看| 女人十八毛片嫩草av| 国产黄人亚洲片| 日本黄色三级大片| 欧美日韩18| 色女人综合av| 国产乱人伦丫前精品视频| 国产美女被下药99| 丝袜老师在线| 久久在线精品视频| yourporn在线观看中文站| 欧美一级片在线| 国产情侣呻吟对白高潮| 亚洲人成电影网站色mp4| 亚洲第一成人网站| 成人网男人的天堂| 久久精品免费网站| 亚洲黄页一区| 热久久最新地址| 狠狠做六月爱婷婷综合aⅴ| 官网99热精品| 亚洲三级在线| 国产精品777| 美女搞黄视频在线观看| www.日韩系列| 9色在线观看| 一本色道久久综合狠狠躁篇的优点| 欧美视频久久久| 91精品国产免费| 中文字幕av第一页| 在线免费观看日本欧美| 亚洲欧美日韩激情| 色呦呦一区二区三区| 青青草免费观看视频| 精品人伦一区二区三区蜜桃网站| 国产精品美女毛片真酒店| 亚洲一区二区三区四区五区中文| 欧美精品99久久久| 亚洲国产视频在线| 日本三级理论片| 精品人伦一区二区三区蜜桃网站| 欧美性猛交bbbbb精品| 色综合色综合色综合色综合色综合| 国产无遮挡呻吟娇喘视频| 色婷婷精品久久二区二区蜜臀av| 中文字幕 国产精品| 欧美精品123区| 99视频在线观看免费| 欧美一区二区三区在线看| 亚洲男人天堂久久| 亚洲国产精彩中文乱码av| 天堂中文在线视频| 亚洲系列中文字幕| 日本美女在线中文版| 欧美丰满少妇xxxx| 波多野结衣视频一区二区| 国产成人精品在线观看| 久久国产三级| www日韩av| 西野翔中文久久精品国产| 亚洲欧洲一区二区福利| 一区二区中文字| 老太脱裤让老头玩ⅹxxxx| 日韩中文欧美在线| 亚洲精品国产久| av电影在线观看一区| 男人舔女人下部高潮全视频 | 国产传媒免费在线观看| 亚洲一二三四区不卡| 亚洲免费激情视频| 欧美私模裸体表演在线观看| 亚洲精品网站在线| 亚洲午夜女主播在线直播| 污污片在线免费视频| 国产999精品| 欧美日韩黄色| 欧美久久在线| 欧美黄免费看| 国产91色在线观看| 成人美女在线观看| 香蕉久久久久久久| 午夜电影网亚洲视频| 亚洲中文字幕一区二区| 亚洲国产精久久久久久| 日本电影在线观看网站| 国模gogo一区二区大胆私拍| 涩涩涩久久久成人精品| 久久香蕉综合色| 亚洲国产成人精品女人| 日本一区二区黄色| 国产成人精品一区二| 91资源在线播放| 午夜久久久久久久久| 99久久免费国产精精品| 亚洲丝袜av一区| 成人av影院在线观看| 国产日韩精品在线播放| 亚欧日韩另类中文欧美| 337p亚洲精品色噜噜狠狠p| 免费日本视频一区| aaaaa级少妇高潮大片免费看| 亚洲一区二区三区四区五区中文 | 最新中文字幕在线播放| 成人午夜电影免费在线观看| 国产精品97| 欧在线一二三四区| 99riav久久精品riav| 久久久精品99| 欧美人妖巨大在线| 免费福利在线视频| 97视频在线免费观看| 亚洲视频精选| 日日噜噜夜夜狠狠久久丁香五月| 蜜臀精品一区二区三区在线观看 | jizz欧美性11| 国产亚洲欧美一级| 亚洲日本视频在线观看| 亚洲精品久久久久久下一站 | 下面一进一出好爽视频| 国产精品久久久久影视| a片在线免费观看| 国产亚洲日本欧美韩国| 成人在线视频播放| 麻豆传媒一区二区| 99成人免费视频| 黄色免费视频网站| 黄色精品在线看| 日韩中文字幕综合| 欧美激情亚洲国产| 国产精品白浆| 免费观看美女裸体网站| 成人av综合一区| 久草手机在线观看| 精品爽片免费看久久| 桃花岛tv亚洲品质| 日韩av大全| 美女一区二区视频| 中文字幕电影av| 日韩欧美精品三级| 精精国产xxxx视频在线中文版| 成人资源av| 亚洲电影av| 法国伦理少妇愉情| 欧美亚洲一区二区在线| 日本美女高清在线观看免费| 成人精品一区二区三区| 欧美在线1区| 欲求不满的岳中文字幕| 色综合天天综合网天天狠天天| 黄色在线播放| 91麻豆国产精品| 狠狠爱www人成狠狠爱综合网| 国产真实乱人偷精品| 91黄视频在线| 操你啦视频在线| 国产伦精品一区二区三区照片91 | 亚洲图片一区二区| 桃花色综合影院| 国产精品永久免费| 欧美精品一卡| aa片在线观看视频在线播放| 在线免费亚洲电影| 深夜国产在线播放| 精品国产综合久久| 麻豆成人久久精品二区三区红 | 在线观看美女网站大全免费| 成人免费高清完整版在线观看| 欧美区一区二| 亚洲一区二区三区蜜桃| 91麻豆精品国产91久久久资源速度 | 伊人免费在线观看| 欧美日韩爱爱视频| 自拍亚洲一区| 日本人dh亚洲人ⅹxx| 日韩欧美aaa| 久草中文在线| 日本三级中国三级99人妇网站| 精品亚洲国产成人av制服丝袜| 久久亚洲国产成人精品性色| 中文在线不卡视频| 波多野结衣在线一区二区| 2025韩国理伦片在线观看| 亚洲图片欧美色图| 日本三级在线视频|