當前位置:首頁 » 網頁前端 » 前端要用k8s嗎
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

前端要用k8s嗎

發布時間: 2023-05-21 01:31:22

A. 為啥有些人,不用k8s的可視化界面管理k8s,非要敲命令呀

命令有時候可以耐拆自動化啊
還有像python等語言也有對應的客戶端
本質上都是調用k8s的api而已,不必賀畝扒糾結禪昌。

B. k8s的主要功能

一、什麼是k8s,k8s都有什麼功能?

k8s是一個docker容器管理工具

二、k8s的核心功能

k8s最適合跑微服務架構洞租

創備春建一個rc yaml文件

升級 kubectl rolling-update nginx -f nginx-rc1.15.yaml --update-period=10s

這個是rc的資源升級命令        --update-period=10s這個是10.秒更新一個pod資源

回滾 kubectl rolling-update nginx2 -f nginx-rc.yaml --update-period=1s

這個是回滾的命令,如果升級的新版本有問題就馬上回滾到上個穩定的版本中

service幫助pod暴露埠

創建一個service

修改nodePort范圍

service默認使用iptables來實現負載均衡, k8s 1.8新版本中推薦使用lvs(四層負載均衡)

創建deployment

kubeadm安裝k8s1.13 - 技術之路

namespace做資源隔離

pv: persistent volume 全局的資源 pv,node

pvc: persistent volume claim 局部的資源(namespace)pod,rc,svc

上傳仿顫耐yaml配置文件,創建pv和pvc

file:///F:/%E6%96%B0%E5%BB%BA%E6%96%87%E4%BB%B6%E5%A4%B9/%E4%BA%91%E8%AE%A1%E7%AE%97/k8sday03/k8s%E8%AF%BE%E7%A8%8Bday3.pdf

C. k8s、Jenkins構建前端應用總結,基於kubesphere平台devops功能

基於k8s環境的Jenkins名Jenkins,支持k8s環境,與Jenkins相比,JenkinsX基於容器環境,易於使用。比如使用maven,只需要拉起一個maven的容器即可,而不需要手動安裝maven工具,其他類似。

D. docker為什麼要用k8s

Docker 是一個流行的容器技術,可以將應用程序、庫、依賴項等打包到一個獨立、運行時環境中,以便在不同的操作系統和伺服器上部署和運行。但是,當一個企業或組織需要管理和運行數千個容器和多個容器集群時,使用僅 Docker 本身可能會帶來很多困難。
因此,Kubernetes(k8s)被廣泛用於管理 Docker 集群,這是一個流行的開源容器編排和管理系統。以下是一些使用 Kubernetes 的原因:
自動化:Kubernetes 可以自動化地管理容器的部署、升級、配置、擴容、縮容等,包括自動化計算節點的帶寬和存儲用量等資源。
可擴展性:Kubernetes 提供了規模化容器部署的手段和機制,可以快速擴展容器數量,以及構建高可用性和可靠拿芹性的系統。
跨平台:Kubernetes 可以在不同的雲端和數據中心、不同的操作系統和伺服器上使用,提供了跨平台的容器編排管理方案。
健康檢查:Kubernetes 可以實現容器的自動健康檢查和自動故障修復功能,確團游保容器和應用程序的穩定和可靠性。
可視化管理:Kubernetes 提供了完整的可視化塌敏銷管理界面,以方便管理和監控容器集群的狀態和應用程序的性能等指標。
總的來說,Kubernetes 可以幫助企業更輕松地管理和運行大規模的 Docker 容器和集群,在應用程序的可靠性、安全性和可擴展性方面提供了可靠的解決方案。

E. K8S前世今生(1)

Kubernetes是如今IT領域最火熱的關鍵字,本文回顧Kubernetes的歷史,介紹Kubernetes的基礎概念,並和大家更為熟悉的虛擬化技術作類比加深對Kubernetes的理解,同時旅悉分析Kubernetes的優勢劣勢,最後展望未來。

有人認為自動化,雲計算和人工智慧是第四次工業革命。如果你開始感受到IT領域自動化率的飆升,特別是在應用程序部署和管理領域(我覺得還不是無縫的自插拔式),那麼不用太過驚訝。幾年前,Google就正式啟動了名為Kubernetes的項目,也就是現在廣為人知的k8s。Kubernetes是開源的容器集群管理器,意圖成為能夠在容器領域自治化部署以及擴展應用程序的平台。

