概要
您是否正在嘗試應(yīng)該怎樣學(xué)習 Kubernetes
?如果是這樣,你可能會有這樣的問題 “ Kubernetes 會是下一件大事嗎?” 或 “ Kubernetes 太繁瑣了?” 或 “ Kubernetes 很難學(xué)習嗎?”之類的問題。我的希望是消除任何混亂,并幫助您確定Kubernetes 是否適合您。
在本篇文章中,我們將探討以下問題:
- Kubernetes 有什么好處?
- 學(xué)習 Kubernetes 有多難?
- 對于小型項目來說,Kubernetes 是不是太重了?
- 我必須掌握大部分 Kubernetes 的特性才能使用它嗎?
- Kubernetes 受歡迎程度是增加還是減少?
- Kubernetes 有趣嗎?
免責聲明
Kubernetes 位于軟件開發(fā)
,DevOps
和系統(tǒng)管理
的交叉點。我是軟件開發(fā)人員。因此無論好壞,我都通過開發(fā)者的眼光看待 Kubernetes。
我的目標是保持客觀。因此,我將介紹優(yōu)缺點,以便您確定 Kubernetes 是否適合您。
什么是 Kubernetes ?
簡而言之,Kubernetes 可幫助您管理由一個或多個容器組成的應(yīng)用程序。從本質(zhì)上講,它是一個工具箱,可幫助您構(gòu)建由多個Docker容器組成的非常強大的應(yīng)用程序。
Kubernetes 有什么好處?
自愈
:Kubernetes 自動重啟崩潰的容器。它將崩潰或宕機節(jié)點上運行的容器重新調(diào)度。負載均衡
:在 Kubernetes 中創(chuàng)建負載均衡器很簡單。可以針對群集內(nèi)部或群集外部的流量負載均衡到不同的 Pod。自動容器調(diào)度
:Kubernetes 自動決定將容器部署到何處。當您在多個節(jié)點上運行許多容器時,這確實非常方便。水平縮放
:當容器副本需要增加時,很容易按比例擴大它們的數(shù)量。也可以通過單個命令手動完成,也可以自動完成。滾動更新
:您可以將舊容器換成新容器,而不會中斷服務(wù)。也可以使用單個命令來完成。零停機降級
:如果在某些容器中發(fā)現(xiàn)錯誤,可以恢復(fù)到這些容器的舊版本,而不會中斷。(這使您有足夠的時間來修改bug。)Secret 數(shù)據(jù)管理
:您可以在 Kubernetes 集群中存儲敏感信息。如API密鑰
和數(shù)據(jù)庫密碼
等。與將它們保存在版本控制下的源文件中相比,這是一個更安全的選擇。抽象掉硬件
:開發(fā)人員用容器都無需了解有關(guān)底層群集硬件的任何知識。這使得從一個云提供商遷移到另一云提供商變得容易。
學(xué)習 Kubernetes 有多難?
有人抱怨 Kubernetes 很難學(xué)習。我認為這是有道理的,但并沒有大家想象的那么難。讓我概述下大家為什么覺得很難學(xué)。
找到好的Kubernetes文檔很難嗎?
- 在過去的幾年中,官方文檔已從可怕的變成了相當不錯的。但是它仍然有些脫節(jié)并且比較分散。這使得確定學(xué)習各種概念的順序有些困難。因此,我認為該文檔最好作為參考,而不是循序漸進的指南。Kubernetes復(fù)雜嗎?
- 我認為 Kubernetes 并不比當今使用的任何流行編程語言復(fù)雜。實際上,我認為 Kubernetes 更容易掌握。特別是如果您已經(jīng)熟悉容器的話。Kubernetes是否有許多先決條件?
- 并不是的。但是您應(yīng)該知道什么是Docker容器
以及它們?nèi)绾喂ぷ鞯幕A(chǔ)知識。了解YAML
(這需要5到10分鐘的學(xué)習時間)也很有幫助。并且您需要對*nix
命令行有基本的了解。是的,即使是Windows用戶,因為在開發(fā)/調(diào)試過程中,您可能會不時地轉(zhuǎn)移到基于Linux的容器中。有很多概念要學(xué)習嗎?
- 有很多概念需要學(xué)習,但這是有原因的。憑借其眾多功能,Kubernetes 能夠解決許多不同類型的問題。但是,您可以繞開更高級的功能,直到您真正需要它們?yōu)橹埂TS多問題只需要一小部分 Kubernetes 功能。使用您需要的內(nèi)容,而忽略其余部分。
Kubernetes 是不是太重了?
盡管 Kubernetes 具有很多功能,但您不必全部學(xué)習它們。僅通過學(xué)習核心功能(如pods
, services
, controllers
, volumes
, secrets
等),就可以學(xué)習很多東西。然后,當您真正需要時,您可以學(xué)習您所需要的功能。
我認為這種 “太重” 的名聲實際上來源于團隊 選擇安裝
和 維護Kubernetes
的方式。您會看到,Kubernetes 在生產(chǎn)中并沒有一個簡單的安裝過程。(請注意,創(chuàng)建開發(fā)集群并不難。)但是,如果您使用托管解決方案(例如 DigitalOcean Kubernetes 或 Google Kubernetes Engine),則 安裝
,安全
和 升級
都不需要你來維護。最重要的是,托管解決方案很便宜!
最后,請記住以下兩個想法:
1、使用您需要的內(nèi)容,而忽略其余部分。
2、每個大項目都是從小項目開始的!
Kubernetes 受歡迎程度是增加還是減少?
沒有人愿意登上一艘正在下沉的船。也沒有人愿意學(xué)習一種正在消失的技術(shù)。好消息是,Kubernetes 沒有消失的危險。許多大公司(例如 Pinterest,Spotify和Squarespace)都依賴 Kubernetes。事實上,Kubernetes 已經(jīng)變得非常流行,它已經(jīng)成為事實上的標準容器編排系統(tǒng)。
Kubernetes 有趣嗎?
我真的很喜歡和 Kubernetes 共事。但我一開始并沒有這樣的感覺。
幾年前,當我第一次學(xué)習Kubernetes時,我并不喜歡它,原因有二:
它的文檔實在是太糟糕了
你必須處理大量的配置文件
好消息是,Kubernetes 的維護人員已經(jīng)極大地改進了文檔。僅此一點,讓 Kubernetes 的使用變得更加有趣。
也就是說,使用 Kubernetes 意味著您仍然必須使用許多配置文件。但是現(xiàn)在我真的很喜歡和他們一起工作。我將這種徹底的轉(zhuǎn)變歸功于三件事:
1、首先,Kubernetes 所處的區(qū)域存在著有趣的問題。畢竟,它是一個用于解決容器化系統(tǒng)的基礎(chǔ)結(jié)構(gòu)級問題的工具箱。因此,您可以使用Kubernetes來處理
分布式系統(tǒng)
,微服務(wù)
,系統(tǒng)可靠性
,網(wǎng)絡(luò)
和安全性
之類的事情。承認吧,蠻好玩的!2、其次,Kubernetes 是一個功能強大的系統(tǒng),具有許多功能。俗話說,“權(quán)力越大,責任越大,樂趣越大”。這就是為什么我的人生目標是轉(zhuǎn)世成一條電鰻。到目前為止,一切都很好。
3、第三,Kubernetes 組件很有趣,就像樂高積木一樣有趣。它們的
靈活性
和可組合性
使您能夠解決各種問題。這有點類似于編程,因為在兩種情況下,您都需要結(jié)合創(chuàng)造性
,獨創(chuàng)性
和最佳實踐
來解決問題。有什么不喜歡的呢?
可以肯定的是,Kubernetes并不全是陽光和彩虹。因此,讓我們來看看幾個不足的地方。
1、首先,Kubernetes 的配置文件在一開始讀起來并不直觀。簡而言之,您的大腦需要時間來習慣于從不重要的片段中挑選出重要的片段。但是不用擔心。這不是很難。如果我可以得到,您也可以。
2、其次,您需要熟練地使用 Kubernetes 進行調(diào)試。(您不可能拋出一堆打印語句或運行某種不存在的Kubernetes調(diào)試器。)在您熟悉一些有用的kubectl命令之前,您可能會不時感到有些茫然。
總結(jié)
首先,Docker
和 Kubernetes
都是目前的潮流。容器和容器編排將繼續(xù)席卷整個行業(yè),這是有充分理由的。盡管容器解決了整個部署問題,但Kubernetes提供了一個強大而通用的系統(tǒng)來管理任何規(guī)模的容器集群。
也就是說,下面兩種情況,Kubernetes 可能不是您的最佳選擇。
1、首先,如果(a)您尚未使用容器,(b)您沒有計劃使用它們,(c)您已經(jīng)具有可以運行的部署和集群管理系統(tǒng),那么就不要切換!聽起來您的項目已經(jīng)相當完善了。
2、其次,您所在的團隊是否決定安裝和管理自己的容器編排系統(tǒng)?如果是這樣,請考慮使用使用
Docker Swarm
之類的工具,它可能不具備 Kubernetes 的全部功能,但更易于安裝。
原文鏈接:https://blog.true-kubernetes.com/is-kubernetes-worth-learning-part-1-the-big-picture/
本文由 YP小站 發(fā)布!