Kubernetes 集群實戰(zhàn)(微課版)課件 項目3 熟悉Kubernetes基本操作_第1頁
Kubernetes 集群實戰(zhàn)(微課版)課件 項目3 熟悉Kubernetes基本操作_第2頁
Kubernetes 集群實戰(zhàn)(微課版)課件 項目3 熟悉Kubernetes基本操作_第3頁
Kubernetes 集群實戰(zhàn)(微課版)課件 項目3 熟悉Kubernetes基本操作_第4頁
Kubernetes 集群實戰(zhàn)(微課版)課件 項目3 熟悉Kubernetes基本操作_第5頁
已閱讀5頁,還剩43頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

Kubernetes集群實戰(zhàn)(微課版)工業(yè)和信息化精品系列教材——云計算技術項目3

熟悉Kubernetes基本操作能力CAPACITY要求了解Kubernetes對象和資源學會Kubernetes對象的創(chuàng)建和基本操作熟悉kubectl命令的語法并掌握其基本用法了解Pod的概念和實現機制學會創(chuàng)建和管理Pod任務3.2使用kubectl命令任務3.1理解和使用Kubernetes對象任務3.3創(chuàng)建和管理Pod任務3.1理解和使用Kubernetes對象任務說明01OPTION02OPTION03OPTION了解Kubernetes對象和資源的概念了解Kubernetes對象的描述方法了解Kubernetes對象管理方法04OPTION初步掌握Kubernetes對象的創(chuàng)建方法05OPTION學會使用Kubernetes對象的標簽06OPTION學會使用Kubernetes名稱空間任務3.1理解和使用Kubernetes對象相關知識3.1.1什么是Kubernetes對象任務3.1理解和使用Kubernetes對象相關知識3.1.2Kubernetes對象的規(guī)約和狀態(tài)spec——指定對象的規(guī)約(規(guī)格),是必需的字段,用于描述對象的期望狀態(tài)(DesiredState)。status——描述對象的當前狀態(tài)(CurrentState),由Kubernetes系統和組件設置并更新。Kubernetes控制平面一直都在積極地管理著對象的實際狀態(tài)(ActualState),讓對象達成所期望的狀態(tài)。任務3.1理解和使用Kubernetes對象相關知識3.1.3描述Kubernetes對象#必需字段,聲明對象使用的API版本apiVersion:apps/v1#必需字段,聲明要創(chuàng)建的對象的類別kind:Deployment#必需字段,定義對象的元信息,包括對象名稱、使用的標簽等metadata:name:nginx-deployment任務3.1理解和使用Kubernetes對象相關知識3.1.3描述Kubernetes對象#必需字段,聲明對象的期望狀態(tài),如使用的鏡像、副本數等spec:selector:matchLabels:app:nginxreplicas:2#運行2個與該模板匹配的Podtemplate:metadata:labels:app:nginxspec:containers:-name:nginximage:nginx:1.14.2ports:-containerPort:80任務3.1理解和使用Kubernetes對象相關知識3.1.4Kubernetes對象管理方法管理方法說明示例適用場景指令式命令通過操作指令的形式直接操作Kubernetes對象,所操作的對象在命令的參數中直接指定,操作結果由Kubernetes系統實時管理,不提供配置更改的歷史記錄kubectlcreatedeploymentnginx--imagenginx項目開發(fā)階段,或在Kubernetes中運行一次性任務,簡單易用指令式對象配置將指令發(fā)給配置文件,配置文件必須包含YAML或JSON格式的對象完整定義,被操作的對象會由Kubernetes按照配置文件中的定義進行創(chuàng)建或更改kubectlcreate-fnginx.yaml適合生產項目,通過代碼管理系統進行管理,可以與流程集成聲明式對象配置將對象的定義保存在配置文件,但是并不指定要對該文件執(zhí)行的操作,對對象執(zhí)行的操作(create、update、patch、delete)由Kubernetes自動檢測出來?;谀夸浌ぷ鳎鶕夸浿腥舾膳渲梦募?zhí)行不同的操作,通過kubectlapply命令應用配置文件來實現kubectlapply-fconfigs/適合生產項目,但使用難度較高,難于調試任務3.1理解和使用Kubernetes對象相關知識3.1.5對象的名稱和UID每一個對象都有一個名稱來標識在同類資源中的唯一性。名稱在同一資源的所有API版本中必須是唯一的。每個對象都有一個不同的UID來標識該對象在整個集群中的唯一性。UID是Kubernetes自動為對象生成的,可以唯一標識該對象的字符串。任務3.1理解和使用Kubernetes對象相關知識3.1.6標簽和注解標簽標簽以鍵值對的形式附加到各種對象上。一個對象可以定義任意數量的標簽,同一個標簽也可以被添加到任意數量的對象上。任務3.1理解和使用Kubernetes對象相關知識3.1.6標簽和注解標簽選擇器基于等值的選擇器environment=productiontier!=frontend基于集合的選擇器environmentin(production,qa)tiernotin(frontend,backend)