Kubernetes是一個可移植的,可擴展的開源平台,用於管理容器化的工作負載和服務,可促進聲明式配置和自動化。它擁有一個龐大且快速增長的生態系統。Kubernetes的服務,支持和工具廣泛可用。

Kubernetes這個名字起源於希臘語,意思是舵手或飛行員。Google在2014年開源了Kubernetes項目。Kubernetes將 超過15年的Google 在大規模生產工作負載方面 的經驗 與社區中最好的想法和實踐相結合。

讓我們回顧一下為什麼Kubernetes如此有用。

傳統部署時代: 早期,組織在物理伺服器上運行應用程序。無法為物理伺服器中的應用程序定義資源邊界,這會導致資源分配問題。例如,如果在物理伺服器上運行多個應用程序,則可能會出現一個應用程序佔用大部分資源的飢鏈情況,結果,其他應用程序的性能將下降。解決方案是在不同的物理伺服器上運行每個應用程序。但這並沒有隨著資源利用不足而擴展,並且組織維護許多物理伺服器的成本很高。

虛擬化部署時代: 作為解決方案,引入了虛擬化。它允許您在單個物理伺服器的CPU上運行多個虛擬機(VM)。虛擬化允許在VM之間隔離應用程序,並提供安全級別,因為一個應用程序的信息不能被另一應用程序自由訪問

虛擬化可以更好地利用物理伺服器中的資源,並可以實現更好的可伸縮性,因為可以輕松地添加或更新應用程序,降低硬體成本等等。藉助虛擬化,您可以將一組物理資源呈現為一組一次性虛擬機。

每個VM都是一台完整的計算機,在虛擬化硬體之上運行所有組件,包括其自己的操作系統。

容器部署時代: 容器類似於VM,但是它們具有輕松的隔離屬性,可以在應用程序之間共享操作系統(OS)。因此,容器被認為是輕質的。與VM相似,容器具有自己的文件系統,CPU,內存,進程空間等。由於它們與基礎架構分離,因此可以跨雲和OS分發進行移植。

容器之所以受歡迎,是因為它們提供了額外的好處,例如:

容器是捆綁和運行應用程序的好方法。在生產環境中,您需要管理運行應用程序的容器,並確保沒有停機時間。例如,如果一個容器發生故障,則需要啟動另一個容器。如果此行為由系統處理,會不會更容易?

這就是Kubernetes的救援方法!Kubernetes為您提供了一個可彈性運行分布式系統的框架。它負責應用程序的擴展和故障轉移,提供部署模式等。例如,Kubernetes可以輕松管理系統的Canary部署。

Kubernetes為您提供:

Kubernetes不是一個傳統的,包羅萬象的PaaS(平台即服務)系統。由於Kubernetes在容器級別而非硬體級別運行,因此它提供了PaaS產品共有的一些普遍適用的功能,例如部署,擴展,負載平衡,並允許用戶集成其日誌記錄,監視和警報解決方案。但是,Kubernetes並不是單片的,這些默認解決方案是可選的和可插入的。Kubernetes提供了構建開發人員平台的基礎,但是在重要的地方保留了用戶的選擇和靈活性。

Kubernetes:

在深入研究Kubernetes之前,要認識到如果沒有容器的出現,Kubernetes也不會存在。從高層看,容器看上去像虛擬機,但是最大的區別是容器和其他容器共享主機系統的內核。這是最主要的差異要素,因為拆肢乎容器共享物理主機的OS,所以它們很容易移動。用戶也可以在同一台主機上啟動比VM數量多得多的容器,因為它們共享內核,庫和二進制文件。比如,一個VM的大小大概是20GB,而運行著相同應用程序的容器大概只有200MB。

容器(無論是Docker還是CoreOS的rkt)允許開發人員無縫地關注於應用程序的運行時。基礎架構的問題會影響到脆弱的應用程序開發的日子一去不復返了。使用容器,開發人員僅僅需要考慮如何恰當地擴展,部署以及管理他們新開發的應用程序,但是現有的容器方案並不能在跨多節點的環境里自己管理,調度以及部署容器。

在容器化的世界裡,Kubernetes是環境的管理和部署引擎。使用Kubernetes的最基本功能,用戶就可以輕松地在物理硬體或者虛擬機上調度並且運行應用程序。Kubernetes的更多高級用法讓開發人員可以徹底擺脫主機為中心的世界,而進入容器為中心的環境里。

使用Kubernetes很容易。可以使用REST API來操作Kubernetes所包含的主要組件 。Kubernetes的定位是平台,但是它包含多個組件,每個都有各自的角色。Master是Kubernetes集群里的控制服務(也稱為control plane),Master很重要,因為它會API調用和其交互的其他組件。集群單元管理發生在Master里,調度服務也在這里。

