大廠學(xué)院云原生03kubernetes工作負(fù)載workloads_第1頁
大廠學(xué)院云原生03kubernetes工作負(fù)載workloads_第2頁
大廠學(xué)院云原生03kubernetes工作負(fù)載workloads_第3頁
大廠學(xué)院云原生03kubernetes工作負(fù)載workloads_第4頁
大廠學(xué)院云原生03kubernetes工作負(fù)載workloads_第5頁
已閱讀5頁,還剩30頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

Kubernetes工作負(fù)載1212kubectl-nkubernetes-dashboarddescribesecret$(kubectl-nkubernetes-getsecret|grepadmin-user|awk'{print工作負(fù)載是運(yùn)行在Kubernetes一個(gè)應(yīng)用很復(fù)雜,可能由單個(gè)組件或者多個(gè)組件共同完成。無論怎樣我們可以用一組d來表示一個(gè)應(yīng)用,也就是一個(gè)工作負(fù)載比如Deploy(工作負(fù)載)3個(gè)副本的nginx(3個(gè)Pod),每個(gè)nginx里面是真正的1、什么是Pod是一組(一個(gè)或多個(gè))容器(docker容器)的集合(就像在豌豆莢中);這些容器共享存 Pod天生地為其成員容器提供了兩種共享資源:網(wǎng)絡(luò)和systemctlstatus可以觀測(cè)到。PodPause。Pause12123456789這里是PodapiVersion:v1kind:Pod-oimage:command:['sh','-c','echo"ello,Kubernetes!"&&sleep#以上為Pod:Pod啟動(dòng),會(huì)先Pod啟動(dòng),會(huì)先依次執(zhí)行所有初始化容器,有一個(gè)失敗,則Pod接下來啟動(dòng)所有的應(yīng)用容器(每一個(gè)應(yīng)用容器都必須能一直運(yùn)行起來),開始正式工作,一個(gè)啟動(dòng)失敗就會(huì)嘗試重啟od內(nèi)的這個(gè)容器,d只要是NtRad,d就不對(duì)外提供服務(wù)了有些容器基礎(chǔ)鏡像。線上沒法排錯(cuò)。使用臨時(shí)容器進(jìn)入這個(gè)。臨時(shí)容器共享了dg的一些命令,拍錯(cuò)完成以后,只要et退出容器,臨時(shí)容器自動(dòng)刪除Java:dump,jre50mb。jdk150mbjre50mb。:jdk作為臨時(shí)容器臨時(shí)容器需要開啟特性門控臨時(shí)容器需要開啟特性門控--feature-1.21.0:生產(chǎn)環(huán)境 "apiVersion":"kind":"metadata":"name":"my-nginx666"http://指定Pod "ephemeralContainers":"command":99"image":"busybox",//jre的需要jdk":"stdin":true,"tty":":} kubectl ce--raw/api/v1/namespaces/default/pods/my-nginx666【名】/ephemeralcontainers-f4、靜態(tài)在/etc/kubernetes/manifests位置放的所有Pod.yaml文件,機(jī)器啟動(dòng)kubelet自己就把他啟動(dòng)起來。5、Probe探針機(jī)制(健康檢查機(jī)制每個(gè)容器三種探針啟動(dòng)探針**(后來才加的)**成功探針。只要啟動(dòng)成功kubelet使用啟動(dòng)探針,來檢測(cè)應(yīng)用是否已經(jīng)啟動(dòng)。如果啟動(dòng)就可以進(jìn)行后續(xù)的探測(cè)檢kubelet使用存活探針,來檢測(cè)容器是否正常存活。(有些容器可能產(chǎn)生死鎖【應(yīng)用程序在運(yùn)行,但是無法繼續(xù)執(zhí)行后面的步驟】),如果檢測(cè)失敗就會(huì)**重新啟動(dòng)這個(gè)容器**initialDelaySeconds:3600(長了導(dǎo)致可能應(yīng)用一段時(shí)間不可用)5(短了陷入無限啟kubelet使用就緒探針,來檢測(cè)容器是否準(zhǔn)備好了可以接收流量Pod內(nèi)的所有容器都準(zhǔn)備好了,才能把這個(gè)Pod看作就緒了。用途就是:Service后端負(fù)載均衡多個(gè)Probe是0秒,最小值是0。這是針對(duì)以前沒有:執(zhí)行探測(cè)的時(shí)間間隔(單位是秒)。默認(rèn)是10秒。最小值是1:探測(cè)器在失敗后,被視為成功的最小連續(xù)成功數(shù)。1。存活和啟動(dòng)探針的這個(gè)值必須是1。最小值是1。:當(dāng)探測(cè)失敗時(shí),Kubernetes意味著重新啟動(dòng)容器。就緒探測(cè)情況下的放棄Pod會(huì)被打上未就緒的。默認(rèn)值是3。最小值是1。timeoutSeconds:探測(cè)的超時(shí)后等待多少秒。默認(rèn)值是1秒。最小值是11123456789exec、httpGet、tcpSocketapiVersion:kind:name:"nginx-start-namespace:app:"nginx-start--name:nginx-path:-name:nginx-path:-name:image:-containerPort:command:"/bin/sh","-c","cat/app/abc"]##返回不是0#initialDelaySeconds:20##periodSeconds:5##timeoutSeconds: successThreshold:1##failureThreshold:3##-name:nginx-mountPath:-name:nginx-mountPath: ##nginx容器有沒有/abc.html# host: path: port: scheme:#periodSeconds:5###successThreshold:1###failureThreshold:5## command:["/bin/sh","-c","cat/usr/share/nginx/html/abc.html"]##返回#initialDelaySeconds:20##periodSeconds:5##timeoutSeconds: successThreshold:1##failureThreshold:3##readinessProbe:##就緒檢測(cè),都是 #host:###path:/abc.html##port:scheme:TTP##返回不是0initialDelaySeconds:2##periodSeconds:5##timeoutSeconds: successThreshold:3##failureThreshold:5### exec:["/bin/sh","-c","sleep30;abc"]##返回不是0 initialDelaySeconds:20## periodSeconds:5## timeoutSeconds: successThreshold:5## failureThreshold:5微服務(wù)。K8S檢查當(dāng)前應(yīng)用的狀態(tài);connectionrefuse;SpringBoot優(yōu)雅停機(jī):gracefulShowdown:pod.spec.terminationGracePeriodSeconds=30s健康檢查+優(yōu)雅停機(jī)=0tt完成以后,vesras并存。ves失敗導(dǎo)致重啟。reas失敗導(dǎo)致不給evce負(fù)載均衡網(wǎng)絡(luò)中加,不接受流量。kubectleec-t就進(jìn)不去。Kectlsre看看咋了。一個(gè)Deployment為Pods和ReplicaSets提供式的更新能力你負(fù)責(zé)描述Deployment中的目標(biāo)狀態(tài),而Deployment控制器(Controller)以受控速率更改實(shí)際狀態(tài),使其變?yōu)槠谕麪顟B(tài);控制循環(huán)。for(){xxxcontroller.spec()}不要管理Deployment所擁有的Deploy編寫規(guī)約replicas指定副本數(shù)量selector指定匹配的Pod模板。 編寫一個(gè)編寫一個(gè)Deployment的在檢查集群中的DeploymentNAMEDeploymentREADY顯示應(yīng)用程序的可用的副本數(shù)。顯示的模式是“就緒個(gè)數(shù)/期望個(gè)數(shù)”UP-TO-DATEAVAILABLEAGEReplicaSetNAMEReplicaSetDESIREDDeploymentCURRENTREADYAGE注意:ReplicaSet[Deployment名稱]-[隨機(jī)字符串符串是使用pod-temte-hash作為隨機(jī)生成的。ReplicaSetDeployment:每部署一個(gè)新版本就會(huì)創(chuàng)建一個(gè)新的副本集,利用他記錄狀態(tài),回滾也是直接讓指---rs1: ---rs2: ---rsN: nginx=111nginx:v1=22223、Deployment僅當(dāng)DeploymentPod模板(即.spec.temte)發(fā)生改變時(shí),例如模板的或容器鏡像被更新,才會(huì)觸發(fā)Deployment上線。其他更新(如對(duì)Deployment執(zhí)行擴(kuò)縮容的操作)不會(huì)觸發(fā)上線上線動(dòng)作原理:創(chuàng)建新的rs,準(zhǔn)備就緒后,替換舊的rs(此時(shí)不會(huì)刪除,因?yàn)橹付吮A魩讉€(gè)版本)常用的kubectl112345678#kubectlsetimagedeployment資源名容器名=kubectlsetimagedeployment.apps/nginx-deploymentphp-redis=tomcat:8--record##yaml提取可更新的關(guān)鍵所有字段計(jì)算的hash。 oaservice-o99kubectleditdeployment.v1.apps/nginx-deploymentkubectlrolloutstatusdeployment.v1.apps/nginx-kubectlrollouthistorydeployment.v1.apps/nginx-deploymentkubectlrolloutundodeployment.v1.apps/nginx-deployment--to-kubectlrolloutpausedeployment.v1.apps/nginx-deploymentkubectlsetresourcesdeployment.v1.apps/nginx-deployment-c=nginx--kubectlsetimagedeployment.apps/nginx-deploymentphp-redis=tomcat:8kubectlrollouthistorydeployment.v1.apps/nginx-deploymentkubectlrolloutresumedeployment.v1.apps/nginx-概念:

12123456789apiVersion:v1k8s-app:metrics-servername:metrics-servernamespace:kube-systemapiVersion:rbac.authorization.k8s.io/v1kind:ClusterRolek8s-app:metrics-servername:system:aggregated-metrics--------apiVersion:kind:k8s-app:metrics-name:system:metrics-- ---------apiVersion:kind:k8s-app:metrics-name:metrics-server-auth-namespace:kube-apiGroup:kind:name:extension-apiserver-authentication--kind:name:metrics-namespace:kube-apiVersion:kind:k8s-app:metrics-name:metrics-server:system:auth-apiGroup:kind:name:system:auth--kind:name:metrics-namespace:kube-apiVersion:kind:k8s-app:metrics-name:system:metrics-apiGroup:kind:name:system:metrics--kind:name:metrics-namespace:kube-apiVersion:kind:k8s-app:metrics-name:metrics-namespace:kube--name:port:protocol:targetPort:k8s-app:metrics-apiVersion:kind:k8s-app:metrics-name:metrics-namespace:kube-k8s-app:metrics-maxUnavailable: k8s-app:metrics-----cert----kubelet-insecure----secure- ---kubelet-preferred-address-types=InternalIP,ExternalIP,ostname---kubelet-use-node-status- :failureThreshold:path:port:scheme:periodSeconds:name:metrics--containerPort:name:protocol:failureThreshold:path:port:scheme:periodSeconds:readOnlyRootFilesystem:runAsNonRoot:runAsUser:-mountPath:name:tmp-kubernetes.io/os:priorityClassName:system-cluster-serviceAccountName:metrics--emptyDir:name:tmp-apiVersion:kind:k8s-app:metrics-name:group:groupPriorityMinimum:insecureSkipTLSVerify:name:metrics-namespace:kube-version:versionPriority:kubectlapply全部runnning ###測(cè)試鏡像 apiVersion:kind:name:php--port:protocol:targetPort:run:php-apiVersion:kind:run:php-name:php-replicas:run:php-temcreationTimestamp:run:php-- name:php--containerPort:cpu:##hpa配置apiVersion:kind:name:php-maxReplicas:minReplicas:apiVersion:kind:name:php-apachetargetCPUUtilizationPercentage:50kubectlrun-i--ttyload-generator--image=busybox令kubectlrun-i--ttyload-generator--rm--image=busybox--restart=Never-/bin/sh-c"whilesleep0.01;dowget-q- ;112#### ####這個(gè)鏡像dockerrun的時(shí)候-e這個(gè)nginx頁面就是看到?jīng)]法控制流量;64,82,37- /lfy_k8s_images/nginx-test:env-msg默認(rèn)輸出11111默認(rèn)輸出默認(rèn)頁;kubectlkubectldescribe描述一個(gè)資源(Pod、Service、Node、 ReplicasController:副本控制器RS:ReplicasSet:12123456789##RS-key:pod-namevalue:[aaaa,bbb]#In,NotIn,Existsand#In:value:[aaaa,bbb]必須存在,表示key指定 #NotInvalue:[aaaa,bbb]必須存在,表示key#Exists#只要有key#DoesNotExist#只要Pod上沒有keyoperator:雖然Replcaset強(qiáng)大,但是我們也不直接寫S;都是直接寫Deyet的,Demt生S。ks集群的每個(gè)機(jī)器(每一個(gè)節(jié)點(diǎn))都運(yùn)行一個(gè)程序(默認(rèn)mar除外,mar節(jié)點(diǎn)默認(rèn)不會(huì)把od去)DaemonSet控制器確保所有(或一部分)的節(jié)點(diǎn)都運(yùn)行了一個(gè)指定的Pod副本。每當(dāng)向集群中添加一個(gè)節(jié)點(diǎn)時(shí),指定的Pod副本也將添加到該節(jié)點(diǎn)上當(dāng)節(jié)點(diǎn)從集群中移除時(shí),Pod也就被回收刪除一個(gè)DaemonSet可以清理所有由其創(chuàng)建的DaemonSet在每個(gè)節(jié)點(diǎn)上運(yùn)行集群的守護(hù)進(jìn)程,例如glusterd、在每個(gè)節(jié)點(diǎn)上運(yùn)行日志收集守護(hù)進(jìn)程,例如fluentd、在每個(gè)節(jié)點(diǎn)上運(yùn)行守護(hù)進(jìn)程,例如PrometheusNodeExporter、SysdigAgent、collectd、DynatraceOneAgent、APPDynamicsAgent、Datadogagent、NewRelicagent、Gangliagmond、InstanaAgent等1123456789kind:DaemonSetname:-name:loggingimage:nginxmemory:tolerations:#mastereffect:NoSchedulekubectlgetpod-lname=logging-o StatefulSet使用場(chǎng)景;對(duì)于有如下要求的應(yīng)用程序,StatefulSetStatefulSet通過與其相關(guān)的無頭服務(wù)為每個(gè)pod提供DNS解析條目。假如無頭服務(wù)的條目為那么pod的解析條目就是"$(podname).$(servicename).$(namespace).svc.cluster.local",每個(gè)podname也是唯一的。storagestorage給定Pod的必須由PersistentVolume驅(qū)動(dòng)基于所請(qǐng)求的

刪除或者收縮StatefulSet并不會(huì)刪除它關(guān)聯(lián)的卷。這樣做是為了保證數(shù)據(jù)安全,它通常比自動(dòng)清除StatefulSet所有相關(guān)的資源更有價(jià)值。StatefulSet當(dāng)前需要無頭服務(wù)來負(fù)責(zé)PodStatefulSets時(shí),StatefulSetPodStatefulSet中的Pod可以且體面地終止,可以在刪除之前將StatefulSet縮放為0。在默認(rèn)Pod管理策略

)時(shí)使用滾動(dòng)更新,可能進(jìn)入需要人工干預(yù)Deployment這類無狀態(tài) 1123456789kind:name:stateful-tomcatapp:stateful-tomcatname:targetPort:clusterIP: app:stateful-apiVersion:kind:StatefulSet#控制器。name:stateful-tomcatapp:stateful-tomcat#hastomatchserviceName:"stateful-tomcat"#這里一定注意,必須提前有個(gè)servicereplicas:3#bydefaultisapp:stateful-tomcat#hastomatchterminationGracePeriodSeconds:10-name:tomcatname:webkubectlexin:serviceName-kubectlrun-i--tty--imagebusyboxdns-test--restart=Never--rm/bin/sh#我們?cè)谶@里沒有加卷。如果有的話kubectlgetpvc-lapp=stateful-tomcat即使Podcurlcurlnginx-svc:負(fù)載均衡到sts部署的Podcurlmysql-0.nginx-svc:直 指定 :pod管理策podManagement:控制Pod創(chuàng)建、升級(jí)以及擴(kuò)縮容邏podManagementcontrolshowpodsarecreatedduringinitialscaleup,whenre cingpodsonnodes,orwhenscalingdown.ThedefaultisOrderedReady,wherepodsarecreatedinincreasingorder(pod-0,thenpod-1,etc)andthecontrollerwillwaituntileachpodisreadybeforecontinuing.Whenscalingdown,thepodsareremovedintheoppositeorder.Thealternativeis whichwillcreatepodsinparalleltomatchthedesiredscalewithoutwaiting,andonscaledownwilldeleteallpodsatonce.

