当前位置: 首页 > news >正文

昆明淘宝网站建设优化关键词推广

昆明淘宝网站建设,优化关键词推广,温州注册网络公司哪家强,广州开发区西区K8S之控制器详解#简介#在kubernetes中#xff0c;按照Pod的创建方式可以将其分为两类#xff1a;自主式:kubernetes直接创建出来的Pod#xff0c;这种Pod删除后就没有了#xff0c;也不会重建。控制器创建pod:通过Pod控制器创建的Pod#xff0c;这种Pod删除之后还会自动重…K8S之控制器详解#简介#在kubernetes中按照Pod的创建方式可以将其分为两类自主式:kubernetes直接创建出来的Pod这种Pod删除后就没有了也不会重建。控制器创建pod:通过Pod控制器创建的Pod这种Pod删除之后还会自动重建。Pod控制器是管理Pod的中间层,使用了Pod控制器之后,我们只需要告诉Pod控制器,想要多少个什么样的Pod就可以了,它就会创建出满足条件的Pod并确保每一个Pod处于用户期望的状态如果Pod在运行中出现故障控制器会基于指定的策略重启或重新创建pod控制器种类#在kubernetes中有很多类型的Pod控制器每种都有自己的适合的场景常见的有下面这些ReplicationController:比较原始的Pod控制器已经被废弃由ReplicaSet替代。ReplicaSet:保证指定数量的Pod运行并支持Pod数量变更镜像版本变更。Deployment:通过控制ReplicaSet来控制Pod并支持滚动升级、版本回退。Horizontal Pod Autoscaler:以根据集群负载自动调整Pod的数量实现削峰填谷。DaemonSet:在集群中的指定Node上都运行一个副本一般用于守护进程类的任务。Job:它创建出来的Pod只要完成任务就立即退出用于执行一次性任务。CronJob:它创建的Pod会周期性的执行用于执行周期性的任务。StatefulSet:管理有状态的应用。ReplicatSet#简介#ReplicaSet的主要作用是保证一定数量的Pod能够正常运行它会持续监听这些Pod的运行状态一旦Pod发生故障就会重启或重建。同时它还支持对Pod数量的扩缩容和版本镜像的升级。资源清单文件#CopyapiVersion:apps/v1# 版本号 kind:ReplicaSet# 类型 metadata:# 元数据 name:# rs名称namespace:# 所属命名空间 labels:#标签 controller:rsspec:# 详情描述 replicas:3# 副本数量 selector:# 选择器通过它指定该控制器管理哪些pomatchLabels:# Labels匹配规则 app:nginx-podmatchExpressions:# Expressions匹配规则 - {key:app, operator:In, values: [nginx-pod]} template:# 模板当副本数量不足时会根据下面的模板创建pod副本 metadata:labels:app:nginx-podspec:containers:-name:nginximage:nginx:1.17.1ports:-containerPort:80在这里需要新了解的配置项就是spec下面几个选项replicas指定副本数量其实就是当然rs创建出来的Pod的数量默认为1.selector选择器它的作用是建立Pod控制器和Pod之间的关联关系采用了Label Selector机制在Pod模块上定Label在控制器上定义选择器就可以表明当前控制器能管理哪些Pod了。template模板就是当前控制器创建Pod所使用的模板里面其实就是前面学过的Pod的定创建ReplicaSet#Copycat pc-replicaset.yaml EOF apiVersion: apps/v1 # 版本号 kind: ReplicaSet # 类型 metadata: # 元数据name: pc-replicaset # rs名称namespace: dev # 命名类型 spec: # 详细描述replicas: 3# 副本数量selector: # 选择器通过它指定该控制器可以管理哪些PodmatchLabels: # Labels匹配规则app: nginx-podtemplate: # 模块 当副本数据不足的时候会根据下面的模板创建Pod副本metadata:labels:app: nginx-podspec:containers:- name: nginx # 容器名称image: nginx:1.17.1# 容器需要的镜像地址ports:- containerPort: 80# 容器所监听的端口 EOF# 创建rs [rootmaster k8s]# kubectl create -f pc-replicaset.yaml # 查看rs [rootmaster k8s]# kubectl get -n dev rs pc-replicaset -o wide扩缩容#Copy# 编辑rs的副本数量修改spec:replicas:6即可。 [rootmaster k8s]# kubectl edit -n dev rs pc-replicaset [rootmaster k8s]# kubectl get -n dev podCopy# --replicas3指定pod数量 [rootmaster k8s]# kubectl scale -n dev rs pc-replicaset --replicas3[rootmaster k8s]# kubectl get -n dev pod镜像升级#Copy# 编辑rs的容器镜像修改spec:containers:image为nginx:1.17.2即可 [rootmaster k8s]# kubectl edit -n dev rs pc-replicaset [rootmaster k8s]# kubectl get -n dev rs -o wide Copy# kubectl set image rs rs名称 容器名称镜像版本 -n 命名空间 [rootmaster k8s]# kubectl set image -n dev rs pc-replicaset nginxnginx:1.17.1[rootmaster k8s]# kubectl get -n dev rs -o wide 删除ReplicaSet#Copy# 在kubernetes删除ReplicaSet前会将ReplicaSet的replicas调整为0等到所有的Pod被删除后再执行ReplicaSet对象的删除 [rootmaster k8s]# kubectl delete rs pc-replicaset -n dev[rootmaster k8s]# kubectl get rs,pod -n devCopy# 如果希望仅仅删除ReplicaSet对象保留Pod只需要在使用kubectl delete rs命令的时候添加--cascadefalse选项不推荐 kubectl delete rs pc-replicaset -n dev --cascadefalseDeployment#简介#为了更好的解决服务编排的问题kubernetes在v1.2版本开始引入了Deployment控制器。值得一提的是Deployment控制器并不直接管理Pod而是通过管理ReplicaSet来间接管理Pod即Deployment管理ReplicaSetReplicaSet管理Pod。所以Deployment的功能比ReplicaSet强大。Deployment的主要功能如下支持ReplicaSet的所有功能。支持发布的停止、继续。支持版本滚动更新和版本回退。Deployment资源清单#CopyapiVersion:apps/v1# 版本号 kind:Deployment# 类型 metadata:# 元数据 name:# rs名称 namespace:# 所属命名空间 labels:#标签 controller:deployspec:# 详情描述 replicas:3# 副本数量 revisionHistoryLimit:3# 保留历史版本默认为10 paused:false# 暂停部署默认是false progressDeadlineSeconds:600# 部署超时时间s默认是600 strategy:# 策略 type:RollingUpdate# 滚动更新策略 rollingUpdate:# 滚动更新 maxSurge:30%# 最大额外可以存在的副本数可以为百分比也可以为整数 maxUnavailable: 30% # 最大不可用状态的 Pod 的最大值可以为百分比也可以为整数 selector:# 选择器通过它指定该控制器管理哪些pod matchLabels:# Labels匹配规则 app:nginx-podmatchExpressions:# Expressions匹配规则 - {key:app, operator:In, values: [nginx-pod]} template:# 模板当副本数量不足时会根据下面的模板创建pod副本 metadata:labels:app:nginx-podspec:containers:-name:nginximage:nginx:1.17.1ports:-containerPort:80创建Deployment#Copycat pc-deployment.yaml EOF apiVersion: apps/v1 # 版本号 kind: Deployment # 类型 metadata: # 元数据name: pc-deployment # deployment的名称namespace: dev # 命名类型 spec: # 详细描述replicas: 3# 副本数量selector: # 选择器通过它指定该控制器可以管理哪些PodmatchLabels: # Labels匹配规则app: nginx-podtemplate: # 模块 当副本数据不足的时候会根据下面的模板创建Pod副本metadata:labels:app: nginx-podspec:containers:- name: nginx # 容器名称image: nginx:1.17.1# 容器需要的镜像地址ports:- containerPort: 80# 容器所监听的端口 EOF # 创建Deploy [rootmaster k8s]# kubectl create -f pc-deployment.yaml# 查看 [rootmaster k8s]# kubectl get -n dev deployments pc-deployment -o wide扩缩容#Copy# 编辑Deployment的副本数量修改spec:replicas:6即可 [rootmaster k8s]# kubectl edit -n dev deployments pc-deployment [rootmaster k8s]# kubectl get pod -n devCopy# 使用命令进行修改 [rootmaster k8s]# kubectl scale -n dev deployment pc-deployment --replicas3[rootmaster k8s]# kubectl get pod -n dev镜像更新#Deployment支持两种镜像更新的策略重建更新和滚动更新默认可以通过strategy选项进行配置。Copystrategy: 指定新的Pod替代旧的Pod的策略支持两个属性type: 指定策略类型支持两种策略Recreate在创建出新的Pod之前会先杀掉所有已经存在的PodRollingUpdate滚动更新就是杀死一部分就启动一部分在更新过程中存在两个版本的PodrollingUpdate当type为RollingUpdate的时候生效用于为rollingUpdate设置参数支持两个属性maxUnavailable用来指定在升级过程中不可用的Pod的最大数量默认为25%。maxSurge 用来指定在升级过程中可以超过期望的Pod的最大数量默认为25%。重建更新Copycat pc-deployment.yaml EOF apiVersion: apps/v1 # 版本号 kind: Deployment # 类型 metadata: # 元数据name: pc-deployment # deployment的名称namespace: dev # 命名类型 spec: # 详细描述replicas: 3# 副本数量strategy: # 镜像更新策略type: Recreate # Recreate在创建出新的Pod之前会先杀掉所有已经存在的Podselector: # 选择器通过它指定该控制器可以管理哪些PodmatchLabels: # Labels匹配规则app: nginx-podtemplate: # 模块 当副本数据不足的时候会根据下面的模板创建Pod副本metadata:labels:app: nginx-podspec:containers:- name: nginx # 容器名称image: nginx:1.17.1# 容器需要的镜像地址ports:- containerPort: 80# 容器所监听的端口 EOF# 加载yaml配文件 [rootmaster k8s]# kubectl apply -f pc-deployment.yaml# 版本更换 [rootmaster k8s]# kubectl set image deployment pc-deployment nginxnginx:1.17.2 -n dev# 另起终端查看pod [rootmaster k8s]# kubectl get pod -n dev -w滚动更新Copycat pc-deployment.yaml EOF apiVersion: apps/v1 # 版本号 kind: Deployment # 类型 metadata: # 元数据name: pc-deployment # deployment的名称namespace: dev # 命名类型 spec: # 详细描述replicas: 3# 副本数量strategy: # 镜像更新策略type: RollingUpdate # RollingUpdate滚动更新就是杀死一部分就启动一部分在更新过程中存在两个版本的PodrollingUpdate:maxUnavailable: 25%maxSurge: 25%selector: # 选择器通过它指定该控制器可以管理哪些PodmatchLabels: # Labels匹配规则app: nginx-podtemplate: # 模块 当副本数据不足的时候会根据下面的模板创建Pod副本metadata:labels:app: nginx-podspec:containers:- name: nginx # 容器名称image: nginx:1.17.1# 容器需要的镜像地址ports:- containerPort: 80# 容器所监听的端口 EOF# 重新加载 [rootmaster k8s]# kubectl apply -f pc-deployment.yaml# 镜像升级 [rootmaster k8s]# kubectl set image deployment pc-deployment nginxnginx:1.17.2 -n dev# 另起终端查看pod [rootmaster k8s]# kubectl get pod -n dev -wCopy# 查看rs发现原来的rs依旧存在只是Pod的数量变为0而后又产生了一个rsPod的数量变为3# 其实这就是deployment能够进行版本回退的奥妙所在 [rootmaster k8s]# kubectl get rs -n dev版本回退#Deployment支持版本升级过程中的暂停、继续功能以及版本回退等诸多功能下面具体来看Copy# 查看升级状态 [rootmaster k8s]# kubectl rollout status deployment pc-deployment -n devCopy# 查看升级历史记录 [rootmaster k8s]# kubectl rollout history deployment pc-deployment -n devCopy# 可以使用-to-revision1回退到1版本如果省略这个选项就是回退到上个版本即3版本 [rootmaster k8s]# kubectl rollout undo deployment pc-deployment --to-revision3 -n devdeployment之所以能够实现版本的回退就是通过记录下历史的ReplicaSet来实现的一旦想回滚到那个版本只需要将当前版本的Pod数量降为0然后将回退版本的Pod提升为目标数量即可。金丝雀发布#Deployment支持更新过程中的控制如暂停更新操作pause或继续更新操作resume。例如有一批新的Pod资源创建完成后立即暂停更新过程此时仅存在一部分新版本的应用主体部分还是旧的版本。然后再筛选一小部分的用户请求到新版本的Pod应用继续观察能够稳定的按照期望的方式运行如果没有问题之后再继续完成余下的Pod资源的滚动更新否则立即回滚操作。Copy[rootmaster k8s]# kubectl set image deployment pc-deployment nginxnginx:1.17.4 -n dev kubectl rollout pause deployment pc-deployment -n devCopy# 另起终端查看状态 [rootmaster k8s]# kubectl rollout status deployment pc-deployment -n devCopy# 查看rs# 监控更新的过程可以看到已经新增了一个资源但是并没有按照预期的状态去删除一个旧的资源因为使用了pause暂停命令 [rootmaster k8s]# kubectl get -n dev rsCopy# 查看pod [rootmaster k8s]# kubectl get -n dev podCopy# 继续更新 [rootmaster k8s]# kubectl rollout resume deployment pc-deployment -n dev# 查看 [rootmaster k8s]# kubectl get -n dev rs,pod -o wide### Horizontal Pod Autoscaler简介#我们已经可以通过手动执行kubectl scale命令实现Pod的扩缩容但是这显然不符合kubernetes的定位目标–自动化和智能化。kubernetes期望可以通过监测Pod的使用情况实现Pod数量的自动调整于是就产生了HPA这种控制器。HPA可以获取每个Pod的利用率然后和HPA中定义的指标进行对比同时计算出需要伸缩的具体值最后实现Pod的数量的调整。其实HPA和之前的Deployment一样也属于一种kubernetes资源对象它通过追踪分析目标Pod的负载变化情况来确定是否需要针对性的调整目标Pod的副本数。安装metrics-server#Copy# 下载 wget https://github.com/kubernetes-sigs/metrics-server/archive/v0.3.6.tar.gz# 解压 tar -zxvf v0.3.6.tar.gz# 切换目录 cd metrics-server-0.3.6/deploy/1.8/# 备份配置文件 cp metrics-server-deployment.yaml metrics-server-deployment.bak.yaml# 修改配置文件 vim metrics-server-deployment.yaml # 按图中添加下面选项 hostNetwork: true image: registry.cn-hangzhou.aliyuncs.com/google_containers/metrics-server-amd64:v0.3.6 args:- --kubelet-insecure-tls - --kubelet-preferred-address-typesInternalIP,Hostname,InternalDNS,ExternalDNS,ExternalIPCopy# 安装metrics-server kubectl apply -f ./# 查看metrics-server生成的Pod [rootmaster 1.8]# kubectl get pod -n kube-systemCopy# 查看资源使用情况 [rootmaster 1.8]# kubectl top nodeCopy[rootmaster 1.8]# kubectl top pod -n kube-system配置Deployment控制器#Copycat nginx.yaml EOF apiVersion: apps/v1 # 版本号 kind: Deployment # 类型 metadata: # 元数据name: nginx # deployment的名称namespace: dev # 命名类型 spec: # 详细描述selector: # 选择器通过它指定该控制器可以管理哪些PodmatchLabels: # Labels匹配规则app: nginx-podtemplate: # 模块 当副本数据不足的时候会根据下面的模板创建Pod副本metadata:labels:app: nginx-podspec:containers:- name: nginx # 容器名称image: nginx:1.17.1# 容器需要的镜像地址ports:- containerPort: 80# 容器所监听的端口resources: # 资源限制requests:cpu: 100m# 100m表示100millicpu即0.1个CPU EOF# 创建控制器 [rootmaster k8s]# kubectl create -f nginx.yaml# 查看 [rootmaster k8s]# kubectl get pods,deploy -o wide -n dev 创建service#Copy# 创建service [rootmaster k8s]# kubectl expose deployment nginx --namenginx --typeNodePort --port80 --target-port80 -n dev[rootmaster k8s]# kubectl get svc -n dev -o wide部署HPA#Copycat pc-hpa.yaml EOF apiVersion: autoscaling/v1 # 版本号 kind: HorizontalPodAutoscaler # 类型 metadata: # 元数据name: pc-hpa # deployment的名称namespace: dev # 命名类型 spec:minReplicas: 1# 最小Pod数量maxReplicas: 10# 最大Pod数量targetCPUUtilizationPercentage: 3# CPU使用率指标scaleTargetRef: # 指定要控制的Nginx的信息apiVersion: apps/v1kind: Deploymentname: nginx EOF# 创建 [rootmaster k8s]# kubectl create -f pc-hpa.yaml[rootmaster k8s]# kubectl get hpa -n dev压力测试#Copy# 另起终端动态查询deploy [rootmaster k8s]# kubectl get deployment -n dev -wCopy# 另起终端查询pod [rootmaster k8s]# kubectl get pod -n dev -wCopy# 另起终端查询hpa [rootmaster k8s]# kubectl get -n dev hpa -wCopy# ab进行压力测试 ab -n 1000 -c 1000 http://10.1.1.2:31742/index.html正常流量的hpa正常流量pod正常流量deployment### DaemonSet简介#DaemonSet类型的控制器可以保证集群中的每一台或指定节点上都运行一个副本一般适用于日志收集、节点监控等场景。也就是说如果一个Pod提供的功能是节点级别的每个节点都需要且只需要一个那么这类Pod就适合使用DaemonSet类型的控制器创建DaemonSet控制器的特点每向集群中添加一个节点的时候指定的Pod副本也将添加到该节点上。当节点从集群中移除的时候Pod也会被垃圾回收。资源清单#CopyapiVersion:apps/v1# 版本号kind:DaemonSet# 类型metadata:# 元数据name:# 名称namespace:#命名空间labels:#标签controller:daemonsetspec:# 详情描述revisionHistoryLimit:3# 保留历史版本updateStrategy:# 更新策略type:RollingUpdate# 滚动更新策略rollingUpdate:# 滚动更新maxUnavailable:1# 最大不可用状态的Pod的最大值可用为百分比也可以为整数selector:# 选择器通过它指定该控制器管理那些PodmatchLabels:# Labels匹配规则app:nginx-podmatchExpressions:# Expressions匹配规则-key:appoperator:Invalues:-nginx-podtemplate:# 模板当副本数量不足时会根据下面的模板创建Pod模板metadata:labels:app:nginx-podspec:containers:-name:nginximage:nginx:1.17.1ports:-containerPort:80创建DaemonSet#Copycat pc-daemonset.yaml EOF apiVersion: apps/v1 # 版本号 kind: DaemonSet # 类型 metadata: # 元数据name: pc-damonset # 名称namespace: dev #命名空间 spec: # 详情描述selector: # 选择器通过它指定该控制器管理那些PodmatchLabels: # Labels匹配规则app: nginx-podtemplate: # 模板当副本数量不足时会根据下面的模板创建Pod模板metadata:labels:app: nginx-podspec:containers:- name: nginximage: nginx:1.17.1ports:- containerPort: 80 EOF# 创建DS [rootmaster k8s]# kubectl create -f pc-daemonset.yaml [rootmaster k8s]# kubectl get -n dev ds -o wide在笔者心里安装DaemonSet如果没有配置Node-Selector应该会在所有的节点都会生成DaemonSet控制器,但是在此处我只有node2节点生成控制器,而node1节点没有生成,但是笔者所有node节点都是处于正常状态,至于为什么产生这样的原因没有排查成功,如果有大佬看到该文章麻烦告知一下排查思路,另外笔者只是一个本科生如果有错误的地方也请大家不要喷。Job#概述#Job可以保证指定数量的pod批量完成一次性的任务job创建的Pod成功结束的时候,job会记录pod的数量当记录的pod达到一定数量的时候,job执行完成资源清单#CopyapiVersion:batch/v1# 版本号kind:Job# 类型metadata:# 元数据name:# 名称namespace:#命名空间labels:# 标签controller:jobspec:# 详情描述completions:1# 指定Job需要成功运行Pod的总数量默认为1 parallelism:1# 指定Job在任一时刻应该并发运行Pod的数量默认为1activeDeadlineSeconds:30# 指定Job可以运行的时间期限超过时间还没结束系统将会尝试进行终止backoffLimit:6# 指定Job失败后进行重试的次数默认为6manualSelector:true# 是否可以使用selector选择器选择Pod默认为falseselector:# 选择器通过它指定该控制器管理那些PodmatchLabels:# Labels匹配规则app:counter-podmatchExpressions:# Expressions匹配规则-key:appoperator:Invalues:-counter-podtemplate:# 模板当副本数量不足时会根据下面的模板创建Pod模板metadata:labels:app:counter-podspec:restartPolicy:Never# 重启策略只能设置为Never或OnFailurecontainers:-name:counterimage:busybox:1.30command: [/bin/sh,-c,for i in 9 8 7 6 5 4 3 2 1;do echo $i;sleep 20;done]创建job#Copycat pc-job.yaml EOF apiVersion: batch/v1 kind: Job metadata:name: namenamespace: dev spec:# 是否使用标签选择器manualSelector: trueselector:matchLabels:app: counter-pod# pod模板template:metadata:labels:app: counter-podspec:# 配置容器containers:- name: counterimage: busybox:1.30command: [ /bin/sh,-c,for i in 9 8 7 6 5 4 3 2 1;do echo $i;sleep 3;done ]# 由于是一次性任务因此不需要重启restartPolicy: NeverEOF# 创建 [rootmaster k8s]# kubectl create -f pc-job.yaml # 查看 [rootmaster k8s]# kubectl get pod -n dev -wCopy# 查看job [rootmaster k8s]# kubectl get job -n dev -w### Cronjob概述#CronJob控制器以Job控制器为其管控对象并借助它管理Pod资源对象Job控制器定义的作业任务在其控制器资源创建之后便会立即执行但CronJob可以以类似Linux操作系统的周期性任务作业计划的方式控制器运行时间点及重复运行的方式换言之CronJob可以在特定的时间点反复去执行Job任务。资源清单#CopyapiVersion:batch/v1beta1# 版本号kind:CronJob# 类型metadata:# 元数据name:# 名称namespace:#命名空间labels:controller:cronjobspec:# 详情描述schedule:# cron格式的作业调度运行时间点用于控制任务任务时间执行concurrencyPolicy:# 并发执行策略failedJobsHistoryLimit:# 为失败的任务执行保留的历史记录数默认为1successfulJobsHistoryLimit:# 为成功的任务执行保留的历史记录数默认为3jobTemplate:# job控制器模板用于为cronjob控制器生成job对象下面其实就是job的定义metadata: {}spec:completions:1# 指定Job需要成功运行Pod的总次数默认为1parallelism:1# 指定Job在任一时刻应该并发运行Pod的数量默认为1activeDeadlineSeconds:30# 指定Job可以运行的时间期限超过时间还没结束系统将会尝试进行终止backoffLimit:6# 指定Job失败后进行重试的次数默认为6template:# 模板当副本数量不足时会根据下面的模板创建Pod模板spec:concurrencyPolicy并发执行策略Allow:运行job并发执行(默认)Forbid:禁止并发执行,如果上次任务没有执行完毕会跳过下一次任务Replace:新的任务代替旧的任务创建Cronjob#Copy# 创建cronjob cat pc-cronjob.yaml EOF apiVersion: batch/v1beta1 # 版本号 kind: CronJob # 类型 metadata: # 元数据name: pc-cronjob # 名称namespace: dev #命名空间 spec: # 详情描述schedule: */1 * * * * # cron格式的作业调度运行时间点用于控制任务任务时间执行jobTemplate: # job控制器模板用于为cronjob控制器生成job对象下面其实就是job的定义metadata: {}spec:template: # 模板当副本数量不足时会根据下面的模板创建Pod模板spec:restartPolicy: Never # 重启策略只能设置为Never或OnFailurecontainers:- name: counterimage: busybox:1.30command: [ /bin/sh,-c,for i in 9 8 7 6 5 4 3 2 1;do echo $i;sleep 2;done ] EOF [rootmaster k8s]# kubectl create -f pc-cronjob.yaml [rootmaster k8s]# kubectl get -n dev cj -o wideCopy# 另起终端查看cronjob [rootmaster k8s]# kubectl get cronjob -n dev -wCopy# 另起终端查看job [rootmaster k8s]# kubectl get job -n dev -wCopy# 另起终端查看pod [rootmaster k8s]# kubectl get pod -n dev -w### StatefulSet概述#无状态应用认为pod都是一样的随意进行伸缩扩展不用考虑在那个node运行没有顺序要求有状态应用有顺序要求pod是独立不一样的,保证pod启动顺序和唯一性需要考虑在哪个pod进行运行需要安装顺序进行伸缩和扩展StatefulSet是Kubernetes提供的管理有状态应用的负载管理控制器。StatefulSet部署需要HeadLinessService无头服务使用HeadLinessService(无头服务)在使用Deployment的时候,每一个Pod名称是没有顺序的,是通过随机字符串拼凑而成的,因此此时的pod是无顺序的,但是在StatefulSet中要求pod是有序的每一个pod不能被随意取代,pod重建后pod名称保持不变Pod的P是变化的,所以是以pod名称来识别,pod名称是pod唯一识别码,无头服务可以给每一个pod一个唯一的名称创建StatefulSet#Copycat pc-stateful.yaml EOF apiVersion: v1 kind: Service metadata:name: service-headlinessnamespace: dev spec:selector:app: nginx-podclusterIP: None# 将clusterIP设置为None即可创建headliness Servicetype: ClusterIPports:- port: 80# Service的端口targetPort: 80# Pod的端口 ---apiVersion: apps/v1 kind: StatefulSet metadata:name: pc-statefulsetnamespace: dev spec:replicas: 3serviceName: service-headlinessselector:matchLabels:app: nginx-podtemplate:metadata:labels:app: nginx-podspec:containers:- name: nginximage: nginx:1.17.1ports:- containerPort: 80 EOF[rootmaster k8s]# kubectl create -f pc-stateful.yaml [rootmaster k8s]# kubectl get statefulset pc-statefulset -n dev -o wideCopy# 查看pod [rootmaster k8s]# kubectl get pod -n dev -o wideDeployment和StatefulSet的区别#Deployment和StatefulSet的区别Deployment没有唯一标识而StatefulSet有唯一标识。StatefulSet的唯一标识是根据主机名一定规则生成的。StatefulSet的唯一标识是主机名.无头Service名称.命名空间.svc.cluster.localStatefulSet的金丝雀发布#CopyupdateStrategy:rollingUpdate: # 如果更新的策略是OnDelete那么rollingUpdate就失效partition: 2 # 表示从第2个分区开始更新默认是0type: RollingUpdate /OnDelete # 滚动更新StatefulSet支持两种更新策略OnDelete和RollingUpdate默认其中OnDelete表示删除之后才更新RollingUpdate表示滚动更新Copycat pc-statefulset.yaml EOF apiVersion: v1 kind: Service metadata:name: service-headlinessnamespace: dev spec:selector:app: nginx-podclusterIP: None# 将clusterIP设置为None即可创建headliness Servicetype: ClusterIPports:- port: 80# Service的端口targetPort: 80# Pod的端口 ---apiVersion: apps/v1 kind: StatefulSet metadata:name: pc-statefulsetnamespace: dev spec:replicas: 3serviceName: service-headlinessselector:matchLabels:app: nginx-podtemplate:metadata:labels:app: nginx-podspec:containers:- name: nginximage: nginx:1.17.1ports:- containerPort: 80updateStrategy:rollingUpdate:partition: 0type: RollingUpdate EOF[rootmaster k8s]# kubectl apply -f pc-stateful.yaml # 修改镜像 [rootmaster k8s]# kubectl set image -n dev statefulset pc-statefulset nginxnginx:1.17.2
http://www.hkea.cn/news/14414141/