Kubernetes架構介紹,Imesh Gunaratne 。

Master之下就是Kubernetes工作單元,這里定義特定工作的實體。既然最終目標是要交付一個應用程序,那麼這些單元還有更多其他的特定功能。

Pod :最基礎的單元是Pod,當指派容器時,容器實際上並不會指派到物理硬體上,相反,容器會被分配到一個Pod里。Pod通常負責託管服務於單個應用程序的容器。這意味著Pod內的所有容器都能夠共享卷和IP空間,允許它們擴展為單個應用程序。

Service(服務) :如果想要構建更為穩健的容器化策略,那麼「服務」的概念就更加重要。服務的功能是資源均衡器,將工作負載在容器間導流。這使得後台容器可以通過單一穩定的接入點和前端應用程序通信。這個特性讓使用者更易於使用並且可擴展。

Replication Controller(副本控制器) :這些單元的目的是確保在某個時間點,有所需數量的特定容器在運行。比如說突然某個內核出錯了,導致某個容器(多個容器組內的)崩潰了,那麼RC的責任是新啟動一個副本Pod,直至之前的Pod在重啟後恢復為止。一旦之前的Pod啟動並且再次運行了,RC就會殺死副本Pod。

Label(標簽) :雖然標簽並不是一種工作單元,但是它起著至關重要的組織作用。標簽的功能是組命名,這樣用戶可以針對一組單元做操作。這是用戶組織容器環境的方式。

在最基礎的級別上,這些是組成Kubernetes平台的實體。

想一想我們現在都很熟悉的技術,通過虛擬化類比一下Kubernetes。
Kubernetes的Master和VMware的vCenter類似。Master知道集群里的所有節點,以及所有節點的容量。而且,Master對Pod的調度及放置,類似於vCenter如何在vSphere的主機上部署VM。Pod的功能和vApp很類似,因為它們都在一個網路里託管多個容器。容器類似VM,因為它們之前都是互相隔離的,除非它們被指定特定的網路路徑。最後,Replication Controller類似於HA,因為RC持續監控環境,確保正確數量的Pod在運行,如果數量少於預期,就會調度一個新的實例。

雖然Kubernetes並不是市場里唯一的容器管理平台(還有Docker Swarm和Mesos),但是它更受歡迎。為什麼呢?從高層看,Kubernetes正獲得關注,因為它提供了這樣一個平台,容器化的應用程序可以只編寫一次,就能夠在所有類型的雲供應商以及私有雲上運行,無論底層使用的是哪種基礎架構。而且,Kubernetes還在發展,讓開發人員能夠在Kubernetes上運行任意適合的應用程序。Sam Ghods,Box的聯合創始人認為只要是能運行的二進制文件,就可以運行在Kubernetes上。

使用Kubernetes,開發人員可以快速部署應用程序,而無需擔心傳統平台上的諸多風險(想想跨多OS環境的垂直擴展),可以隨時擴展應用程序,並且更好地分配資源。

硬體使用量的下降是使用Kubernetes帶來的另一個好處。一些公司報告由於容器的輕量天性,以及能夠快速殺死不需要的實體(和傳統架構相比),硬體使用量減少了40-50%。eBay是Kubernetes的支持者和用戶,聲稱自從他們切換了平台之後,看到了伺服器上[overhead的急劇降低]

最後,Kubernetes最大的不同之處並非和技術相關,而是促成各種方案的社區。Google將其發布為開源項目,吸引了1000+的社區貢獻者,34000次commit。它的社區比Mesos的社區(次大的競爭者社區)大5倍,比所有競爭者的社區加起來都要大。

Kubernetes受到了廣泛的稱贊,但是它也有一些缺點。當第一次使用它做部署(大規模)時,它很復雜,並且很難搭建。它要求具有特定技能的工程師,在現在的行業里可能很難找到。

第二,Kubernetes作為容器的第三方管理系統。容器技術本身的缺陷和成長之痛會影響到Kubernetes所能夠提供的服務。

Kubernetes欠缺的領域是調度器。默認的Kubernetes調度器依賴於應用程序所有者提供的分配資源的需求,而不管實時使用量。這個方案會加重每個節點上的資源分片情況。

最後,能夠在容器里運行的工作負載范圍將影響Kubernetes的廣泛使用,但是這並非Kubernetes可以直接解決的問題。比如,很多工程師還不想把「核心」工作負載放到容器里,因為它可能會崩潰,而容器從設計上就不是為了存儲數據的。常見的實踐是只在容器里運行那些崩潰後也不會導致下線時間的應用程序。

