OpenShiftContainerPlatform4.3,OpenShift

镜像文件 1
ContainerPlatform4.3 机器管理 添加和维护集群机器 LastUpdated:2020-11-30 OpenShiftContainerPlatform4.3机器管理 添加和维护集群机器 法律通告 Copyright©2020RedHat,Inc. ThetextofandillustrationsinthisdocumentarelicensedbyRedHatunderaCreativeCommonsAttribution–ShareAlike3.0Unportedlicense("CC-BY-SA").AnexplanationofCC-BY-SAisavailableat/licenses/by-sa/3.0/.InordancewithCC-BY-SA,ifyoudistributethisdocumentoranadaptationofit,youmustprovidetheURLfortheoriginalversion. RedHat,asthelicensorofthisdocument,waivestherighttoenforce,andagreesnottoassert,Section4dofCC-BY-SAtothefullestextentpermittedbyapplicablelaw. RedHat,RedHatEnterpriseLinux,theShadowmanlogo,theRedHatlogo,JBoss,OpenShift,Fedora,theInfinitylogo,andRHCEaretrademarksofRedHat,Inc.,registeredintheUnitedStatesandothercountries. Linux®istheregisteredtrademarkofLinusTorvaldsintheUnitedStatesandothercountries. Java®isaregisteredtrademarkofOracleand/oritsaffiliates. XFS®isatrademarkofSiliconGraphicsInternationalCorp.oritssubsidiariesintheUnitedStatesand/orothercountries. MySQL®isaregisteredtrademarkofMySQLABintheUnitedStates,theEuropeanUnionandothercountries. Node.js®isanofficialtrademarkofJoyent.RedHatisnotformallyrelatedtoorendorsedbytheofficialJoyentNode.jsopensourcemercialproject. TheOpenStack®WordMarkandOpenStacklogoareeitherregisteredtrademarks/servicemarksortrademarks/servicemarksoftheOpenStackFoundation,intheUnitedStatesandothercountriesandareusedwiththeOpenStackFoundation'spermission.Wearenotaffiliatedwith,endorsedorsponsoredbytheOpenStackFoundation,orthemunity. Allothertrademarksarethepropertyoftheirrespectiveowners. 摘要 本文说明如何管理构成OpenShiftContainerPlatform集群的机器。
某些任务利用OpenShiftContainerPlatform集群的增强型自动机器管理功能,另一些任务则要手动完成。
本文所述的任务并非对所有安装类型都适用。
目录 目录 第...1.章...创..建...M..A.C..H.I.N.E..S.E.T.....................................................................................3............. 1.1.在AWS中创建MACHINESET
3 1.2.在AZURE中创建MACHINESET
7 1.3.在GCP中创建MACHINESET 12 1.4.在OPENSTACK上创建MACHINESET 17 第...2..章..手..动...扩..展..M..A..C.H..I.N.E..S.E.T...............................................................................2.2............. 2.1.先决条件 22 2.2.手动扩展MACHINESET 22 2.3.MACHINESET删除策略 22 第...3..章..修...改..M..A..C.H..IN..E.S..E.T...................................................................................2.4............. 3.1.修改MACHINESET 24 第...4..章..删...除..机..器..............................................................................................2.6............. 4.1.删除一个特定的机器 26 第...5..章..将..自...动..扩..展..应..用..到...O..P.E..N.S..H.I.F.T..C.O..N..T.A..IN..E.R..P..L.A.T..F.O..R.M...集..群..........................................2.7............. 5.1.关于CLUSTERAUTOSCALER 27 5.2.关于MACHINEAUTOSCALER 28 5.3.配置CLUSTERAUTOSCALER 28 5.4.后续步骤 30 5.5.配置MACHINEAUTOSCALER 30 5.6.其他资源 31 第...6..章..创...建..基..础..架..构...M..A.C..H.I.N..E.S.E..T..........................................................................3.2............. 6.1.OPENSHIFTCONTAINERPLATFORM基础架构组件 32 6.2.为生产环境创建基础架构MACHINESET 32 6.3.将资源移到基础架构MACHINESET 39 第...7..章..用..户...置..备..的..基..础..架..构....................................................................................4.7............. 7.1.在OPENSHIFTCONTAINERPLATFORM集群中添加RHEL计算机器 47 7.2.在OPENSHIFTCONTAINERPLATFORM集群中添加更多RHEL计算机器 54 7.3.将计算机器添加到VSPHERE 59 7.4.在裸机中添加计算机器 61 第...8..章..部...署..机..器..健..康..检..查......................................................................................6.6............. 8.1.关于MACHINEHEALTHCHECK 66 8.2.MACHINEHEALTHCHECK资源示例 66 8.3.创建MACHINEHEALTHCHECK资源 67
1 OpenShiftContainerPlatform4.3机器管理
2 第1章创建MACHINESET 第1章创建MACHINESET 1.1.在AWS中创建MACHINESET 您可以在AmazonWebServices(AWS)上的OpenShiftContainerPlatform集群中创建不同的MachineSet来满足特定目的。
例如,您可以创建基础架构MachineSet和相关的Machine,以便将支持型工作负载转移到新Machine上。
1.1.1.MachineAPI概述 MachineAPI将基于上游ClusterAPI项目的主要资源与自定义OpenShiftContainerPlatform资源相结合。
对于OpenShiftContainerPlatform4.3集群,MachineAPI在集群安装完成后执行所有节点主机置备管理操作。
由于此系统的缘故,OpenShiftContainerPlatform4.3在公有或私有云基础架构之上提供了一种弹性动态置备方法。
两种主要资源分别是: Machine描述节点主机的基本单元。
机器具有providerSpec,用于描述为不同云平台提供的计算节点的类型。
例如,AmazonWebServices(AWS)上的worker节点的机器类型可能会定义特定的机器类型和所需的元数据。
MachineSet机器的群组。
MachineSet适用于机器,ReplicaSet则适用于Pod。
如果需要更多机器或必须缩减规模,则可以更改MachineSet的replicas字段来满足您的计算需求。
以下自定义资源可为集群添加更多功能: MachineAutoscaler此资源可自动扩展云中的机器。
您可以为指定MachineSet中的节点设置最小和最大扩展界限,MachineAutoscaler就会维护此范围内的节点。
ClusterAutoscaler对象存在后,MachineAutoscaler对象生效。
ClusterAutoscaler和MachineAutoscaler资源都由ClusterAutoscalerOperator提供。
ClusterAutoscaler此资源基于上游ClusterAutoscaler项目。
在OpenShiftContainerPlatform实现中,它通过扩展MachineSetAPI来与MachineAPI集成。
您可以为核心、节点、内存和GPU等资源设置集群范围的扩展限制。
您可以设置优先级,使集群对Pod进行优先级排序,以便不针对不太重要的Pod使新节点上线。
您还可以设置ScalingPolicy,从而能按比例扩展节点,但不按比例缩减节点。
MachineHealthCheck此资源可检测机器何时处于不健康状态并将其删除,然后在支持的平台上生成新的机器。
注意 在版本4.3中,MachineHealthCheck是一项技术预览功能 在OpenShiftContainerPlatform版本3.11中,您无法轻松地推出多区架构,因为集群不负责管理机器置备。
自OpenShiftContainerPlatform版本4.1起,此过程变得更加容易。
每个MachineSet限定在一个区域,因此安装程序可以代表您将MachineSet分发到多个可用区。
然后,由于您的计算是动态的,因此
3 OpenShiftContainerPlatform4.3机器管理 在面对区域故障时,您始终都有一个区域来应对必须重新平衡机器的情况。
自动扩展器在集群生命周期内尽可能提供平衡。
1.1.2.AWS上MachineSet自定义资源的YAML示例 此YAML示例定义了一个在us-east-1aAmazonWebServices(AWS)区域中运行的MachineSet,并创建通过es.io/:""标记的节点。
在本例中,是基础架构ID标签,该标签基于您在置备集群时设定的集群ID,而则是要添加的节点标签。
apiVersion:machine.openshift.io/v1beta1kind:MachineSetmetadata: labels:machine.openshift.io/cluster-api-cluster:1 name:--2namespace:openshift-machine-apispec:replicas:1selector: matchLabels:machine.openshift.io/cluster-api-cluster:3machine.openshift.io/cluster-api-machineset:--4 template:metadata:labels:machine.openshift.io/cluster-api-cluster:5machine.openshift.io/cluster-api-machine-role:6machine.openshift.io/cluster-api-machine-type:7machine.openshift.io/cluster-api-machineset:--8spec:metadata:labels:es.io/:""9providerSpec:value:ami:id:ami-046fe691f52a953f910apiVersion:awsproviderconfig.openshift.io/v1beta1blockDevices:-ebs:iops:0volumeSize:120volumeType:gp2credentialsSecret:name:aws-cloud-credentialsdeviceIndex:0iamInstanceProfile:id:-worker-profile11instanceType:m4.largekind:AWSMachineProviderConfigplacement:availabilityZone:us-east-1a
4 第1章创建MACHINESET region:us-east-1securityGroups: -filters:-name:tag:Namevalues:--worker-sg12 :filters:-name:tag:Namevalues:--private-us-east-1a13 tags:-name:es.io/cluster/14value:owned userDataSecret:name:worker-user-data 13511121314指定基于置备集群时所设置的集群ID的基础架构ID。
如果已安装OpenShiftCLI和jq软件包,您可以通过运行以下命令来获取基础架构ID: $ocget-ojsonpath='{.status.infrastructureName}{"\n"}'infrastructurecluster 248指定基础架构ID、节点标签和区域。
679指定要添加的节点标签。
10为您的OpenShiftContainerPlatform节点的AWS区域指定有效的RedHatEnterpriseLinuxCoreOS(RHCOS)AMI。
1.1.3.创建MachineSet 除了安装程序创建的MachineSet之外,还可创建自己的MachineSet来动态管理您选择的特定工作负载的机器计算资源。
先决条件部署一个OpenShiftContainerPlatform集群。
安装OpenShiftCLI(oc)。
以具有cluster-admin权限的用户身份登录oc。
流程
1.如示例所示,创建一个包含MachineSet自定义资源示例的新YAML文件,并将其命名为.yaml。
确保设置参数值。
a.如果不确定要为特定字段设置哪个值,您可以从集群中检查现有的MachineSet。
$ocgetmachinesets-nopenshift-machine-api NAME DESIREDCURRENTREADYAVAILABLEAGE agl030519-vplxk-worker-us-east-1a1111 55m
5 OpenShiftContainerPlatform4.3机器管理 agl030519-vplxk-worker-us-east-1b11agl030519-vplxk-worker-us-east-1c11agl030519-vplxk-worker-us-east-1d00agl030519-vplxk-worker-us-east-1e00agl030519-vplxk-worker-us-east-1f00 1111 55m55m55m55m55m b.检查特定MachineSet的值: $ocgetmachineset-n\openshift-machine-api-oyaml .... template:metadata:labels:machine.openshift.io/cluster-api-cluster:agl030519-vplxk1machine.openshift.io/cluster-api-machine-role:worker2machine.openshift.io/cluster-api-machine-type:workermachine.openshift.io/cluster-api-machineset:agl030519-vplxk-worker-us-east-1a 1集群ID。
2默认节点标签。

