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ù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

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

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

partition!partition任務(wù)3.1理解和使用Kubernetes對象相關(guān)知識3.1.6標(biāo)簽和注解注解使用注解為Kubernetes對象附加任意的非標(biāo)識的元數(shù)據(jù)。注解使用鍵值對的形式進行定義。"metadata":{"annotations":{"key1":"value1","key2":"value2"}}任務(wù)3.1理解和使用Kubernetes對象相關(guān)知識3.1.7名稱空間名稱空間進一步組織和劃分資源。名稱空間為名稱提供了一個范圍。部分全局資源是不屬于任何名稱空間。名稱空間適用于存在很多跨多個團隊或項目的用戶的場景。任務(wù)3.1理解和使用Kubernetes對象任務(wù)實現(xiàn)任務(wù)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任務(wù)3.1理解和使用Kubernetes對象任務(wù)實現(xiàn)任務(wù)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任務(wù)3.1理解和使用Kubernetes對象任務(wù)實現(xiàn)任務(wù)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文件,將其中的副本數(shù)定義修改為3。#kubectlapply-f/k8sapp/03/nginx-deployment.yamldeployment.apps/nginx-deploymentconfigured#kubectlgetdeploymentNAMEREADYUP-TO-DATEAVAILABLEAGEnginx-deployment3/333106s任務(wù)3.1理解和使用Kubernetes對象任務(wù)實現(xiàn)任務(wù)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任務(wù)3.1理解和使用Kubernetes對象任務(wù)實現(xiàn)任務(wù)3.1.2操作對象的標(biāo)簽為對象添加標(biāo)簽創(chuàng)建名為nginx-a的Pod對象并為其添加標(biāo)簽app=nginx。#kubectlrunnginx-a--image=nginx-lapp=nginxpod/nginx-acreated編寫Pod配置文件nginx-label.yaml。apiVersion:v1kind:Podmetadata:name:nginx-blabels:#為Pod設(shè)置兩個Labelapp:nginxenv:prodspec:containers:-name:nginximage:nginx基于該配置文件創(chuàng)建Pod對象。#kubectlcreate-f/k8sapp/03/nginx-label.yamlpod/nginx-bcreated任務(wù)3.1理解和使用Kubernetes對象任務(wù)實現(xiàn)任務(wù)3.1.2操作對象的標(biāo)簽修改對象的標(biāo)簽#kubectllabelpodnginx-aenv=debug--overwritepod/nginx-alabeled修改對象的標(biāo)簽#kubectllabelpodnginx-aversion-pod/nginx-aunlabeled操作具有指定標(biāo)簽的對象#kubectldeletepod-lapp=nginxpod"nginx-a"deletedpod"nginx-b"deleted任務(wù)3.1理解和使用Kubernetes對象任務(wù)實現(xiàn)任務(wù)3.1.3操作名稱空間查看集群中當(dāng)前所有的名稱空間列表#kubectlgetnamespacesNAMESTATUSAGEdefaultActive22d#默認(rèn)名稱空間kube-node-leaseActive22d#用于與各節(jié)點相關(guān)的租約(Lease)對象kube-publicActive22d#主要由集群使用kube-systemActive22d#系統(tǒng)創(chuàng)建對象所使用的名稱空間kubernetes-dashboardActive22d#Dashboard所用名稱空間任務(wù)3.1理解和使用Kubernetes對象任務(wù)實現(xiàn)任務(wù)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任務(wù)3.2使用kubectl命令任務(wù)3.1理解和使用Kubernetes對象任務(wù)3.3創(chuàng)建和管理Pod任務(wù)3.2使用kubectl命令任務(wù)說明01OPTION02OPTION03OPTION了解kubectl命令的基本用法了解kubectl命令的語法要素熟悉kubectl命令的基本使用任務(wù)3.2使用kubectl命令相關(guān)知識3.2.1kubectl命令的基本用法kubectl[command][TYPE][NAME][flags]command——對資源執(zhí)行操作的子命令,如create、get、describe、delete。TYPE——要操作的資源(或?qū)ο螅╊愋?。NAME——要操作的資源的名稱。任務(wù)3.2使用kubectl命令相關(guān)知識3.2.2kbectl常用子命令子命令用法說明applykubectlapply-fFILENAME[flags]從配置文件或stdin對資源應(yīng)用配置更改attachkubectlattachPOD-cCONTAINER[-i][-t][flags]掛接到正在運行的容器,查看輸出流或與容器(stdin)交互createkubectlcreate-fFILENAME[flags]從配置文件或stdin對創(chuàng)建資源deletekubectldelete(-fFILENAME|TYPE[NAME|/NAME|-llabel|--all])[flags]基于文件、標(biāo)準(zhǔn)輸入或通過指定標(biāo)簽選擇器、名稱、資源選擇器或資源本身,刪除資源describekubectldescribe(-fFILENAME|TYPE[NAME_PREFIX|/NAME|-llabel])[flags]顯示資源的詳細狀態(tài)execkubectlexecPOD[-cCONTAINER][-i][-t][flags][--COMMAND[args...]]對Pod中的容器執(zhí)行命令任務(wù)3.2使用kubectl命令相關(guān)知識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任務(wù)3.2使用kubectl命令相關(guān)知識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對象任務(wù)3.2使用kubectl命令任務(wù)實現(xiàn)任務(wù)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)任務(wù)2.2部署和使用KubernetesDashboard任務(wù)實現(xiàn)任務(wù)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任務(wù)3.2使用kubectl命令任務(wù)3.1理解和使用Kubernetes對象任務(wù)3.3創(chuàng)建和管理Pod任務(wù)3.3創(chuàng)建和管理Pod任務(wù)說明01OPTION02OPTION03OPTION了解Pod與容器的關(guān)系了解Pod的定義了解Pod的生命周期與健康檢查機制04OPTION學(xué)會創(chuàng)建多容器的Pod05OPTION掌握Pod的基本配置方法任務(wù)3.3創(chuàng)建和管理Pod相關(guān)知識3.3.1什么是PodPod是Kubernetes創(chuàng)建或部署的最小單位。Pod相當(dāng)于容器集合,類似于共享名稱空間并共享文件系統(tǒng)卷的一組容器。Pod具有聯(lián)網(wǎng)功能。Pod具有存儲功能。Pod被創(chuàng)建后用一個UID來唯一標(biāo)識,當(dāng)Pod生命周期結(jié)束,被一個等價Pod替代,UID將重新生成。任務(wù)3.3創(chuàng)建和管理Pod相關(guān)知識3.3.2Pod與容器為什么要使用Pod代替容器作為部署的最小單元容器通常遵循單一性原則。為避免給容器本身額外增加新的屬性,Kubernetes引入Pod。一個Pod封裝一個或多個容器、存儲資源、一個獨立的網(wǎng)絡(luò)IP以及管理控制容器運行方式的策略選項。任務(wù)3.3創(chuàng)建和管理Pod相關(guān)知識3.3.2Pod與容器Pod單一容器Pod多容器

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

name:string#Pod名稱

namespace:string#Pod所屬的名稱空間,默認(rèn)為defaultlabels:#自定義標(biāo)簽

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

containers:#容器列表

-name:string#容器名稱

image:string#容器的鏡像名稱

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

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

restartPolicy:Nevervolumes:#定義共享數(shù)據(jù)的卷

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

containers:#容器級配置

#第1個容器配置

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

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

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

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

#容器啟動命令及參數(shù)

command:["/bin/sh"]args:["-c","echoHellofromthebusyboxcontainer>/pod-data/index.html"]任務(wù)3.3創(chuàng)建和管理Pod任務(wù)實現(xiàn)任務(wù)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服務(wù)器發(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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論