partition!partition任務3.1理解和使用Kubernetes對象相關知識3.1.6標簽和注解注解使用注解為Kubernetes對象附加任意的非標識的元數據。注解使用鍵值對的形式進行定義。"metadata":{"annotations":{"key1":"value1","key2":"value2"}}任務3.1理解和使用Kubernetes對象相關知識3.1.7名稱空間名稱空間進一步組織和劃分資源。名稱空間為名稱提供了一個范圍。部分全局資源是不屬于任何名稱空間。名稱空間適用于存在很多跨多個團隊或項目的用戶的場景。任務3.1理解和使用Kubernetes對象任務實現任務3.1.1創(chuàng)建Kubernetes對象使用指令式命令創(chuàng)建Deployment對象#kubectlcreatedeploymentnginx--imagenginx:1.14.2deployment.apps/nginxcreated#kubectlgetdeploymentNAMEREADYUP-TO-DATEAVAILABLEAGEnginx1/11151s#kubectlgetpodNAMEREADYSTATUSRESTARTSAGEnginx-896b88869-bmchg1/1Running076s#kubectldeletedeploymentnginxdeployment.apps"nginx"deleted任務3.1理解和使用Kubernetes對象任務實現任務3.1.1創(chuàng)建Kubernetes對象使用指令式對象配置創(chuàng)建Deployment對象#kubectlcreate-f/k8sapp/03/nginx-deployment.yamldeployment.apps/nginx-deploymentcreated#kubectlgetdeploymentNAMEREADYUP-TO-DATEAVAILABLEAGEnginx-deployment2/2222m41s#kubectlgetpodNAMEREADYSTATUSRESTARTSAGEnginx-deployment-7fb96c846b-6pgv91/1Running02m52snginx-deployment-7fb96c846b-sqrdr1/1Running02m52s#kubectldelete-f/k8sapp/03/nginx-deployment.yamldeployment.apps"nginx-deployment"deleted任務3.1理解和使用Kubernetes對象任務實現任務3.1.1創(chuàng)建Kubernetes對象使用聲明式對象配置創(chuàng)建Deployment對象#kubectlapply-f/k8sapp/03/nginx-deployment.yamldeployment.apps/nginx-deploymentcreated#kubectlgetdeploymentNAMEREADYUP-TO-DATEAVAILABLEAGEnginx-deployment2/22236s修改該YAML文件,將其中的副本數定義修改為3。#kubectlapply-f/k8sapp/03/nginx-deployment.yamldeployment.apps/nginx-deploymentconfigured#kubectlgetdeploymentNAMEREADYUP-TO-DATEAVAILABLEAGEnginx-deployment3/333106s任務3.1理解和使用Kubernetes對象任務實現任務3.1.1創(chuàng)建Kubernetes對象使用聲明式對象配置創(chuàng)建Deployment對象#kubectlgetpodNAMEREADYSTATUSRESTARTSAGEnginx-deployment-7fb96c846b-4cmnr1/1Running0118snginx-deployment-7fb96c846b-mrr9n1/1Running034snginx-deployment-7fb96c846b-njfbf1/1Running0118s#kubectldelete-f/k8sapp/03/nginx-deployment.yamldeployment.apps"nginx-deployment"deleted任務3.1理解和使用Kubernetes對象任務實現任務3.1.2操作對象的標簽為對象添加標簽創(chuàng)建名為nginx-a的Pod對象并為其添加標簽app=nginx。#kubectlrunnginx-a--image=nginx-lapp=nginxpod/nginx-acreated編寫Pod配置文件nginx-label.yaml。apiVersion:v1kind:Podmetadata:name:nginx-blabels:#為Pod設置兩個Labelapp:nginxenv:prodspec:containers:-name:nginximage:nginx基于該配置文件創(chuàng)建Pod對象。#kubectlcreate-f/k8sapp/03/nginx-label.yamlpod/nginx-bcreated任務3.1理解和使用Kubernetes對象任務實現任務3.1.2操作對象的標簽修改對象的標簽#kubectllabelpodnginx-aenv=debug--overwritepod/nginx-alabeled修改對象的標簽#kubectllabelpodnginx-aversion-pod/nginx-aunlabeled操作具有指定標簽的對象#kubectldeletepod-lapp=nginxpod"nginx-a"deletedpod"nginx-b"deleted任務3.1理解和使用Kubernetes對象任務實現任務3.1.3操作名稱空間查看集群中當前所有的名稱空間列表#kubectlgetnamespacesNAMESTATUSAGEdefaultActive22d#默認名稱空間kube-node-leaseActive22d#用于與各節(jié)點相關的租約(Lease)對象kube-publicActive22d#主要由集群使用kube-systemActive22d#系統創(chuàng)建對象所使用的名稱空間kubernetes-dashboardActive22d#Dashboard所用名稱空間任務3.1理解和使用Kubernetes對象任務實現任務3.1.3操作名稱空間通過配置文件創(chuàng)建名稱空間編寫配置文件test-ns.yaml。apiVersion:v1kind:Namespacemetadata:name:test-ns基于該配置文件創(chuàng)建名為test-ns的名稱空間。#kubectlcreate-f/k8sapp/03/test-ns.yamlnamespace/test-nscreated#kubectlgetnamespacetest-nsNAMESTATUSAGEtest-nsActive13s任務3.2使用kubectl命令任務3.1理解和使用Kubernetes對象任務3.3創(chuàng)建和管理Pod任務3.2使用kubectl命令任務說明01OPTION02OPTION03OPTION了解kubectl命令的基本用法了解kubectl命令的語法要素熟悉kubectl命令的基本使用任務3.2使用kubectl命令相關知識3.2.1kubectl命令的基本用法kubectl[command][TYPE][NAME][flags]command——對資源執(zhí)行操作的子命令,如create、get、describe、delete。TYPE——要操作的資源(或對象)類型。NAME——要操作的資源的名稱。任務3.2使用kubectl命令相關知識3.2.2kbectl常用子命令子命令用法說明applykubectlapply-fFILENAME[flags]從配置文件或stdin對資源應用配置更改attachkubectlattachPOD-cCONTAINER[-i][-t][flags]掛接到正在運行的容器,查看輸出流或與容器(stdin)交互createkubectlcreate-fFILENAME[flags]從配置文件或stdin對創(chuàng)建資源deletekubectldelete(-fFILENAME|TYPE[NAME|/NAME|-llabel|--all])[flags]基于文件、標準輸入或通過指定標簽選擇器、名稱、資源選擇器或資源本身,刪除資源describekubectldescribe(-fFILENAME|TYPE[NAME_PREFIX|/NAME|-llabel])[flags]顯示資源的詳細狀態(tài)execkubectlexecPOD[-cCONTAINER][-i][-t][flags][--COMMAND[args...]]對Pod中的容器執(zhí)行命令任務3.2使用kubectl命令相關知識3.2.3kbectl所支持的資源類型資源名稱縮寫名API分組及其版本是否屬于名稱空間資源類型configmapscmv1是ConfigMapendpointsepv1是Endpointseventsevv1是Eventnamespacesnsv1否Namespacenodesnov1否Nodepersistentvolumeclaimspvcv1是PersistentVolumeClaimpersistentvolumespvv1否PersistentVolumepodspov1是Podsecrets