2.创建新MachineSet:$occreate-f.yaml
3.查看MachineSet列表:$ocgetmachineset-nopenshift-machine-api NAME DESIREDCURRENTREADY agl030519-vplxk-infra-us-east-1a1111 agl030519-vplxk-worker-us-east-1a1111 agl030519-vplxk-worker-us-east-1b1111 agl030519-vplxk-worker-us-east-1c1111 agl030519-vplxk-worker-us-east-1d00 agl030519-vplxk-worker-us-east-1e00 agl030519-vplxk-worker-us-east-1f00 AVAILABLE11m55m55m55m55m55m55m AGE 当新MachineSet可用时,DESIRED和CURRENT的值会匹配。
如果MachineSet不可用,请等待几分钟,然后重新运行命令。

4.有新的MachineSet可用后,检查机器及其引用的节点的状态: $ocdescribemachine-nopenshift-machine-api 例如: $ocdescribemachineagl030519-vplxk-infra-us-east-1a-nopenshift-machine-api
6 第1章创建MACHINESET status:addresses:-address:10.0.133.18type:InternalIP-address:""type:ExternalDNS-address:ip-10-0-133-18.ec2.internaltype:InternalDNSlastUpdated:"2019-05-03T10:38:17Z"nodeRef:kind:Nodename:ip-10-0-133-18.ec2.internaluid:71fb8d75-6d8f-11e9-9ff3-0e3f103c7cd8providerStatus:apiVersion:awsproviderconfig.openshift.io/v1beta1conditions:-lastProbeTime:"2019-05-03T10:34:31Z"lastTransitionTime:"2019-05-03T10:34:31Z"message:machineessfullycreatedreason:eededstatus:"True"type:MachineCreationinstanceId:i-09ca0701454124294instanceState:runningkind:AWSMachineProviderStatus
5.查看新节点,并确认新节点具有您指定的标签: $ocgetnode--show-labels 查看命令输出,并确认es.io/列在LABELS列表中。
注意 对MachineSet的任何更改都不会应用到MachineSet拥有的现有机器。
例如,对现有MachineSet编辑或添加的标签不会传播到与该MachineSet关联的现有机器和节点。
后续步骤 如果需要其他可用区中的MachineSet,请重复此过程来创建更多MachineSet。
1.2.在AZURE中创建MACHINESET 您可以在MicrosoftAzure上的OpenShiftContainerPlatform集群中创建不同的MachineSet来满足特定目的。
例如,您可以创建基础架构MachineSet和相关的Machine,以便将支持型工作负载转移到新Machine上。
1.2.1.MachineAPI概述 MachineAPI将基于上游ClusterAPI项目的主要资源与自定义OpenShiftContainerPlatform资源相结合。
对于OpenShiftContainerPlatform4.3集群,MachineAPI在集群安装完成后执行所有节点主机置备管
7 OpenShiftContainerPlatform4.3机器管理 对于OpenShiftContainerPlatform4.3集群,MachineAPI在集群安装完成后执行所有节点主机置备管理操作。
由于此系统的缘故,OpenShiftContainerPlatform4.3在公有或私有云基础架构之上提供了一种弹性动态置备方法。
两种主要资源分别是: Machine描述节点主机的基本单元。
机器具有providerSpec,用于描述为不同云平台提供的计算节点的类型。
例如,AmazonWebServices(AWS)上的worker节点的机器类型可能会定义特定的机器类型和所需的元数据。
MachineSet机器的群组。
MachineSet适用于机器,ReplicaSet则适用于Pod。
如果需要更多机器或必须缩减规模,则可以更改MachineSet的replicas字段来满足您的计算需求。
以下自定义资源可为集群添加更多功能: MachineAutoscaler此资源可自动扩展云中的机器。
您可以为指定MachineSet中的节点设置最小和最大扩展界限,MachineAutoscaler就会维护此范围内的节点。
ClusterAutoscaler对象存在后,MachineAutoscaler对象生效。
ClusterAutoscaler和MachineAutoscaler资源都由ClusterAutoscalerOperator提供。
ClusterAutoscaler此资源基于上游ClusterAutoscaler项目。
在OpenShiftContainerPlatform实现中,它通过扩展MachineSetAPI来与MachineAPI集成。
您可以为核心、节点、内存和GPU等资源设置集群范围的扩展限制。
您可以设置优先级,使集群对Pod进行优先级排序,以便不针对不太重要的Pod使新节点上线。
您还可以设置ScalingPolicy,从而能按比例扩展节点,但不按比例缩减节点。
MachineHealthCheck此资源可检测机器何时处于不健康状态并将其删除,然后在支持的平台上生成新的机器。
注意 在版本4.3中,MachineHealthCheck是一项技术预览功能 在OpenShiftContainerPlatform版本3.11中,您无法轻松地推出多区架构,因为集群不负责管理机器置备。
自OpenShiftContainerPlatform版本4.1起,此过程变得更加容易。
每个MachineSet限定在一个区域,因此安装程序可以代表您将MachineSet分发到多个可用区。
然后,由于您的计算是动态的,因此在面对区域故障时,您始终都有一个区域来应对必须重新平衡机器的情况。
自动扩展器在集群生命周期内尽可能提供平衡。
1.2.2.Azure上MachineSet自定义资源的YAML示例 此YAML示例定义了一个在centralus地区(region)的1MicrosoftAzure区域(zone)中运行的MachineSet,并创建了通过es.io/:""标记的节点。
在本例中,是基础架构ID标签,该标签基于您在置备集群时设定的集群ID,而则是要添加的节点标签。
apiVersion:machine.openshift.io/v1beta1kind:MachineSetmetadata: labels:
8 第1章创建MACHINESET machine.openshift.io/cluster-api-cluster:1machine.openshift.io/cluster-api-machine-role:2machine.openshift.io/cluster-api-machine-type:3name:--4namespace:openshift-machine-apispec:replicas:1selector:matchLabels: machine.openshift.io/cluster-api-cluster:5machine.openshift.io/cluster-api-machineset:--6template:metadata:creationTimestamp:nulllabels: machine.openshift.io/cluster-api-cluster:7machine.openshift.io/cluster-api-machine-role:8machine.openshift.io/cluster-api-machine-type:9machine.openshift.io/cluster-api-machineset:--10spec:metadata:creationTimestamp:nulllabels: es.io/:""11providerSpec: value:apiVersion:azureproviderconfig.openshift.io/v1beta1credentialsSecret:name:azure-cloud-credentialsnamespace:openshift-machine-apiimage:offer:""publisher:""resourceID:/resourceGroups/- rg/providers/Microsoft.Compute/images/
sku:""version:"" internalLoadBalancer:""kind:AzureMachineProviderSpeclocation:centralusmanagedIdentity:-identity12metadata: creationTimestamp:nullnatRule:workResourceGroup:""osDisk: diskSizeGB:128managedDisk: ountType:Premium_LRSosType:LinuxpublicIP:falsepublicLoadBalancer:""resourceGroup:-rg13sshPrivateKey:""
9 OpenShiftContainerPlatform4.3机器管理 sshPublicKey:"":-1415userDataSecret: name:-user-data16vmSize:Standard_D2s_v3:17zone:"1"18 15712131417指定基于置备集群时所设置的集群ID的基础架构ID。
如果已安装OpenShiftCLI和jq软件包,您可以通过运行以下命令来获取基础架构ID: $ocget-ojsonpath='{.status.infrastructureName}{"\n"}'infrastructurecluster 2389111516指定要添加的节点标签。
4610指定基础架构ID、节点标签和地区。
18指定您所在地区(region)内要放置Machine的区域(zone)。
确保您的地区支持您指定的区域。
1.2.3.创建MachineSet 除了安装程序创建的MachineSet之外,还可创建自己的MachineSet来动态管理您选择的特定工作负载的机器计算资源。
先决条件部署一个OpenShiftContainerPlatform集群。
安装OpenShiftCLI(oc)。
以具有cluster-admin权限的用户身份登录oc。
流程
1.如示例所示,创建一个包含MachineSet自定义资源示例的新YAML文件,并将其命名为.yaml。
确保设置参数值。
a.如果不确定要为特定字段设置哪个值,您可以从集群中检查现有的MachineSet。
$ocgetmachinesets-nopenshift-machine-api NAME DESIREDCURRENT agl030519-vplxk-worker-us-east-1a11 agl030519-vplxk-worker-us-east-1b11 agl030519-vplxk-worker-us-east-1c11 agl030519-vplxk-worker-us-east-1d00 agl030519-vplxk-worker-us-east-1e00 agl030519-vplxk-worker-us-east-1f00 READY111111 AVAILABLE55m55m55m 55m55m55m AGE b.检查特定MachineSet的值:$ocgetmachineset-n\ 10 第1章创建MACHINESET openshift-machine-api-oyaml .... template:metadata:labels:machine.openshift.io/cluster-api-cluster:agl030519-vplxk1machine.openshift.io/cluster-api-machine-role:worker2machine.openshift.io/cluster-api-machine-type:workermachine.openshift.io/cluster-api-machineset:agl030519-vplxk-worker-us-east-1a 1集群ID。
2默认节点标签。