即使有這些不足,也並沒有阻止Goldman Sachs,Box,SAP以及The New York Times這樣的公司引入Kubernetes平台作為其下一代數據中心計劃的一部分。

應用程序是如今大多數業務的生命線。公司需要快速的部署和高質量的應用程序。這些需求正是開發人員轉向容器的原因。隨著容器的發展,如果還認為Kubernetes的定位有問題那就難免有些愚蠢了。Kubernetes平台有很多的可能性,但是規模大了的話它也很難管理。最初的搭建和在生產環境上大規模運行Kubernetes之間的空白是很大的。近幾年裡,可能會有來自於第三方的強勁挑戰,來管理這些部署和工作負載。對於Kubernetes來說,不囿於已經取得的成就至關重要。如果社區能夠恰當地擴展平台,那麼Kubernetes的前途甚為光明。

Kubernetes借鑒了Borg的設計理念,比如Pod、Service、Labels和單Pod單IP等。Kubernetes的整體架構跟Borg非常像,如下圖所示:

Kubernetes主要由以下幾個核心組件組成:

除了核心組件,還有一些推薦的Add-ons:

Kubernetes Architecture

Kubernetes Master

Kubernetes Node

API對象是K8s集群中的管理操作單元。K8s集群系統每支持一項新功能,引入一項新技術,一定會新引入對應的API對象,支持對該功能的管理操作。例如副本集Replica Set對應的API對象是RS。

每個API對象都有3大類屬性:元數據metadata、規范spec和狀態status。元數據是用來標識API對象的,每個對象都至少有3個元數據:namespace,name和uid;除此以外還有各種各樣的標簽labels用來標識和匹配不同的對象,例如用戶可以用標簽env來標識區分不同的服務部署環境,分別用env=dev、env=testing、env=proction來標識開發、測試、生產的不同服務。規范描述了用戶期望K8s集群中的分布式系統達到的理想狀態(Desired State),例如用戶可以通過復制控制器Replication Controller設置期望的Pod副本數為3;status描述了系統實際當前達到的狀態(Status),例如系統當前實際的Pod副本數為2;那麼復制控制器當前的程序邏輯就是自動啟動新的Pod,爭取達到副本數為3。

K8s中所有的配置都是通過API對象的spec去設置的,也就是用戶通過配置系統的理想狀態來改變系統,這是k8s重要設計理念之一,即所有的操作都是聲明式(Declarative)的而不是命令式(Imperative)的。聲明式操作在分布式系統中的好處是穩定,不怕丟操作或運行多次,例如設置副本數為3的操作運行多次也還是一個結果,而給副本數加1的操作就不是聲明式的,運行多次結果就錯了。

Cluster 是計算、存儲和網路資源的集合,Kubernetes 利用這些資源運行各種基於容器的應用。

Master 是 Cluster 的大腦,它的主要職責是調度,即決定將應用放在哪裡運行。Master 運行 Linux 操作系統,可以是物理機或者虛擬機。為了實現高可用,可以運行多個 Master。

Node 的職責是運行容器應用。Node 由 Master 管理,Node 負責監控並匯報容器的狀態,並根據 Master 的要求管理容器的生命周期。Node 運行在 Linux 操作系統,可以是物理機或者是虛擬機。

Pod 是 Kubernetes 的最小工作單元。每個 Pod 包含一個或多個容器。Pod 中的容器會作為一個整體被 Master 調度到一個 Node 上運行。
Kubernetes 引入 Pod 主要基於下面兩個目的:

Kubernetes 通常不會直接創建 Pod,而是通過 Controller 來管理 Pod 的。Controller 中定義了 Pod 的部署特性,比如有幾個副本,在什麼樣的 Node 上運行等。為了滿足不同的業務場景,Kubernetes 提供了多種 Controller,包括 Deployment、ReplicaSet、DaemonSet、StatefuleSet、Job 等,我們逐一討論。

Deployment 是最常用的 Controller,比如前面在線教程中就是通過創建 Deployment 來部署應用的。Deployment 可以管理 Pod 的多個副本,並確保 Pod 按照期望的狀態運行。

ReplicaSet 實現了 Pod 的多副本管理。使用 Deployment 時會自動創建 ReplicaSet,也就是說 Deployment 是通過 ReplicaSet 來管理 Pod 的多個副本,我們通常不需要直接使用 ReplicaSet。