相关文章:

  • 网站建设费能入长期待摊吗seo优化运营专员
  • 域名网站建设方案书模板江门做网站公司
  • 360未经证实的网站如何做全球网站建设服务商
  • app会替代网站吗廊坊关键词优化
  • 简单asp网站源码现在有哪些推广平台
  • 长春自主建站模板互动吧网站模板
  • 网站中图片下移怎么做网站开发笔记本要多少钱的
  • 免费vip网站推广搜狗搜索引擎网页
  • 一起作业网站英语作业怎么做商品推广软文范例300字
  • 在演示文稿上网站怎么做网站制作公司去哪找客户
  • 网站建设培训费用应用公园下载
  • 什么是营销型网站江西最新新闻事件今天
  • 网站建设代码网站只做优化
  • 和平网站建设wordpress同时使用双主题
  • 品牌营销型网站建设策划网站设计费报价表
  • 如何做好企业网站建设工作运营的网站
  • 手机网站主页设计php网站服务器怎么来
  • 网站开发选asp还是hph网页设计分为几个部分
  • 阿里云增加网站广告创意网站
  • 企业网站数据库设计表wordpress 多站点方法
  • 博州住房和城乡建设部网站电子商务管理系统
  • 长沙销售公司 网站重庆免费推广网站
  • 如何开网站需要多少钱荆门网站建设
  • 成都好的网站建设公司上海网站备案在哪里查询
  • 顺德营销型网站wordpress邮箱失败
  • 设计企业网站布局考虑的因素网站上线倒计时 模板
  • 贵阳网站优化微网站菜单
  • 一个网站需要多少容量永安网站制作
  • 网站群怎么做网站备案查询中心
  • 徐州手机网站制作展览会网站建设