2.创建新MachineSet: $occreate-f.yaml
3.查看MachineSet列表: $ocgetmachineset-nopenshift-machine-api NAME DESIREDCURRENTREADY agl030519-vplxk-infra-us-east-1a1111 agl030519-vplxk-worker-us-east-1a1111 agl030519-vplxk-worker-us-east-1b1111 agl030519-vplxk-worker-us-east-1c1111 agl030519-vplxk-worker-us-east-1d00 agl030519-vplxk-worker-us-east-1e00 agl030519-vplxk-worker-us-east-1f00 AVAILABLE11m55m55m55m55m55m55m AGE 当新MachineSet可用时,DESIRED和CURRENT的值会匹配。
如果MachineSet不可用,请等待几分钟,然后重新运行命令。

4.有新的MachineSet可用后,检查机器及其引用的节点的状态: $ocdescribemachine-nopenshift-machine-api 例如: $ocdescribemachineagl030519-vplxk-infra-us-east-1a-nopenshift-machine-api status:addresses:-address:10.0.133.18type:InternalIP-address:""type:ExternalDNS-address:ip-10-0-133-18.ec2.internaltype:InternalDNSlastUpdated:"2019-05-03T10:38:17Z" 11 OpenShiftContainerPlatform4.3机器管理 nodeRef:kind:Nodename:ip-10-0-133-18.ec2.internaluid:71fb8d75-6d8f-11e9-9ff3-0e3f103c7cd8 providerStatus:apiVersion:awsproviderconfig.openshift.io/v1beta1conditions:-lastProbeTime:"2019-05-03T10:34:31Z"lastTransitionTime:"2019-05-03T10:34:31Z"message:machineessfullycreatedreason:eededstatus:"True"type:MachineCreationinstanceId:i-09ca0701454124294instanceState:runningkind:AWSMachineProviderStatus
5.查看新节点,并确认新节点具有您指定的标签: $ocgetnode--show-labels 查看命令输出,并确认es.io/列在LABELS列表中。
注意 对MachineSet的任何更改都不会应用到MachineSet拥有的现有机器。
例如,对现有MachineSet编辑或添加的标签不会传播到与该MachineSet关联的现有机器和节点。
后续步骤 如果需要其他可用区中的MachineSet,请重复此过程来创建更多MachineSet。
1.3.在GCP中创建MACHINESET 您可以在GoogleCloudPlatform(GCP)上的OpenShiftContainerPlatform集群中创建不同的MachineSet来满足特定目的。
例如,您可以创建基础架构MachineSet和相关的Machine,以便将支持型工作负载转移到新Machine上。
1.3.1.MachineAPI概述 MachineAPI将基于上游ClusterAPI项目的主要资源与自定义OpenShiftContainerPlatform资源相结合。
对于OpenShiftContainerPlatform4.3集群,MachineAPI在集群安装完成后执行所有节点主机置备管理操作。
由于此系统的缘故,OpenShiftContainerPlatform4.3在公有或私有云基础架构之上提供了一种弹性动态置备方法。
两种主要资源分别是: Machine描述节点主机的基本单元。
机器具有providerSpec,用于描述为不同云平台提供的计算节点的类型。
例如,AmazonWebServices(AWS)上的worker节点的机器类型可能会定义特定的机器类型和所需的元数据。
MachineSet 12 第1章创建MACHINESET 机器的群组。
MachineSet适用于机器,ReplicaSet则适用于Pod。
如果需要更多机器或必须缩减规模,则可以更改MachineSet的replicas字段来满足您的计算需求。
以下自定义资源可为集群添加更多功能: MachineAutoscaler此资源可自动扩展云中的机器。
您可以为指定MachineSet中的节点设置最小和最大扩展界限,MachineAutoscaler就会维护此范围内的节点。
ClusterAutoscaler对象存在后,MachineAutoscaler对象生效。
ClusterAutoscaler和MachineAutoscaler资源都由ClusterAutoscalerOperator提供。
ClusterAutoscaler此资源基于上游ClusterAutoscaler项目。
在OpenShiftContainerPlatform实现中,它通过扩展MachineSetAPI来与MachineAPI集成。
您可以为核心、节点、内存和GPU等资源设置集群范围的扩展限制。
您可以设置优先级,使集群对Pod进行优先级排序,以便不针对不太重要的Pod使新节点上线。
您还可以设置ScalingPolicy,从而能按比例扩展节点,但不按比例缩减节点。
MachineHealthCheck此资源可检测机器何时处于不健康状态并将其删除,然后在支持的平台上生成新的机器。
注意 在版本4.3中,MachineHealthCheck是一项技术预览功能 在OpenShiftContainerPlatform版本3.11中,您无法轻松地推出多区架构,因为集群不负责管理机器置备。
自OpenShiftContainerPlatform版本4.1起,此过程变得更加容易。
每个MachineSet限定在一个区域,因此安装程序可以代表您将MachineSet分发到多个可用区。
然后,由于您的计算是动态的,因此在面对区域故障时,您始终都有一个区域来应对必须重新平衡机器的情况。
自动扩展器在集群生命周期内尽可能提供平衡。
1.3.2.GCP上MachineSet自定义资源的YAML示例 此YAML示例定义了一个在GoogleCloudPlatform(GCP)中运行的MachineSet,并创建通过es.io/:""标记的节点。
在本例中,是基础架构ID标签,该标签基于您在置备集群时设定的集群ID,而则是要添加的节点标签。
apiVersion:machine.openshift.io/v1beta1kind:MachineSetmetadata: labels:machine.openshift.io/cluster-api-cluster:1 name:-w-a2namespace:openshift-machine-apispec:replicas:1selector: matchLabels:machine.openshift.io/cluster-api-cluster:3machine.openshift.io/cluster-api-machineset:-w-a4 template:metadata:creationTimestamp:null 13 OpenShiftContainerPlatform4.3机器管理 labels:machine.openshift.io/cluster-api-cluster:5machine.openshift.io/cluster-api-machine-role:6machine.openshift.io/cluster-api-machine-type:7machine.openshift.io/cluster-api-machineset:-w-a8 spec:metadata:labels:es.io/:""9providerSpec:value:apiVersion:gcpprovider.openshift.io/v1beta1canIPForward:falsecredentialsSecret:name:gcp-cloud-credentialsdeletionProtection:falsedisks:-autoDelete:trueboot:trueimage:-rhcos-image10labels:nullsizeGb:128type:pd-ssdkind:GCPMachineProviderSpecmachineType:n1-standard-4metadata:creationTimestamp:workInterfaces:work:work11work:-12projectID:13region:us-central1ounts:-email:-w@1415scopes:-/auth/cloud-platformtags:--16userDataSecret:name:worker-user-datazone:us-central1-a 123458101114指定基于置备集群时所设置的集群ID的基础架构ID。
如果已安装OpenShiftCLI和jq软件包,您可以通过运行以下命令来获取基础架构ID: $ocget-ojsonpath='{.status.infrastructureName}{"\n"}'infrastructurecluster 1216指定基础架构ID和节点标签。
679指定要添加的节点标签。
1315指定用于集群的GCP项目的名称。
14 第1章创建MACHINESET 1.3.3.创建MachineSet 除了安装程序创建的MachineSet之外,还可创建自己的MachineSet来动态管理您选择的特定工作负载的机器计算资源。
先决条件部署一个OpenShiftContainerPlatform集群。
安装OpenShiftCLI(oc)。
以具有cluster-admin权限的用户身份登录oc。
流程
1.如示例所示,创建一个包含MachineSet自定义资源示例的新YAML文件,并将其命名为.yaml。
确保设置参数值。
a.如果不确定要为特定字段设置哪个值,您可以从集群中检查现有的MachineSet。
$ocgetmachinesets-nopenshift-machine-api NAME DESIREDCURRENT agl030519-vplxk-worker-us-east-1a11 agl030519-vplxk-worker-us-east-1b11 agl030519-vplxk-worker-us-east-1c11 agl030519-vplxk-worker-us-east-1d00 agl030519-vplxk-worker-us-east-1e00 agl030519-vplxk-worker-us-east-1f00 READY111111 AVAILABLE55m55m55m 55m55m55m AGE b.检查特定MachineSet的值: $ocgetmachineset-n\openshift-machine-api-oyaml .... template:metadata:labels:machine.openshift.io/cluster-api-cluster:agl030519-vplxk1machine.openshift.io/cluster-api-machine-role:worker2machine.openshift.io/cluster-api-machine-type:workermachine.openshift.io/cluster-api-machineset:agl030519-vplxk-worker-us-east-1a 1集群ID。
2默认节点标签。

