大厂学院云原生03kubernetes工作负载workloads_第1页
大厂学院云原生03kubernetes工作负载workloads_第2页
大厂学院云原生03kubernetes工作负载workloads_第3页
大厂学院云原生03kubernetes工作负载workloads_第4页
大厂学院云原生03kubernetes工作负载workloads_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Kubernetes工作负载1212kubectl-nkubernetes-dashboarddescribesecret$(kubectl-nkubernetes-getsecret|grepadmin-user|awk'{print工作负载是运行在Kubernetes一个应用很复杂,可能由单个组件或者多个组件共同完成。无论怎样我们可以用一组d来表示一个应用,也就是一个工作负载比如Deploy(工作负载)3个副本的nginx(3个Pod),每个nginx里面是真正的1、什么是Pod是一组(一个或多个)容器(docker容器)的集合(就像在豌豆荚中);这些容器共享存 Pod天生地为其成员容器提供了两种共享资源:网络和systemctlstatus可以观测到。PodPause。Pause12123456789这里是PodapiVersion:v1kind:Pod-oimage:command:['sh','-c','echo"ello,Kubernetes!"&&sleep#以上为Pod:Pod启动,会先Pod启动,会先依次执行所有初始化容器,有一个失败,则Pod接下来启动所有的应用容器(每一个应用容器都必须能一直运行起来),开始正式工作,一个启动失败就会尝试重启od内的这个容器,d只要是NtRad,d就不对外提供服务了有些容器基础镜像。线上没法排错。使用临时容器进入这个。临时容器共享了dg的一些命令,拍错完成以后,只要et退出容器,临时容器自动删除Java:dump,jre50mb。jdk150mbjre50mb。:jdk作为临时容器临时容器需要开启特性门控临时容器需要开启特性门控--feature-1.21.0:生产环境 "apiVersion":"kind":"metadata":"name":"my-nginx666"//指定Pod "ephemeralContainers":"command":99"image":"busybox",//jre的需要jdk":"stdin":true,"tty":":} kubectl ce--raw/api/v1/namespaces/default/pods/my-nginx666【名】/ephemeralcontainers-f4、静态在/etc/kubernetes/manifests位置放的所有Pod.yaml文件,机器启动kubelet自己就把他启动起来。5、Probe探针机制(健康检查机制每个容器三种探针启动探针**(后来才加的)**成功探针。只要启动成功kubelet使用启动探针,来检测应用是否已经启动。如果启动就可以进行后续的探测检kubelet使用存活探针,来检测容器是否正常存活。(有些容器可能产生死锁【应用程序在运行,但是无法继续执行后面的步骤】),如果检测失败就会**重新启动这个容器**initialDelaySeconds:3600(长了导致可能应用一段时间不可用)5(短了陷入无限启kubelet使用就绪探针,来检测容器是否准备好了可以接收流量Pod内的所有容器都准备好了,才能把这个Pod看作就绪了。用途就是:Service后端负载均衡多个Probe是0秒,最小值是0。这是针对以前没有:执行探测的时间间隔(单位是秒)。默认是10秒。最小值是1:探测器在失败后,被视为成功的最小连续成功数。1。存活和启动探针的这个值必须是1。最小值是1。:当探测失败时,Kubernetes意味着重新启动容器。就绪探测情况下的放弃Pod会被打上未就绪的。默认值是3。最小值是1。timeoutSeconds:探测的超时后等待多少秒。默认值是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:##就绪检测,都是 #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微服务。K8S检查当前应用的状态;connectionrefuse;SpringBoot优雅停机:gracefulShowdown:pod.spec.terminationGracePeriodSeconds=30s健康检查+优雅停机=0tt完成以后,vesras并存。ves失败导致重启。reas失败导致不给evce负载均衡网络中加,不接受流量。kubectleec-t就进不去。Kectlsre看看咋了。一个Deployment为Pods和ReplicaSets提供式的更新能力你负责描述Deployment中的目标状态,而Deployment控制器(Controller)以受控速率更改实际状态,使其变为期望状态;控制循环。for(){xxxcontroller.spec()}不要管理Deployment所拥有的Deploy编写规约replicas指定副本数量selector指定匹配的Pod模板。 编写一个编写一个Deployment的在检查集群中的DeploymentNAMEDeploymentREADY显示应用程序的可用的副本数。显示的模式是“就绪个数/期望个数”UP-TO-DATEAVAILABLEAGEReplicaSetNAMEReplicaSetDESIREDDeploymentCURRENTREADYAGE注意:ReplicaSet[Deployment名称]-[随机字符串符串是使用pod-temte-hash作为随机生成的。ReplicaSetDeployment:每部署一个新版本就会创建一个新的副本集,利用他记录状态,回滚也是直接让指---rs1: ---rs2: ---rsN: nginx=111nginx:v1=22223、Deployment仅当DeploymentPod模板(即.spec.temte)发生改变时,例如模板的或容器镜像被更新,才会触发Deployment上线。其他更新(如对Deployment执行扩缩容的操作)不会触发上线上线动作原理:创建新的rs,准备就绪后,替换旧的rs(此时不会删除,因为指定了保留几个版本)常用的kubectl112345678#kubectlsetimagedeployment资源名容器名=kubectlsetimagedeployment.apps/nginx-deploymentphp-redis=tomcat:8--record##yaml提取可更新的关键所有字段计算的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 ###测试镜像 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#### ####这个镜像dockerrun的时候-e这个nginx页面就是看到没法控制流量;64,82,37- /lfy_k8s_images/nginx-test:env-msg默认输出11111默认输出默认页;kubectlkubectldescribe描述一个资源(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强大,但是我们也不直接写S;都是直接写Deyet的,Demt生S。ks集群的每个机器(每一个节点)都运行一个程序(默认mar除外,mar节点默认不会把od去)DaemonSet控制器确保所有(或一部分)的节点都运行了一个指定的Pod副本。每当向集群中添加一个节点时,指定的Pod副本也将添加到该节点上当节点从集群中移除时,Pod也就被回收删除一个DaemonSet可以清理所有由其创建的DaemonSet在每个节点上运行集群的守护进程,例如glusterd、在每个节点上运行日志收集守护进程,例如fluentd、在每个节点上运行守护进程,例如PrometheusNodeExporter、SysdigAgent、collectd、DynatraceOneAgent、APPDynamicsAgent、Datadogagent、NewRelicagent、Gangliagmond、InstanaAgent等1123456789kind:DaemonSetname:-name:loggingimage:nginxmemory:tolerations:#mastereffect:NoSchedulekubectlgetpod-lname=logging-o StatefulSet使用场景;对于有如下要求的应用程序,StatefulSetStatefulSet通过与其相关的无头服务为每个pod提供DNS解析条目。假如无头服务的条目为那么pod的解析条目就是"$(podname).$(servicename).$(namespace).svc.cluster.local",每个podname也是唯一的。storagestorage给定Pod的必须由PersistentVolume驱动基于所请求的

删除或者收缩StatefulSet并不会删除它关联的卷。这样做是为了保证数据安全,它通常比自动清除StatefulSet所有相关的资源更有价值。StatefulSet当前需要无头服务来负责PodStatefulSets时,StatefulSetPodStatefulSet中的Pod可以且体面地终止,可以在删除之前将StatefulSet缩放为0。在默认Pod管理策略

)时使用滚动更新,可能进入需要人工干预Deployment这类无状态 1123456789kind:name:stateful-tomcatapp:stateful-tomcatname:targetPort:clusterIP: app:stateful-apiVersion:kind:StatefulSet#控制器。name:stateful-tomcatapp:stateful-tomcat#hastomatchserviceName:"stateful-tomcat"#这里一定注意,必须提前有个servicereplicas:3#bydefaultisapp:stateful-tomcat#hastomatchterminationGracePeriodSeconds:10-name:tomcatname:webkubectlexin:serviceName-kubectlrun-i--tty--imagebusyboxdns-test--restart=Never--rm/bin/sh#我们在这里没有加卷。如果有的话kubectlgetpvc-lapp=stateful-tomcat即使Podcurlcurlnginx-svc:负载均衡到sts部署的Podcurlmysql-0.nginx-svc:直 指定 :pod管理策podManagement:控制Pod创建、升级以及扩缩容逻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一起创建,OrderedReady89updateStrategy:##partition:1###更新大于等于这个索引的podapp:ss-nginx#hastomatch.spec.temserviceName:"nginx"replicas:3#te:##Podapp:ss-nginx#hastomatch.spec.selector.matchLabels-name:image:tomcat##1、Kubernetes中的Job对象将创建一个或多个Pod,并确保指定数量的Pod可以成功执行到进程正常当Job创建的Pod执行成功并正常结束时,Job将记录成功结束的Pod数量当成功结束的Pod达到指定的数量时,Job将完成执行删除Job对象时,将清理掉由Job创建的apiVersion:apiVersion:kind:3453456789-name:picommand:["perl","-Mbignum=bpi","-wle","print:Never#Job情况下,不支持backoffLimit:4#任务4activeDeadlineSeconds:kubectlget#千万不要用阻塞容器。nginx。job由于Pod一直running状态。下一个了,当前running的Pod还会删掉 kubectlapi-kubectlexinactiveDeadlineSeconds:10总共维持#该字段限定了Job.spec.activeDeadlineSeconds指定的时长,该Job创建的所有的Pod #设定Job最大的重试次数。该字段的默认值为6;一旦重试次数达到了backoffLimit中的值,Job将被标记为失败,且尤其创建的所有Pod (TimeTottlSecondsAfterFinished:0#在jobttlSecondsAfterFinished:100#在job执行完后,等待100s#除了CronJob之外,TTL机制是另外一种自动清理已结束Job(Completed#TTL机制由TTL控制器提供,ttlSecondsAfterFinished #当TTL控制器清理Job时,TTL控制器将删除Job对象,以及由该Job创建的所有Pod对象。#job超时以后已经完成的不删,正在运行的Pod##如果Job定义的容器中存在httpserver、mysql等长期的容器和一些批处理容器,则Job状态不会发生变化(因为长期运行的容器不会主动结束)。此时可以通过Pod的.status.containerStatuses获取指定容器的运行状态。jecPtv和eesvt1。当用户需要自定义sec时,使用两种PI组时定义的参数有所差异。使用etssvea时,用户不需要额外的操作。因为etsea的ecatecr默认为fae,该项与v的cmecr含义正好相反。换句话说,使用etesvt1时,用户不想定制secr时,需要手动将ecatecr设置为tre。1123456789kind:Jobcompletions:5##parallelism:-name:image:busybox##job类型的pod,不要用阻塞式的。如nginx。Deployment才应command:["/bin/sh","--c:Never#Job情况下,不支持#backoffLimit:4#任务4activeDeadlineSeconds: ##

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论