DaemonSet 用於每個 Node 最多隻運行一個 Pod 副本的場景。正如其名稱所揭示的,DaemonSet 通常用於運行 daemon。

StatefuleSet 能夠保證 Pod 的每個副本在整個生命周期中名稱是不變的。而其他 Controller 不提供這個功能,當某個 Pod 發生故障需要刪除並重新啟動時,Pod 的名稱會發生變化。同時 StatefuleSet 會保證副本按照固定的順序啟動、更新或者刪除。

Job 用於運行結束就刪除的應用。而其他 Controller 中的 Pod 通常是長期持續運行。

RC、RS和Deployment只是保證了支撐服務的微服務Pod的數量,但是沒有解決如何訪問這些服務的問題。一個Pod只是一個運行服務的實例,隨時可能在一個節點上停止,在另一個節點以一個新的IP啟動一個新的Pod,因此不能以確定的IP和埠號提供服務。要穩定地提供服務需要服務發現和負載均衡能力。服務發現完成的工作,是針對客戶端訪問的服務,找到對應的的後端服務實例。在K8s集群中,客戶端需要訪問的服務就是Service對象。每個Service會對應一個集群內部有效的虛擬IP,集群內部通過虛擬IP訪問一個服務。在K8s集群中微服務的負載均衡是由Kube-proxy實現的。Kube-proxy是K8s集群內部的負載均衡器。它是一個分布式代理伺服器,在K8s的每個節點上都有一個;這一設計體現了它的伸縮性優勢,需要訪問服務的節點越多,提供負載均衡能力的Kube-proxy就越多,高可用節點也隨之增多。與之相比,我們平時在伺服器端做個反向代理做負載均衡,還要進一步解決反向代理的負載均衡和高可用問題。

Kubernetes 運行容器(Pod)與訪問容器(Pod)這兩項任務分別由 Controller 和 Service 執行。

名字空間為K8s集群提供虛擬的隔離作用,K8s集群初始有兩個名字空間,分別是默認名字空間default和系統名字空間kube-system,除此以外,管理員可以可以創建新的名字空間滿足需要。

F. k8s國內公司用的多不多

k8s國內公司用橘滲的不多,因為k8s雲圓衡脊服務,若是完全自己搭建集群,有幾個人能部署和維護就可以了;如果使用的雲廠商的託管型集群,那麼這個集群的搭建維護就是由雲廠商負責的,自己就不需要會完整的攔頃部署k8s集群了。

G. JenkinsX構建前端解決npm依賴包慢的問題

使用的是基於k8s環境的JenkinsX,JenkinsX是Jenkins在雲環境的版本,支持k8s構建環境,就是通過啟用各類構建工具的pod,比如node的pod,maven的pod。

由於使用不熟練,遇到一些問題,總結下來供以後參考:

經過多次實踐,解決方案如下:
第一種方案:簡單直接,使用淘寶的npm鏡像 。這樣其實速度能快很多

第二種方案:緩存npm包,掛載k8s的pv到pod
1.1 把pv掛載node環境的pod容器的/node_moles下
1.2 進入項目目錄,這里的項目目錄為test,建立軟連接:

其實這種方案也解決了容器耗費節點臨時資源太多被驅逐的問題,因為使用的存儲卷。
僅做記錄,供以後參考。

H. 什麼是K8S

k8s全稱kubernetes,這個名字大家應該都不陌生,k8s是為容器服務而生的一個可移植容器的編排管理工具,越來越多的公司正在擁抱k8s,並且當前k8s已經主導了雲業務流程,推動了微服務架構等熱門技術的普及和落地,正在如火如荼的發展。想要了解更多,我推薦你去看看時速雲,他們是一家全棧雲原生技術服務提供商,提供雲原生應用及數據平台產品,其中涵蓋容器雲PaaS、DevOps、微服務治理、服務網格、API網關等。大家可以去體驗一下。
希望能給您提供幫助,可以給個大大的贊不。

I. K8S的作用是什麼

(1)服務發現與調度
(2)負載均衡
(3)服務自愈
(4)服務彈性擴容
(5)橫向擴容
(6)存儲卷掛載
總而言之,k8s可以使我們應用的部署和運維更加方便。想要了解更多,我推薦你去看看時速雲,他們是一家全棧雲原生技術服務提供商,提供雲原生應用及數據平台產品,其中涵蓋容器雲PaaS、DevOps、微服務治理、服務網格、API網關等。大家可以去體驗一下。
希望能給您提供幫助,可以給個大大的贊不。