2.创建新MachineSet:$occreate-f.yaml 15 OpenShiftContainerPlatform4.3机器管理
3.查看MachineSet列表:$ocgetmachineset-nopenshift-machine-api NAME DESIREDCURRENTREADY agl030519-vplxk-infra-us-east-1a1111 agl030519-vplxk-worker-us-east-1a1111 agl030519-vplxk-worker-us-east-1b1111 agl030519-vplxk-worker-us-east-1c1111 agl030519-vplxk-worker-us-east-1d00 agl030519-vplxk-worker-us-east-1e00 agl030519-vplxk-worker-us-east-1f00 AVAILABLE11m55m55m55m55m55m55m AGE 当新MachineSet可用时,DESIRED和CURRENT的值会匹配。
如果MachineSet不可用,请等待几分钟,然后重新运行命令。

4.有新的MachineSet可用后,检查机器及其引用的节点的状态: $ocdescribemachine-nopenshift-machine-api 例如: $ocdescribemachineagl030519-vplxk-infra-us-east-1a-nopenshift-machine-api status:addresses:-address:10.0.133.18type:InternalIP-address:""type:ExternalDNS-address:ip-10-0-133-18.ec2.internaltype:InternalDNSlastUpdated:"2019-05-03T10:38:17Z"nodeRef:kind:Nodename:ip-10-0-133-18.ec2.internaluid:71fb8d75-6d8f-11e9-9ff3-0e3f103c7cd8providerStatus:apiVersion:awsproviderconfig.openshift.io/v1beta1conditions:-lastProbeTime:"2019-05-03T10:34:31Z"lastTransitionTime:"2019-05-03T10:34:31Z"message:machineessfullycreatedreason:eededstatus:"True"type:MachineCreationinstanceId:i-09ca0701454124294instanceState:runningkind:AWSMachineProviderStatus
5.查看新节点,并确认新节点具有您指定的标签:$ocgetnode--show-labels 16 第1章创建MACHINESET 查看命令输出,并确认es.io/列在LABELS列表中。
注意 对MachineSet的任何更改都不会应用到MachineSet拥有的现有机器。
例如,对现有MachineSet编辑或添加的标签不会传播到与该MachineSet关联的现有机器和节点。
后续步骤如果需要其他可用区中的MachineSet,请重复此过程来创建更多MachineSet。
1.4.在OPENSTACK上创建MACHINESET 您可以在RedHatOpenStackPlatform(RHOSP)上的OpenShiftContainerPlatform集群中创建不同的MachineSet来满足特定目的。
例如,您可以创建基础架构MachineSet和相关的Machine,以便将支持型工作负载转移到新Machine上。
1.4.1.MachineAPI概述 MachineAPI将基于上游ClusterAPI项目的主要资源与自定义OpenShiftContainerPlatform资源相结合。
对于OpenShiftContainerPlatform4.3集群,MachineAPI在集群安装完成后执行所有节点主机置备管理操作。
由于此系统的缘故,OpenShiftContainerPlatform4.3在公有或私有云基础架构之上提供了一种弹性动态置备方法。
两种主要资源分别是: Machine描述节点主机的基本单元。
机器具有providerSpec,用于描述为不同云平台提供的计算节点的类型。
例如,AmazonWebServices(AWS)上的worker节点的机器类型可能会定义特定的机器类型和所需的元数据。
MachineSet机器的群组。
MachineSet适用于机器,ReplicaSet则适用于Pod。
如果需要更多机器或必须缩减规模,则可以更改MachineSet的replicas字段来满足您的计算需求。
以下自定义资源可为集群添加更多功能: MachineAutoscaler此资源可自动扩展云中的机器。
您可以为指定MachineSet中的节点设置最小和最大扩展界限,MachineAutoscaler就会维护此范围内的节点。
ClusterAutoscaler对象存在后,MachineAutoscaler对象生效。
ClusterAutoscaler和MachineAutoscaler资源都由ClusterAutoscalerOperator提供。
ClusterAutoscaler此资源基于上游ClusterAutoscaler项目。
在OpenShiftContainerPlatform实现中,它通过扩展MachineSetAPI来与MachineAPI集成。
您可以为核心、节点、内存和GPU等资源设置集群范围的扩展限制。
您可以设置优先级,使集群对Pod进行优先级排序,以便不针对不太重要的Pod使新节点上线。
您还可以设置ScalingPolicy,从而能按比例扩展节点,但不按比例缩减节点。
MachineHealthCheck此资源可检测机器何时处于不健康状态并将其删除,然后在支持的平台上生成新的机器。
注意 17 OpenShiftContainerPlatform4.3机器管理 注意 在版本4.3中,MachineHealthCheck是一项技术预览功能 在OpenShiftContainerPlatform版本3.11中,您无法轻松地推出多区架构,因为集群不负责管理机器置备。
自OpenShiftContainerPlatform版本4.1起,此过程变得更加容易。
每个MachineSet限定在一个区域,因此安装程序可以代表您将MachineSet分发到多个可用区。
然后,由于您的计算是动态的,因此在面对区域故障时,您始终都有一个区域来应对必须重新平衡机器的情况。
自动扩展器在集群生命周期内尽可能提供平衡。
1.4.2.RHOSP上MachineSet自定义资源的YAML示例 此YAML示例定义了一个在RedHatOpenStackPlatform(RHOSP)上运行的MachineSet,并创建带有node-role.openshift.io/:""标记的节点 在本例中,infrastructure_ID是基础架构ID标签,该标签基于您在置备集群时设定的集群ID,而node_role则是要添加的节点标签。
apiVersion:machine.openshift.io/v1beta1kind:MachineSetmetadata: labels:machine.openshift.io/cluster-api-cluster:1machine.openshift.io/cluster-api-machine-role:2machine.openshift.io/cluster-api-machine-type:3 name:-4namespace:openshift-machine-apispec:replicas:selector: matchLabels:machine.openshift.io/cluster-api-cluster:5machine.openshift.io/cluster-api-machineset:-6 template:metadata:labels:machine.openshift.io/cluster-api-cluster:7machine.openshift.io/cluster-api-machine-role:8machine.openshift.io/cluster-api-machine-type:9machine.openshift.io/cluster-api-machineset:-10spec:providerSpec:value:apiVersion:openstackproviderconfig.openshift.io/v1alpha1cloudName:openstackcloudsSecret:name:openstack-cloud-credentialsnamespace:openshift-machine-apiflavor:image:kind:works:-filter:{} 18 第1章创建MACHINESET s:-filter: name:<_name>tags:openshiftClusterID=securityGroups:-filter:{}name:-serverMetadata:Name:-openshiftClusterID:tags:-openshiftClusterID=trunk:trueuserDataSecret:name:-user-data11 157指定基于置备集群时所设置的集群ID的基础架构ID。
如果已安装OpenShiftCLI和jq软件包,您可以通过运行以下命令来获取基础架构ID: $ocget-ojsonpath='{.status.infrastructureName}{"\n"}'infrastructurecluster 238911指定要添加的节点标签。
4610指定基础架构ID和节点标签。
1.4.3.创建MachineSet 除了安装程序创建的MachineSet之外,还可创建自己的MachineSet来动态管理您选择的特定工作负载的机器计算资源。
先决条件部署一个OpenShiftContainerPlatform集群。
安装OpenShiftCLI(oc)。
以具有cluster-admin权限的用户身份登录oc。
流程
1.如示例所示,创建一个包含MachineSet自定义资源示例的新YAML文件,并将其命名为.yaml。
确保设置参数值。
a.如果不确定要为特定字段设置哪个值,您可以从集群中检查现有的MachineSet。
$ocgetmachinesets-nopenshift-machine-api NAME DESIREDCURRENT agl030519-vplxk-worker-us-east-1a11 agl030519-vplxk-worker-us-east-1b11 agl030519-vplxk-worker-us-east-1c11 READY111111 AVAILABLE55m55m55m AGE 19 OpenShiftContainerPlatform4.3机器管理 agl030519-vplxk-worker-us-east-1d00agl030519-vplxk-worker-us-east-1e00agl030519-vplxk-worker-us-east-1f00 55m55m55m b.检查特定MachineSet的值: $ocgetmachineset-n\openshift-machine-api-oyaml .... template:metadata:labels:machine.openshift.io/cluster-api-cluster:agl030519-vplxk1machine.openshift.io/cluster-api-machine-role:worker2machine.openshift.io/cluster-api-machine-type:workermachine.openshift.io/cluster-api-machineset:agl030519-vplxk-worker-us-east-1a 1集群ID。
2默认节点标签。