v1是Secretservicessvcv1是Servicedaemonsetsdsapps/v1是DaemonSetdeploymentsdeployapps/v1是Deploymentreplicasetsrsapps/v1是ReplicaSetstatefulsetsstsapps/v1是StatefulSetcronjobscjbatch/v1是CronJobjobs

batch/v1是Jobeventsevevents.k8s.io/v1是Eventeventsevevents.k8s.io/v1是Eventstorageclassesscstorage.k8s.io/v1否StorageClass任務3.2使用kubectl命令相關知識3.2.4kbectl命令輸出格式輸出格式說明-ocustom-columns=<spec>以逗號分隔的自定義列列表輸出-ocustom-columns-file=<filename>使用文件中的自定義列模板輸出-ojson輸出JSON格式的API對象-ojsonpath=<template>輸出jsonpath表達式定義的字段-ojsonpath-file=<filename>輸出文件中jsonpath表達式定義的字段-oname僅輸出資源名稱-owide以純文本格式輸出,包含所有附加信息。以Pod為例,輸出包含所在節(jié)點的信息-oyaml輸出YAML格式的API對象任務3.2使用kubectl命令任務實現任務3.2.1熟悉kubectl命令的使用獲取kubectl命令的幫助信息kubectl<command>--help執(zhí)行kubectloptions命令可以查看全局選項。執(zhí)行kubectlapi-resources命令查看所支持的資源列表。使用kubectl命令行補全功能#yuminstallbash-completion-y#source/usr/share/bash-completion/bash_completion#source<(kubectlcompletionbash)任務2.2部署和使用KubernetesDashboard任務實現任務3.2.2使用kubectl命令輔助生成YAML文件獲取特定資源及其字段的規(guī)范kubectlexplainresource[.field]...查看特定字段的規(guī)范#kubectlexplainpods.spec.containersKIND:PodVERSION:v1......RESOURCE:containers<[]Object>FIELDS:args <[]string>......自動生成YAML文件#kubectlcreatedeploymentnginx-deploy--image=nginx-oyaml--dry-run=client>nginx-deploy.yaml任務3.2使用kubectl命令任務3.1理解和使用Kubernetes對象任務3.3創(chuàng)建和管理Pod任務3.3創(chuàng)建和管理Pod任務說明01OPTION02OPTION03OPTION了解Pod與容器的關系了解Pod的定義了解Pod的生命周期與健康檢查機制04OPTION學會創(chuàng)建多容器的Pod05OPTION掌握Pod的基本配置方法任務3.3創(chuàng)建和管理Pod相關知識3.3.1什么是PodPod是Kubernetes創(chuàng)建或部署的最小單位。Pod相當于容器集合,類似于共享名稱空間并共享文件系統卷的一組容器。Pod具有聯網功能。Pod具有存儲功能。Pod被創(chuàng)建后用一個UID來唯一標識,當Pod生命周期結束,被一個等價Pod替代,UID將重新生成。任務3.3創(chuàng)建和管理Pod相關知識3.3.2Pod與容器為什么要使用Pod代替容器作為部署的最小單元容器通常遵循單一性原則。為避免給容器本身額外增加新的屬性,Kubernetes引入Pod。一個Pod封裝一個或多個容器、存儲資源、一個獨立的網絡IP以及管理控制容器運行方式的策略選項。任務3.3創(chuàng)建和管理Pod相關知識3.3.2Pod與容器Pod單一容器Pod多容器