:2、updateStrategyupdateStrategyindicatestheStatefulSetUpdateStrategythatwillbeemployedtoupdatePodsintheStatefulSetwhenarevisionismadetoRollingUpdateisusedtocommunicateparameterswhenTypeispartitionTypeindicatesthetypeoftheStatefulSetUpdateStrategy.Defaultis12123456789apiVersion:kind:StatefulSet###namespace:defaultapp:ss-nginx#hastomatchserviceName:replicas:3#te##Podapp:ss-nginx#hastomatch.spec.selector.matchLabels-name:image:nginx##121234567apiVersion:kind:StatefulSet###namespace:default:OrderedReady##所有Pod一起創(chuàng)建,OrderedReady89updateStrategy:##partition:1###更新大于等于這個(gè)索引的podapp:ss-nginx#hastomatch.spec.temserviceName:"nginx"replicas:3#te:##Podapp:ss-nginx#hastomatch.spec.selector.matchLabels-name:image:tomcat##1、Kubernetes中的Job對(duì)象將創(chuàng)建一個(gè)或多個(gè)Pod,并確保指定數(shù)量的Pod可以成功執(zhí)行到進(jìn)程正常當(dāng)Job創(chuàng)建的Pod執(zhí)行成功并正常結(jié)束時(shí),Job將記錄成功結(jié)束的Pod數(shù)量當(dāng)成功結(jié)束的Pod達(dá)到指定的數(shù)量時(shí),Job將完成執(zhí)行刪除Job對(duì)象時(shí),將清理掉由Job創(chuàng)建的apiVersion:apiVersion:kind:3453456789-name:picommand:["perl","-Mbignum=bpi","-wle","print:Never#Job情況下,不支持backoffLimit:4#任務(wù)4activeDeadlineSeconds:kubectlget#千萬不要用阻塞容器。nginx。job由于Pod一直running狀態(tài)。下一個(gè)了,當(dāng)前running的Pod還會(huì)刪掉 kubectlapi-kubectlexinactiveDeadlineSeconds:10總共維持#該字段限定了Job.spec.activeDeadlineSeconds指定的時(shí)長,該Job創(chuàng)建的所有的Pod #設(shè)定Job最大的重試次數(shù)。該字段的默認(rèn)值為6;一旦重試次數(shù)達(dá)到了backoffLimit中的值,Job將被標(biāo)記為失敗,且尤其創(chuàng)建的所有Pod (TimeTottlSecondsAfterFinished:0#在jobttlSecondsAfterFinished:100#在job執(zhí)行完后,等待100s#除了CronJob之外,TTL機(jī)制是另外一種自動(dòng)清理已結(jié)束Job(Completed#TTL機(jī)制由TTL控制器提供,ttlSecondsAfterFinished #當(dāng)TTL控制器清理Job時(shí),TTL控制器將刪除Job對(duì)象,以及由該Job創(chuàng)建的所有Pod對(duì)象。#job超時(shí)以后已經(jīng)完成的不刪,正在運(yùn)行的Pod##如果Job定義的容器中存在httpserver、mysql等長期的容器和一些批處理容器,則Job狀態(tài)不會(huì)發(fā)生變化(因?yàn)殚L期運(yùn)行的容器不會(huì)主動(dòng)結(jié)束)。此時(shí)可以通過Pod的.status.containerStatuses獲取指定容器的運(yùn)行狀態(tài)。jecPtv和eesvt1。當(dāng)用戶需要自定義sec時(shí),使用兩種PI組時(shí)定義的參數(shù)有所差異。使用etssvea時(shí),用戶不需要額外的操作。因?yàn)閑tsea的ecatecr默認(rèn)為fae,該項(xiàng)與v的cmecr含義正好相反。換句話說,使用etesvt1時(shí),用戶不想定制secr時(shí),需要手動(dòng)將ecatecr設(shè)置為tre。1123456789kind:Jobcompletions:5##parallelism:-name:image:busybox##job類型的pod,不要用阻塞式的。如nginx。Deployment才應(yīng)command:["/bin/sh","--c:Never#Job情況下,不支持#backoffLimit:4#任務(wù)4activeDeadlineSeconds: ##

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論