2.创建新MachineSet:$occreate-f.yaml
3.查看MachineSet列表:$ocgetmachineset-nopenshift-machine-api NAME DESIREDCURRENTREADY agl030519-vplxk-infra-us-east-1a1111 agl030519-vplxk-worker-us-east-1a1111 agl030519-vplxk-worker-us-east-1b1111 agl030519-vplxk-worker-us-east-1c1111 agl030519-vplxk-worker-us-east-1d00 agl030519-vplxk-worker-us-east-1e00 agl030519-vplxk-worker-us-east-1f00 AVAILABLE11m55m55m55m55m55m55m AGE 当新MachineSet可用时,DESIRED和CURRENT的值会匹配。
如果MachineSet不可用,请等待几分钟,然后重新运行命令。

4.有新的MachineSet可用后,检查机器及其引用的节点的状态: $ocdescribemachine-nopenshift-machine-api 例如: $ocdescribemachineagl030519-vplxk-infra-us-east-1a-nopenshift-machine-apistatus: 20 第1章创建MACHINESET addresses:-address:10.0.133.18 type:InternalIP-address:"" type:ExternalDNS-address:ip-10-0-133-18.ec2.internal type:InternalDNSlastUpdated:"2019-05-03T10:38:17Z"nodeRef: kind:Nodename:ip-10-0-133-18.ec2.internaluid:71fb8d75-6d8f-11e9-9ff3-0e3f103c7cd8providerStatus:apiVersion:awsproviderconfig.openshift.io/v1beta1conditions:-lastProbeTime:"2019-05-03T10:34:31Z" lastTransitionTime:"2019-05-03T10:34:31Z"message:machineessfullycreatedreason:eededstatus:"True"type:MachineCreationinstanceId:i-09ca0701454124294instanceState:runningkind:AWSMachineProviderStatus
5.查看新节点,并确认新节点具有您指定的标签: $ocgetnode--show-labels 查看命令输出,并确认es.io/列在LABELS列表中。
注意对MachineSet的任何更改都不会应用到MachineSet拥有的现有机器。
例如,对现有MachineSet编辑或添加的标签不会传播到与该MachineSet关联的现有机器和节点。
后续步骤如果需要其他可用区中的MachineSet,请重复此过程来创建更多MachineSet。
21 OpenShiftContainerPlatform4.3机器管理 第2章手动扩展MACHINESET 您可以在MachineSet中添加或删除机器的实例。
注意如果需要在扩展范围外修改MachineSet的各个方面,请参阅修改MachineSet。
2.1.先决条件 如果启用了集群范围代理并要扩展未包含在安装配置的working.machineCIDR中的worker,您必须将worker添加到Proxy对象的noProxy字段,以防发生连接问题。
重要此过程不适用于自己手动置备机器的集群。
您只能在使用机器API的集群中使用高级机器管理和扩展功能。
2.2.手动扩展MACHINESET 如果您必须在MachineSet中添加或移除机器实例,则可以手动扩展MachineSet。
先决条件 安装OpenShiftContainerPlatform集群和oc命令行。
以具有cluster-admin权限的用户身份登录oc。
流程
1.查看集群中的MachineSet: $ocgetmachinesets-nopenshift-machine-apiMachineSet以-worker-的形式列出。