Pod任務3.3創(chuàng)建和管理Pod相關知識3.3.2Pod與容器初始化容器在Pod的應用容器(主容器)啟動之前要運行的容器,主要完成應用容器的前置工作。提供應用容器鏡像中不具備的程序或自定義代碼。為應用容器的成功啟動提供依賴的前提條件。任務3.3創(chuàng)建和管理Pod相關知識3.3.3Pod的定義apiVersion:v1#API版本號kind:Pod#資源類型Podmetadata:#元數據

name:string#Pod名稱

namespace:string#Pod所屬的名稱空間,默認為defaultlabels:#自定義標簽

-name:stringspec:#Pod中容器的詳細定義(規(guī)約)

containers:#容器列表

-name:string#容器名稱

image:string#容器的鏡像名稱

imagePullPolicy:[Always|Never|IfNotPresent]#獲取鏡像的策略

command:[string]#容器的啟動命令......restartPolicy:[Always|Never|OnFailure]#設置重啟策略任務3.3創(chuàng)建和管理Pod相關知識3.3.4Pod的生命周期Pod的階段Pending(掛起)Running(正在運行)Succeeded(已成功)Failed(已失?。︰nknown(未知)任務3.3創(chuàng)建和管理Pod相關知識3.3.4Pod的生命周期容器狀態(tài)Running(正在運行)Terminated(已終止)Waiting(等待)容器重啟策略AlwaysOnFailureNever任務3.3創(chuàng)建和管理Pod相關知識3.3.4Pod的生命周期Pod的狀況狀況說明PodScheduled調度就緒,Pod已經被調度到某節(jié)點PodHasNetwork網絡就緒,Pod沙箱被成功創(chuàng)建并且配置了網絡ContainersReadyPod中所有容器都已就緒Initialized所有的初始化容器都已成功完成ReadyPod可以為請求提供服務,并且應該被添加到對應服務的負載均衡池中任務3.3創(chuàng)建和管理Pod相關知識3.3.5Pod的健康檢查機制探測器探測結果Success(成功)Failure(失?。︰nknown(未知)探測器類型livenessProbe(存活探測器)readinessProbe(就緒探測器)startupProbe(啟動探測器)探測機制exechttpGettcpSocket任務3.3創(chuàng)建和管理Pod任務實現任務3.3.1創(chuàng)建多容器的Pod(1)創(chuàng)建定義Pod的配置文件two-containers-pod.yaml。apiVersion:v1kind:Podmetadata:name:two-containers-podspec:#Pod級配置

