




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
PAGE76Docker容器技術應用課程教案授課題目:項目九部署和管理Kubernetes集群授課學時12課時課程類型理實一體課教學目的:(1)了解Kubernetes(2)理解Kubernetes的體系架構(3)理解Kubernetes的相關概念(4)了解Kubernetes集群的管理(5)掌握配置Kubernetes集群各節點系統環境的方法(6)掌握部署Kubernetes集群的方法(7)掌握Kubectl基本操作(8)掌握通過YAML文件創建Pod的方法(9)掌握通過標簽調度Pod的方法(10)掌握通過YAML文件創建Deployment的方法(11)掌握多容器共享Volume的方法教學重點:1、Kubernetes概述:介紹Kubernetes作為容器編排平臺的背景及其在容器管理中的重要作用,講解其優勢、功能和應用場景。2、Kubernetes體系架構:講解Kubernetes集群的架構,包括Master節點和Node節點的角色、組件以及如何協調工作。3、Kubernetes集群的管理:介紹如何配置Kubernetes集群的各節點環境、安裝必要工具和網絡插件,并演示如何部署Kubernetes集群。4、Kubectl基本操作:掌握Kubectl命令行工具的基本操作,如何查看集群狀態、管理資源對象及調度Pod。5、YAML文件與Pod管理:通過YAML文件創建和管理Pod,學習如何通過標簽調度Pod、創建Deployment、共享Volume等操作。教學方法和手段:任務驅動法、啟發法、討論法、直觀演示法
Docker容器技術應用課程教案教學內容及過程教學內容與教學設計:9.1知識準備9.1.1Kubernetes概述Kubernetes在希臘語中的意思是“舵手”,由于字母k與s之間有8個字母,所以人們簡稱其為K8S,它是由Google主導開發的容器編排系統,用于管理云平臺中多個主機上的容器化應用。Kubernetes基于Go語言開發,前身是Google公司開發的Borg系統。Borg系統在Google內部已經應用了十幾年,Google公司將Borg系統完善后貢獻給了開源社區,并將其重新命名為Kubernetes。Kubernetes系統支持用戶通過模板定義服務配置,用戶提交配置信息后,系統會自動完成對應用容器的創建、部署、發布、伸縮、更新等操作。系統發布以來吸引了眾多知名互聯網公司與容器愛好者的關注,是目前容器集群管理系統中優秀的開源項目之一。1.Kubernetes的主要功能(1)容器編排:Kubernetes管理集群中容器的調度,維持應用程序所需的狀態。(2)自我修復:在節點產生故障時,在預期副本數量不變的情況下,終止健康檢查失敗的容器并部署新的容器,保證服務不會中斷。(3)存儲部署:Kubernetes掛載外部存儲系統,將這些存儲作為集群資源的一部分,增強存儲的靈活性。(4)彈性伸縮:Kubernetes可以使用命令或基于CPU使用情況快速啟動擴容和縮容應用程序,保證在高峰期的高可用性和業務低谷期回收資源。(5)資源監控:工作節點集成Advisor資源收集工具,可以快速實現對集群資源的監控。(6)認證授權:限制用戶是否有權限使用API進行操作,精細化權限分配。(7)密鑰管理:Kubernetes允許存儲和管理敏感信息,如密碼、OAuth令牌和SSH密鑰。用戶可以部署或更新機密和應用程序配置,而無須重建容器鏡像,不會在堆棧配置中暴露機密。(8)回滾更新:Kubernetes采用滾動更新策略更新應用,一次更新一個Pod,當更新過程中出現問題時,Kubernetes會進行回滾更新,保證升級業務不受影響。(9)服務發現:Kubernetes允許一個應用程序找到和連接到Kubernetes集群中的其他服務,通常采用的服務發現機制會為同一個pod里的容器自動設置環境變量、服務的DNS記錄等。(10)負載均衡:將網絡請求均勻地分配到不同的Pod上,確保每個Pod都能接收到相同數量的請求,避免某些Pod過載而其他Pod空閑的狀況。Kubernetes常用的負載均衡方式包括kube-proxy、Ingress控制器以及使用外部負載均衡器等。2.Kubernetes的優勢(1)Kubernetes系統不僅可以實現跨集群調度、水平擴展、監控、備份、災難恢復,還可以解決大型互聯網集群中多任務處理的問題。(2)Kubernetes遵循微服務架構理論,將整個系統劃分為多個功能各異的組件。各組件結構清晰、部署簡單,可以非常便捷地運行在系統環境中。(3)利用容器的擴容機制,系統將容器歸類,形成“容器集”(Pod),用于幫助用戶調度工作負載,并為這些容器提供聯網和存儲服務。9.1.2Kubernetes的體系架構Kubernetes集群主要由控制節點Master和多個工作節點Node組成,兩種節點分別運行著不同的組件。Master負責集群的管理,協調集群中的所有行為或活動,如應用的運行、修改、更新等;Node負責接收Master的工作指令并執行相應的任務。集群狀態存儲系統Etcd為系統提供數據存儲服務,Kubernetes架構圖如圖9-1所示。圖9-1Kubernetes架構圖1.Master節點及其組件控制節點Maser是整個集群的核心,主要負責組件或者服務進程的管理和控制,如追蹤其他服務器的健康狀態、保持各組件之間的通信、為用戶或服務提供API接口等。Master的所有組件通常會在一臺主機上部署和啟動,但是不在此主機上運行用戶容器。在控制節點Master上部署以下三種組件:(1)APIServer:整個系統的核心組件,是Kubernetes集群的入口,負責處理來自客戶端的請求,包括對資源的增、刪、改、查以及監控等操作。APIServer還通過RESTAPI接口提供認證授權、數據校驗以及集群狀態變更等功能,是其他模塊之間數據交互和通信的中樞。另外,APIServer是整個Kubernetes集群操作Etcd存儲系統的唯一入口,確保集群數據的一致性和安全性。(2)Scheduler:監視新創建且未分配工作節點的Pod,根據不同的需求將其分配到工作節點中運行,同時允許用戶根據實際需求定制調度策略,實現工作負載管理和資源調度,確保工作負載的合理分布和資源的有效利用。(3)ControllerManager:集群的管理控制中心,負責管理集群中各種控制器Controllers,這些Controllers是實現集群狀態期望值的核心組件,負責監控和維護集群內各種資源對象的狀態,包括Pods、Nodes、Deployments、Services、Endpoints等。Kubernetes主要的控制器及其功能如下:(1)DeploymentController:管理一組Pod,確保指定數量的Pod在集群中運行。當有節點出現故障時,DeploymentController會自動在其他節點上創建新的Pod以保持指定的Pod數量。另外,它還支持滾動更新和回滾操作,允許在不中斷服務的情況下更新Pod的鏡像或配置。?(2)NodeController:管理和監控集群中的各個Node節點,?如集群的Node信息同步、單個Node的生命周期管理、負載發現等。通過與APIServer交互實時更新Node的狀態信息,確保集群的高可用性和資源的優化利用?。(3)NamespaceController:監控和管理Namespace資源對象,確保每個Namespace符合預期的狀態。通過與APIServer交互實時監控Namespace的狀態,必要時進行相應的管理操作,確保整個集群的正常運行和資源的合理分配。(4)ServiceController:負責與外部云平臺進行交互,管理Service資源,如監聽Service和對應Pod副本的變化、實現Service的負載均衡等,作為集群與外部云平臺之間的接口?確保Service資源的正確配置。(5)EndpointsController:負責生成和維護所有的Endpoints對象,如監聽Service和Pod的變化、當Service被刪除時刪除同名的Endpoints對象、實現負載均衡?和故障恢復、與外部云平臺進行交互?等。(6)ServiceAccountController:為Pod提供身份驗證和授權,以便與APIServer進行交互。ServiceAccount使Pod在集群中具有獨立的身份,從而實現精細的權限控制和安全策略。(7)PersistentVolumeController:負責管理和控制持久化存儲的分配和使用,如存儲資源的分配?、?訪問控制和安全保障?、?回收策略管理、?動態擴展、?與PVC綁定等。(8)DaemonSetController:管理和控制DaemonSetPod的創建、更新和刪除,確保每個Node上至少運行一個DaemonSetPod,以便實現相應服務。(9)JobController:管理一次性任務或批處理作業,如文件壓縮、數據處理等,一旦任務完成,Pod便要結束運行。(10)PodAutoscalerController:實現Pod的自動伸縮,定時獲取監控數據進行策略匹配,當滿足條件時執行Pod的伸縮動作。(11)CloudController:嵌入了云平臺的控制邏輯,使集群可以與云提供商進行交互。2.Node節點及其組件Node節點是集群中的工作節點,主要負責接收Master的工作指令并執行相應的任務,既可以是物理機也可以是虛擬機。當某個Node節點出現故障時,Master節點會將負載切換到其他工作節點上。在Node節點上部署了以下三種組件:(1)Kubelet:主要負責管控容器,首先從APIServer接收Pod的創建請求,然后進行相關的啟動和停止容器等操作。另外,Kubelet會監控容器的運行狀態,并通知給APIServer,確保容器按照期望狀態運行。(2)Kube-proxy:從APIServer獲取Service信息并創建相關的代理服務,維護節點上的一些網絡規則,實現集群內的客戶端Pod訪問Service,或者是集群外的主機通過NodePort等方式訪問Service。(3)DockerEngine:Docker的守護進程,負責容器的創建和管理工作。3.集群狀態存儲系統EtcdKubernetes集群中所有的狀態信息都存儲于Etcd數據庫中,Etcd是一個獨立的服務組件,以分布式鍵值存儲在集群中,具有實現集群發現、共享配置等功能,同時還可以提供監聽機制。當鍵值發生改變時,Etcd通知APIServer并通過WatchAPI向客戶端輸出。Kubernetes集群還支持DNS、WebUI等插件,用于提供更完備的集群功能。Kubernetes是一個平臺,不提供應用程序級服務,也不提供或授權配置語言,但用戶可以通過任意形式的聲明性規范來實現所需功能。9.1.3Kubernetes的相關概念Kubernetes作為容器化管理平臺,其工作機制中涉及到很多核心概念,它們對于理解系統關鍵資源對象以及這些資源對象在系統中扮演的角色等非常重要,下面就來介紹與Kuberntes集群相關的概念和術語。1.PodKubernetes集群進行管理的最小單位,一個Pod可以包含一個或多個相關容器,同一個Pod內的容器共享網絡命名空間和存儲資源。2.Label資源標識符,用來區分不同對象的屬性。Label的鍵值對(Key:Value)可以在對象創建前后進行添加和修改。用戶可以通過給指定資源對象綁定一個或多個Label來靈活地管理資源,如資源的分配、調度、配置、部署等。Selector選擇器通過匹配Label定義資源之間的關系,給某個資源對象定義一個Label,便可以通過LabelSelector查詢和篩選擁有某些Label的資源對象。3.Pause容器為其它容器提供生命周期的隔離和協調,同時還為Pod中的容器提供穩定的網絡環境,確保容器網絡連接的可靠性。4.ReplicationControllerPod的副本控制器簡稱RC,是實現彈性伸縮、動態擴容和滾動升級的核心,它保證了集群中存在指定數量的Pod副本,如停止多余的Pod副本,或啟動不足的Pod副本。Deployment是一個更高層次的API對象,用于管理ReplicaSet和Pod,并提供聲明式更新等功能。5.StatefulSet在Kubernetes集群中,StatefulSet用于管理系統中有狀態應用的集群,如MysQL、MongoDB、ZooKeeper等。這些集群中每個節點都有固定的ID號,集群中的成員通過ID號相互通信。為了能夠在其他節點上恢復某個失敗的節點,這種集群中的Pod需掛載到共享存儲的磁盤上,在刪除或啟用Pod后,Pod的名稱和IP地址會發生改變。StatefulSet可以使Pod副本的名稱和IP地址在整個生命周期中保持不變,從而使Pod副本按照固定的順序啟動、更新或者刪除。StatefulSet有唯一的網絡標識符(IP地址),適用于需要持久存儲、有序部署、擴展、刪除和滾動更新的應用程序。6.Service具備不同業務功能而又彼此獨立的多個Service微服務單元構成了網站,服務之間通過TCP/UDP進行通信,從而形成了強大而又靈活的彈性網絡。Service提供一個或多個Pod實例的穩定訪問地址,FrontendPod通過Service提供的入口訪問一組Pod集群。當Kubernetes集群中存在DNS附件時,Service服務會自動創建一個DNS名稱用于服務發現,將外部流量引入集群內部,并將到達Service的請求分發到后端Pod對象上。7.Job計劃任務Job是Kubernetes集群用來控制批處理型任務的API對象。批處理型任務與長期服務型業務的主要區別是批處理型任務的運行有頭有尾,而長期服務型任務在用戶不停止的情況下將永遠運行。Job管理的Pod成功完成任務就自動退出,任務成功完成的標志根據不同的pletions策略而不同,單Pod型任務有一個Pod成功就標志完成,定數成功型任務要保證有N個任務全部成功才標志完成,工作隊列型任務根據應用確認的全局成功來標志完成。8.Namespace集群中存在許多資源對象,這些資源對象可以是不同的項目或用戶等。命名空間Namespace將這些資源對象從邏輯上進行隔離并設定控制策略,以便不同分組在共享整個集群資源時可以被分別管理。9.Volume存儲卷Volume是集群中的共享存儲資源,為應用服務提供存儲空間。Volume可以被Pod中的多個容器使用和掛載,也可以用于容器之間的數據共享。10.EndpointEndpoint主要用于標識服務進程的訪問點,一般由容器端口號和Pod的IP地址構成。9.1.4Kubernetes集群的管理1.Kubernetes中?的資源類型在Kubernetes中,所有的操作對象都被當做資源來進行管理,通過APIServer組件提供的接口實現對資源的增、刪、改、查等操作。資源配置清單是用來創建和管理資源的配置文件。Kubernetes中?的資源非常豐富,常見的資源類型及其主要功能見表9-1所示。表9-1常見的資源類型及其主要功能資源類型主要功能資源名稱工作負載型用于承載具體的工作負載,如應用程序的實例化運行。Pod、ReplicaSet、Deployment、StatefulSet、DaemonSet、Job、CronJob服務發現及均衡型負責服務發現和負載均衡,使得外部可以訪問到內部的Pod。Service,Ingress配置與存儲型提供數據存儲和配置管理。Volume、CSI、ConfigMap、Secret、DownwardAPI集群級提供集群級別的管理和安全控制。Namespace、Node、Role、ClusterRole、RoleBinding、ClusterRoleBinding元數據型提供元數據相關的功能,如資源的限制和模板定義。HPA、PodTemplate、LimitRangePod是Kubernetes中最小的部署和管理單位。一個Pod可以包含一個或多個容器,這些容器共享相同的網絡和存儲,并被部署到同一臺物理或虛擬機器上。Kubernetes中的大多數資源都與Pod有關,如Deployment用于定義Pod的副本數量和升級策略,以確保應用程序在Kubernetes集群中持續運行,Deployment還支持滾動升級和回退功能;Service用于將一組Pod封裝為一個統一的網絡服務,并提供負載均衡功能,使其可以在Kubernetes集群內部或外部訪問;ConfigMap用于存儲應用程序的配置數據,如環境變量、配置文件等,并將其注入到Pod中;Volume(存儲卷)被定義在Pod上,可以被Pod內多個容器掛載使用,Volume與Pod的生命周期相同,當Pod內的容器終止或者重啟時,Volume中的數據不會丟失。2.Kubernetes中?的配置文件Kubernetes中通常?使用YAML格式來定義配置文件,配置文件一般包含以下四部分:(1)apiVersion:指定KubernetesAPI的版本。(2)kind:定義該文件所描述的資源類型,如Pod、Deployment、Service等。(3)metadata:指定資源的元數據信息(屬性),如名稱、命名空間,標簽等。(4)pec:定義資源的規格,包括容器鏡像、端口映射、副本數、服務類型等。一個YAML配置文件內可以同時定義多個資源。YAML文件的語法規則在項目五DockerCompose的使用中已經介紹了,在此不再贅述。3.Kubectl命令行工具Kubectl是管理Kubernetes集群的客戶端工具,用戶可以通過Kubectl工具運行相應的命令實現對Kubernetes資源對象的創建、管理和調試等操作。kubectl命令行工具使用靈活、功能強大,受到運維和開發人員的青睞。Kubectl命令的格式為:kubectl[command][type][name][flags]command:子命令,用于對Kubernetes集群中的一個或多個資源對象進行操作,如create、get、apply、describe、delete等。type:指定資源對象類型,區分大小寫,可以指定單數、復數或縮寫形式,例如,運行以下三條命令會輸出相同的結果:kubectlgetpodappkubectlgetpodsappkubectlgetpoappname:指定資源對象的名稱,區分大小寫,若省略名稱,則顯示所有資源的詳細信息。flags:指定可選的參數,例如,可使用-s或--server參數指定KubernetesAPI服務器的地址和端口。注意:從命令行指定的參數會覆蓋默認值和相應的環境變量。2.Kubectl命令中常用的子命令run:基于特定鏡像在Kubernetes集群中創建Pod、Deployment或Job。get:顯示一個或者多個資源對象的信息。logs:顯示容器的日志。proxy:將本機的某個端口映射到APIServer。label:設置或者更新資源對象的Label。apply:從stdin或者配置文件對資源對象更新配置。create:從stdin或者配置文件創建資源對象。delete:刪除資源對象。describe:描述一個或者多個資源對象的詳細信息。diff:查看配置文件與當前系統中正在運行的資源對象之間的差異。edit:編輯資源對象的屬性,在線更新。exec:執行一個容器內的命令。cluster-info:顯示集群中Master和內置服務的信息。config:修改kubeconfig文件。set:設置資源對象的某個特定信息。top:查看Node或Pod的資源使用情況version:顯示系統版本信息。scale:擴容、縮容一個Deployment、ReplicaSet、RC或者Job中Pod的數量。plugin:在Kubectl命令行使用自定義插件。9.2任務實施9.2任務實施任務9.2.1配置Kubernetes集群各節點的系統環境(1)任務目標掌握配置Kubernetes集群各節點系統環境的方法(2)任務內容克隆三臺主機,并設置其IP地址各主機連接遠程管理工具MobaXterm設置各主機的主機名稱配置各主機的主機名解析關閉系統Swap(3)完成任務所需的設備和軟件一臺安裝Windows10操作系統的計算機VMwareWorkstation,Docker遠程管理工具MobaXterm(4)任務實施步驟:詳見實驗指導書任務9.2.2部署Kubernetes集群(1)任務目標掌握部署Kubernetes集群的方法(2)任務內容配置Kubeadm和Kubelet的Repo源并安裝配置網絡轉發參數并使其生效加載IPVS相關內核模塊配置Kubelet的Cgroups,啟動Kubelet服務初始化Master節點安裝網絡插件flannel并啟動Kubelet將Node1和Node2加入集群(3)完成任務所需的設備和軟件一臺安裝Windows10操作系統的計算機VMwareWorkstation,Docker遠程管理工具MobaXterm(4)任務實施步
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 電線加高用電合同協議書
- 紗窗安裝定制合同協議書
- 課程上課合同協議書模板
- 冷庫門簾售賣合同協議書
- 打孔合同協議書范本下載
- 廢棄電廠買賣合同協議書
- 新媒體時代傳統報業轉型發展策略
- 地暖保養施工合同協議書
- 長春電動噴霧器項目商業計劃書參考模板
- 天氣英文兒歌課件
- 通信汛期安全培訓
- 2025年安徽省九年級中考語文第一次模擬試卷附答案解析
- 2025年初級護工考試試題及答案
- 基于STM32的輸電線路狀態監測系統的研究
- 中國老年糖尿病診療指南2024版詳解 課件
- 制作標書流程培訓
- 人員考核協議書(2篇)
- 人格與精神障礙-學做自己的心理醫生-暨南大學2中國大學mooc課后章節答案期末考試題庫2023年
- 人力資源規劃復盤
- 2025屆蘇教版高考仿真模擬英語試卷含解析
- 中建道路起重吊裝施工方案
評論
0/150
提交評論