2.扩展MachineSet: $ocscale--replicas=2machineset-nopenshift-machine-api或者: $oceditmachineset-nopenshift-machine-api您可以扩展或缩减MachineSet的规模。
需要过几分钟以后新机器才可用。
2.3.MACHINESET删除策略 Random、Newest和Oldest是三个支持的选项。
默认值为Random,它表示在扩展MachineSet时会随机选择并删除机器。
通过修改特定的MachineSet,可以根据用例设置delete策略: 22 第2章手动扩展MACHINESETspec: deletePolicy:replicas:无论删除策略是什么,都可通过在相关机器上添加machine.openshift.io/cluster-api-delete-machine注解来指定机器删除的优先级。
重要默认情况下,OpenShiftContainerPlatform路由器Pod部署在worker上。
由于路由器需要访问某些集群资源(包括Web控制台),除非已事先把路由器Pod移到其他位置,否则请不要将workerMachineSet扩展为
0。
注意当用户需要特定的服务必须运行在特定节点,在workerMachineSet进行缩减时需要忽略这些服务时,可以使用自定义MachineSet。
这可防止服务被中断。
23 OpenShiftContainerPlatform4.3机器管理 第3章修改MACHINESET 您可以对MachineSet进行更改,例如添加标签、更改实例类型或更改块存储。
注意如果需要扩展MachineSet但不进行其他更改,请参阅手动扩展MachineSet。
3.1.修改MACHINESET 若要更改MachineSet,请编辑MachineSetYAML。
然后,通过删除每个机器或将MachineSet副本数减为0来删除所有与MachineSet相关联的机器。
然后,将副本数量调回所需的数量。
您对MachineSet进行的更改不会影响现有的机器。
如果需要扩展MachineSet但不进行其他更改,则无需删除机器。
注意默认情况下,OpenShiftContainerPlatform路由器Pod部署在worker上。
由于路由器需要访问某些集群资源(包括Web控制台),除非先重新放置了路由器Pod,否则请不要将workerMachineSet扩展为
0。
先决条件安装OpenShiftContainerPlatform集群和oc命令行。
以具有cluster-admin权限的用户身份登录oc。
流程
1.编辑MachineSet:$oceditmachineset-nopenshift-machine-api2.将MachineSet缩减为0:$ocscale--replicas=0machineset-nopenshift-machine-api或者:$oceditmachineset-nopenshift-machine-api等待机器被删除。

3.根据需要扩展MachineSet:$ocscale--replicas=2machineset-nopenshift-machine-api或者:$oceditmachineset-nopenshift-machine-api 24 等待机器启动。
新Machine包含您对MachineSet所做的更改。
第3章修改MACHINESET 25 OpenShiftContainerPlatform4.3机器管理 您可以删除特定的机器。
第4章删除机器 4.1.删除一个特定的机器 您可以删除特定的机器。
先决条件安装OpenShiftContainerPlatform集群:安装OpenShiftCLI(oc)。
以具有cluster-admin权限的用户身份登录oc。
流程
1.查看集群中的机器,找到要删除的机器:$ocgetmachine-nopenshift-machine-api这个命令会以-worker-格式输出机器列表。

2.删除机器:$ocdeletemachine-nopenshift-machine-api 重要 默认情况下,机器控制器会尝试排空在机器上运行的节点,直到成功为止。
在某些情况下,如错误配置了Pod的中断预算,节点排空操作可能无法成功完成,从而导致机器无法被删除。
您可以在特定机器上使用"machine.openshift.io/excludenode-draining"注解来跳过排空节点的过程。
如果要删除的机器属于MachineSet,则会立即创建一个新机器来满足指定的副本数要求。
26 第5章将自动扩展应用到OPENSHIFTCONTAINERPLATFORM集群 第5章将自动扩展应用到OPENSHIFTCONTAINERPLATFORM集群 在OpenShiftContainerPlatform集群中应用自动扩展功能涉及到部署ClusterAutoscaler,然后为集群中每种Machine类型部署MachineAutoscaler。
重要您只能在机器API正常工作的集群中配置ClusterAutoscaler。
5.1.关于CLUSTERAUTOSCALER ClusterAutoscaler会调整OpenShiftContainerPlatform集群的大小,以满足其当前的部署需求。
它使用es样式的声明性参数来提供基础架构管理,而且这种管理不依赖于特定云提供商的对象。
ClusterAutoscaler会在集群范围内有效,不与特定的命名空间相关联。
当由于资源不足而无法在任何当前节点上调度Pod时,或者在需要另一个节点来满足部署需求时,ClusterAutoscaler会增加集群的大小。
ClusterAutoscaler不会将集群资源增加到超过您指定的限制。
重要确保您所创建的ClusterAutoscaler定义中的maxNodesTotal值足够大,足以满足计算集群中可能的机器总数。
此值必须包含controlplane机器的数量以及可扩展至的机器数量。
如果相当长的一段时间内都不需要某些节点,例如集群资源使用率较低并且所有重要Pod都可以安置在其他节点上时,ClusterAutoscaler会减小集群的大小。
如果节点上存在以下类型的Pod,ClusterAutoscaler不会删除该节点: 具有限制性PodDisruptionBudget(PDB)的Pod。
在默认情况下,Kube系统Pod不在节点上运行。
没有PDB或PDB限制性太强的Kube系统Pod。
不受控制器对象(如Deployment、ReplicaSet或StatefulSet)支持的Pod。
具有本地存储的Pod。
因为缺乏资源、节点选择器或关联性不兼容或有匹配的反关联性等原因而无法移至其他位置的Pod。
具有"es.io/safe-to-evict":"false"注解的Pod,除非同时也具有"es.io/safe-to-evict":"true”注解。
在配置ClusterAutoscaler时,还会有其他的使用限制:不要直接修改位于自动扩展节点组中的节点。
同一节点组中的所有节点具有相同的容量和标签,并且运行相同的系统Pod。
指定适合您的Pod的请求。
27 OpenShiftContainerPlatform4.3机器管理 如果需要防止Pod被过快删除,请配置适当的PDB。
确认您的云提供商配额足够大,能够支持您配置的最大节点池。
不要运行其他节点组自动扩展器,特别是云提供商提供的自动扩展器。
HorizontalPodAutoscaler(HPA)和ClusterAutoscaler以不同的方式修改集群资源。
HPA根据当前的CPU负载更改部署或ReplicaSet的副本数。
如果负载增加,HPA会创建新的副本,不论集群可用的资源量如何。
如果没有足够的资源,ClusterAutoscaler会添加资源,使HPA创建的Pod可以运行。
如果负载减少,HPA会停止一些副本。
如果此操作导致某些节点利用率低下或完全为空,ClusterAutoscaler会删除不必要的节点。
ClusterAutoscaler会考虑Pod优先级。
如果集群没有足够的资源,则“Pod优先级和抢占”功能可根据优先级调度Pod,但ClusterAutoscaler会确保集群具有运行所有Pod需要的资源。
为满足这两个功能,ClusterAutoscaler包含一个优先级截止函数。
您可以使用此截止函数来调度“尽力而为”的Pod,它们不会使ClusterAutoscaler增加资源,而是仅在有可用备用资源时运行。
优先级低于截止值的Pod不会导致集群扩展或阻止集群缩减。
系统不会添加新节点来运行Pod,并且可能会删除运行这些Pod的节点来释放资源。
5.2.关于MACHINEAUTOSCALER MachineAutoscaler会调整您在OpenShiftContainerPlatform集群中部署的MachineSet中的Machine数量。
您可以扩展默认的workerMachineSet,以及您创建的所有其他MachineSet。
当集群没有足够资源来支持更多部署时,MachineAutoscaler会增加Machine。
对MachineAutoscaler资源中的值(如最小或最大实例数量)的任何修改都会直接应用到目标MachineSet。
重要 您必须部署MachineAutoscaler才能让ClusterAutoscaler扩展您的机器。
ClusterAutoscaler使用MachineAutoscaler设置的MachineSet注解来确定它可以扩展的资源。
如果您在没有定义MachineAutoscaler的情况下定义ClusterAutoscaler,ClusterAutoscaler永远不会扩展您的集群。
5.3.配置CLUSTERAUTOSCALER 首先,部署ClusterAutoscaler来管理OpenShiftContainerPlatform集群中的资源自动扩展。
注意 由于ClusterAutoscaler作用到整个集群,因此只能为该集群创建一个ClusterAutoscaler。
5.3.1.ClusterAutoscaler资源定义 此ClusterAutoscaler资源定义显示ClusterAutoscaler的参数和示例值。
apiVersion:"autoscaling.openshift.io/v1"kind:"ClusterAutoscaler"metadata: name:"default"spec: podPriorityThreshold:-101resourceLimits: 28 第5章将自动扩展应用到OPENSHIFTCONTAINERPLATFORM集群 maxNodesTotal:242cores: min:83max:1284memory:min:45max:2566gpus:-type:/gpu7 min:08max:169-type:/gpu10min:011max:412scaleDown:13enabled:true14delayAfterAdd:10m15delayAfterDelete:5m16delayAfterFailure:30s17unneededTime:60s18 1指定Pod必须超过哪一优先级才能让ClusterAutoscaler部署更多节点。
输入一个32位整数值。
podPriorityThreshold值将与您分配给每个Pod的PriorityClass值进行比较。
2指定要部署的最大节点数。
这个值是集群中部署的机器总数,而不仅仅是自动扩展器控制的机器。
确保这个值足够大,足以满足所有controlplane和计算机器以及您在MachineAutoscaler资源中指定的副本总数。
3指定要部署的最小内核数。
4指定要部署的最大内核数。
5指定每个节点的最小内存量,以GiB为单位。
6指定每个节点的最大内存量,以GiB为单位。
710(可选)指定要部署的GPU节点的类型。
只有/gpu和/gpu是有效的类型。
811指定要部署的最小GPU数。
912指定要部署的最大GPU数。
13在此部分中,您可以指定每个操作要等待的时长,可以使用任何有效的ParseDuration间隔,包括ns、us、ms、s、m和h。
14指定ClusterAutoscaler能否删除不必要的节点。
15(可选)指定在最近添加节点之后要等待多久才能删除节点。
如果不指定值,则使用默认值10m。
16指定在最近删除节点之后要等待多久才能删除节点。
如果不指定值,则使用默认值10s。
17指定在发生缩减失败之后要等待多久才能删除节点。
如果不指定值,则使用默认值3m。
18指定要经过多长时间之后,不需要的节点才符合删除条件。
如果不指定值,则使用默认值10m。
29 OpenShiftContainerPlatform4.3机器管理 5.3.2.部署ClusterAutoscaler 为了部署ClusterAutoscaler,需要创建一个ClusterAutoscaler资源实例。
流程
1.为ClusterAutoscaler资源创建一个YAML文件,其中包含自定义的资源定义。