restartPolicy:Nevervolumes:#定義共享數據的卷

-name:shared-dataemptyDir:{}#emptyDir類型的卷

containers:#容器級配置

#第1個容器配置

-name:nginx-containerimage:nginxvolumeMounts:#掛載共享卷

-name:shared-datamountPath:/usr/share/nginx/html#掛載路徑任務3.3創(chuàng)建和管理Pod任務實現任務3.3.1創(chuàng)建多容器的Pod(1)創(chuàng)建定義Pod的配置文件two-containers-pod.yaml。#第2個容器配置

-name:busybox-containerimage:busyboxvolumeMounts:#掛載共享卷

-name:shared-datamountPath:/pod-data#掛載路徑

#容器啟動命令及參數

command:["/bin/sh"]args:["-c","echoHellofromthebusyboxcontainer>/pod-data/index.html"]任務3.3創(chuàng)建和管理Pod任務實現任務3.3.1創(chuàng)建多容器的Pod(2)基于上述配置文件創(chuàng)建Pod。#kubectlapply-f/k8sapp/03/two-containers-pod.yaml(3)查看Pod及其容器的信息。#kubectlgetpodtwo-containers-pod--output=yaml(4)進入nginx容器的Shell,使用curl向Nginx服務器發(fā)起請求。kubectlexec-ittwo-containers-pod-cnginx-container--/bin/bashroot@two-containers:/#curllocalhostHellofromthebusyboxcontainer(5)使用curl向Pod的IP地址發(fā)起請求。#curl6Hell

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論