2.在集群中创建资源: $occreate-f.yaml1 1是您自定义的资源文件的名称。
5.4.后续步骤 配置ClusterAutoscaler后,必须至少配置一个MachineAutoscaler。
5.5.配置MACHINEAUTOSCALER 部署ClusterAutoscaler后,请部署MachineAutoscaler资源来引用用于扩展集群的MachineSet。
重要部署ClusterAutoscaler资源后,您必须至少部署一个MachineAutoscaler资源。
注意您必须为每个MachineSet配置单独的资源。
请记住,每个地区中的MachineSet都不同,因此请考虑是否要在多个地区中启用机器扩展。
您要扩展的MachineSet中必须至少有一台机器。
5.5.1.MachineAutoscaler资源定义 此MachineAutoscaler资源定义显示了MachineAutoscaler的参数和示例值。
apiVersion:"autoscaling.openshift.io/v1beta1"kind:"MachineAutoscaler"metadata: name:"worker-us-east-1a"1namespace:"openshift-machine-api"spec:minReplicas:12maxReplicas:123scaleTargetRef:4 apiVersion:machine.openshift.io/v1beta1kind:MachineSet5name:worker-us-east-1a6 指定MachineAutoscaler名称。
为了更容易识别此MachineAutoscaler会扩展哪些MachineSet, 30 第5章将自动扩展应用到OPENSHIFTCONTAINERPLATFORM集群1指定MachineAutoscaler名称。
为了更容易识别此MachineAutoscaler会扩展哪些MachineSet, 请指定或注明要扩展的MachineSet的名称。
MachineSet名称采用以下形式:-2指定在ClusterAutoscaler启动集群扩展后必须保留在指定AWS区域中的指定类型的最小Machine数量。
不要将此值设置为
0。
3指定ClusterAutoscaler初始化集群扩展后可在指定AWS区域中部署的指定类型的最大Machine数量。
确保ClusterAutoscaler定义中的maxNodesTotal值足够大,以便MachineAutoscaler可以部署这个数量的机器。
4在这一部分,请提供用于描述要扩展的现有MachineSet的值。
5kind参数值始终为MachineSet。
6name值必须与现有MachineSet的名称匹配,如metadata.name参数值中所示。
5.5.2.部署MachineAutoscaler 要部署MachineAutoscaler,请创建MachineAutoscaler资源的实例。
流程
1.为MachineAutoscaler资源创建一个YAML文件,其中包含自定义的资源定义。

2.在集群中创建资源: $occreate-f.yaml11是您自定义的资源文件的名称。
5.6.其他资源 如需有关Pod优先级的更多信息,请参阅在OpenShiftContainerPlatform的Pod调度决策中纳入Pod优先级。
31 OpenShiftContainerPlatform4.3机器管理 第6章创建基础架构MACHINESET 您可以创建一个MachineSet来仅托管基础架构组件。
将特定的es标签应用于这些Machine,然后将基础架构组件更新为仅在那些Machine上运行。
这些基础架构节点不计入运行环境所需的订阅总数中。
重要 与早期版本的OpenShiftContainerPlatform不同,您不能将基础架构组件移到主控(master)Machine。
要移动这些组件,必须创建新的MachineSet。
6.1.OPENSHIFTCONTAINERPLATFORM基础架构组件 以下OpenShiftContainerPlatform组件是基础架构组件:在主控机上运行的es和OpenShiftContainerPlatformcontrolplane服务默认路由器 容器镜像registry集群指标收集或监控服务 集群聚合日志 服务代理 运行任何其他容器、Pod或组件的所有节点都需要是您的订阅可涵盖的worker节点。
6.2.为生产环境创建基础架构MACHINESET 在生产部署中,至少部署三个MachineSet来容纳基础架构组件。
日志记录聚合解决方案和服务网格都部署Elasticsearch,而且Elasticsearch需要三个安装到不同节点上的实例。
为获得高可用性,安装会将这些节点部署到不同的可用区。
由于每个可用区需要不同的MachineSet,因此至少创建三个MachineSet。
6.2.1.为不同的云创建MachineSet 将示例MachineSet用于您的云。
6.2.1.1.AWS上MachineSet自定义资源的YAML示例此YAML示例定义了一个在us-east-1aAmazonWebServices(AWS)区域中运行的MachineSet,并创建通过es.io/:""标记的节点。
在本例中,是基础架构ID标签,该标签基于您在置备集群时设定的集群ID,而则是要添加的节点标签。
apiVersion:machine.openshift.io/v1beta1kind:MachineSetmetadata: labels:machine.openshift.io/cluster-api-cluster:1 name:--2namespace:openshift-machine-api 32 第6章创建基础架构MACHINESET spec:replicas:1selector:matchLabels:machine.openshift.io/cluster-api-cluster:3machine.openshift.io/cluster-api-machineset:--4template:metadata:labels:machine.openshift.io/cluster-api-cluster:5machine.openshift.io/cluster-api-machine-role:6machine.openshift.io/cluster-api-machine-type:7machine.openshift.io/cluster-api-machineset:--8spec:metadata:labels:es.io/:""9providerSpec:value:ami:id:ami-046fe691f52a953f910apiVersion:awsproviderconfig.openshift.io/v1beta1blockDevices:-ebs:iops:0volumeSize:120volumeType:gp2credentialsSecret:name:aws-cloud-credentialsdeviceIndex:0iamInstanceProfile:id:-worker-profile11instanceType:m4.largekind:AWSMachineProviderConfigplacement:availabilityZone:us-east-1aregion:us-east-1securityGroups:-filters:-name:tag:Namevalues:--worker-sg12:filters:-name:tag:Namevalues:--private-us-east-1a13tags:-name:es.io/cluster/14value:owneduserDataSecret:name:worker-user-data 33 OpenShiftContainerPlatform4.3机器管理 13511121314指定基于置备集群时所设置的集群ID的基础架构ID。
如果已安装OpenShiftCLI和jq软件包,您可以通过运行以下命令来获取基础架构ID: $ocget-ojsonpath='{.status.infrastructureName}{"\n"}'infrastructurecluster 248指定基础架构ID、节点标签和区域。
679指定要添加的节点标签。
10为您的OpenShiftContainerPlatform节点的AWS区域指定有效的RedHatEnterpriseLinuxCoreOS(RHCOS)AMI。
6.2.1.2.Azure上MachineSet自定义资源的YAML示例 此YAML示例定义了一个在centralus地区(region)的1MicrosoftAzure区域(zone)中运行的MachineSet,并创建了通过es.io/:""标记的节点。
在本例中,是基础架构ID标签,该标签基于您在置备集群时设定的集群ID,而则是要添加的节点标签。
apiVersion:machine.openshift.io/v1beta1kind:MachineSetmetadata: labels:machine.openshift.io/cluster-api-cluster:1machine.openshift.io/cluster-api-machine-role:2machine.openshift.io/cluster-api-machine-type:3 name:--4namespace:openshift-machine-apispec:replicas:1selector: matchLabels:machine.openshift.io/cluster-api-cluster:5machine.openshift.io/cluster-api-machineset:--6 template:metadata:creationTimestamp:nulllabels:machine.openshift.io/cluster-api-cluster:7machine.openshift.io/cluster-api-machine-role:8machine.openshift.io/cluster-api-machine-type:9machine.openshift.io/cluster-api-machineset:--10spec:metadata:creationTimestamp:nulllabels:es.io/:""11providerSpec:value:apiVersion:azureproviderconfig.openshift.io/v1beta1credentialsSecret:name:azure-cloud-credentials 34 第6章创建基础架构MACHINESET namespace:openshift-machine-apiimage: offer:""publisher:""resourceID:/resourceGroups/rg/providers/Microsoft.Compute/images/sku:""version:""internalLoadBalancer:""kind:AzureMachineProviderSpeclocation:centralusmanagedIdentity:-identity12metadata:creationTimestamp:nullnatRule:workResourceGroup:""osDisk:diskSizeGB:128managedDisk: ountType:Premium_LRSosType:LinuxpublicIP:falsepublicLoadBalancer:""resourceGroup:-rg13sshPrivateKey:""sshPublicKey:"":-1415userDataSecret:name:-user-data16vmSize:Standard_D2s_v3:17zone:"1"18 15712131417指定基于置备集群时所设置的集群ID的基础架构ID。
如果已安装OpenShiftCLI和jq软件包,您可以通过运行以下命令来获取基础架构ID: $ocget-ojsonpath='{.status.infrastructureName}{"\n"}'infrastructurecluster 2389111516指定要添加的节点标签。
4610指定基础架构ID、节点标签和地区。
18指定您所在地区(region)内要放置Machine的区域(zone)。
确保您的地区支持您指定的区域。
6.2.1.3.GCP上MachineSet自定义资源的YAML示例 此YAML示例定义了一个在GoogleCloudPlatform(GCP)中运行的MachineSet,并创建通过es.io/:""标记的节点。
在本例中,是基础架构ID标签,该标签基于您在置备集群时设定的集群ID,而则是要添加的节点标签。
apiVersion:machine.openshift.io/v1beta1 35 OpenShiftContainerPlatform4.3机器管理 kind:MachineSetmetadata: labels:machine.openshift.io/cluster-api-cluster:1 name:-w-a2namespace:openshift-machine-apispec:replicas:1selector: matchLabels:machine.openshift.io/cluster-api-cluster:3machine.openshift.io/cluster-api-machineset:-w-a4 template:metadata:creationTimestamp:nulllabels:machine.openshift.io/cluster-api-cluster:5machine.openshift.io/cluster-api-machine-role:6machine.openshift.io/cluster-api-machine-type:7machine.openshift.io/cluster-api-machineset:-w-a8spec:metadata:labels:es.io/:""9providerSpec:value:apiVersion:gcpprovider.openshift.io/v1beta1canIPForward:falsecredentialsSecret:name:gcp-cloud-credentialsdeletionProtection:falsedisks:-autoDelete:trueboot:trueimage:-rhcos-image10labels:nullsizeGb:128type:pd-ssdkind:GCPMachineProviderSpecmachineType:n1-standard-4metadata:creationTimestamp:workInterfaces:work:work11work:-12projectID:13region:us-central1ounts:-email:-w@1415scopes:-/auth/cloud-platformtags:--16 36 第6章创建基础架构MACHINESET userDataSecret:name:worker-user-data zone:us-central1-a 123458101114指定基于置备集群时所设置的集群ID的基础架构ID。
如果已安装OpenShiftCLI和jq软件包,您可以通过运行以下命令来获取基础架构ID: $ocget-ojsonpath='{.status.infrastructureName}{"\n"}'infrastructurecluster 1216指定基础架构ID和节点标签。
679指定要添加的节点标签。
1315指定用于集群的GCP项目的名称。
6.2.2.创建MachineSet 除了安装程序创建的MachineSet之外,还可创建自己的MachineSet来动态管理您选择的特定工作负载的机器计算资源。
先决条件部署一个OpenShiftContainerPlatform集群。
安装OpenShiftCLI(oc)。
以具有cluster-admin权限的用户身份登录oc。
流程
1.如示例所示,创建一个包含MachineSet自定义资源示例的新YAML文件,并将其命名为.yaml。
确保设置参数值。
a.如果不确定要为特定字段设置哪个值,您可以从集群中检查现有的MachineSet。
$ocgetmachinesets-nopenshift-machine-api NAME DESIREDCURRENT agl030519-vplxk-worker-us-east-1a11 agl030519-vplxk-worker-us-east-1b11 agl030519-vplxk-worker-us-east-1c11 agl030519-vplxk-worker-us-east-1d00 agl030519-vplxk-worker-us-east-1e00 agl030519-vplxk-worker-us-east-1f00 READY111111 AVAILABLE55m55m55m 55m55m55m AGE b.检查特定MachineSet的值: $ocgetmachineset-n\openshift-machine-api-oyaml .... template: 37 OpenShiftContainerPlatform4.3机器管理 metadata:labels:machine.openshift.io/cluster-api-cluster:agl030519-vplxk1machine.openshift.io/cluster-api-machine-role:worker2machine.openshift.io/cluster-api-machine-type:workermachine.openshift.io/cluster-api-machineset:agl030519-vplxk-worker-us-east-1a 1集群ID。
2默认节点标签。

2.创建新MachineSet: $occreate-f.yaml
3.查看MachineSet列表: $ocgetmachineset-nopenshift-machine-api NAME DESIREDCURRENTREADY agl030519-vplxk-infra-us-east-1a1111 agl030519-vplxk-worker-us-east-1a1111 agl030519-vplxk-worker-us-east-1b1111 agl030519-vplxk-worker-us-east-1c1111 agl030519-vplxk-worker-us-east-1d00 agl030519-vplxk-worker-us-east-1e00 agl030519-vplxk-worker-us-east-1f00 AVAILABLE11m55m55m55m55m55m55m AGE 当新MachineSet可用时,DESIRED和CURRENT的值会匹配。
如果MachineSet不可用,请等待几分钟,然后重新运行命令。

4.有新的MachineSet可用后,检查机器及其引用的节点的状态: $ocdescribemachine-nopenshift-machine-api 例如: $ocdescribemachineagl030519-vplxk-infra-us-east-1a-nopenshift-machine-api status:addresses:-address:10.0.133.18type:InternalIP-address:""type:ExternalDNS-address:ip-10-0-133-18.ec2.internaltype:InternalDNSlastUpdated:"2019-05-03T10:38:17Z"nodeRef:kind:Nodename:ip-10-0-133-18.ec2.internaluid:71fb8d75-6d8f-11e9-9ff3-0e3f103c7cd8providerStatus: 38 第6章创建基础架构MACHINESET apiVersion:awsproviderconfig.openshift.io/v1beta1conditions:-lastProbeTime:"2019-05-03T10:34:31Z" lastTransitionTime:"2019-05-03T10:34:31Z"message:machineessfullycreatedreason:eededstatus:"True"type:MachineCreationinstanceId:i-09ca0701454124294instanceState:runningkind:AWSMachineProviderStatus
5.查看新节点,并确认新节点具有您指定的标签: $ocgetnode--show-labels 查看命令输出,并确认es.io/列在LABELS列表中。
注意 对MachineSet的任何更改都不会应用到MachineSet拥有的现有机器。
例如,对现有MachineSet编辑或添加的标签不会传播到与该MachineSet关联的现有机器和节点。
后续步骤如果需要其他可用区中的MachineSet,请重复此过程来创建更多MachineSet。
6.3.将资源移到基础架构MACHINESET 默认情况下,您的集群中已部署了某些基础架构资源。
您可以将它们移至您创建的基础架构MachineSet。
6.3.1.移动路由器 您可以将路由器Pod部署到不同的MachineSet。
默认情况下,该Pod部署到worker节点。
先决条件 在OpenShiftContainerPlatform集群中配置额外的MachineSet。
流程
1.查看路由器Operator的IngressController自定义资源: $ocgetingresscontrollerdefault-nopenshift-ingress-operator-oyaml 命令输出类似于以下文本: apiVersion:operator.openshift.io/v1kind:IngressControllermetad

标签: #镜像文件 #应用程序 #文件夹 #压缩文件 #压缩文件 #文件 #程序 #删了