8장. 인프라 머신 세트 생성
머신 API가 작동하는 클러스터에서만 고급 머신 관리 및 스케일링 기능을 사용할 수 있습니다. 사용자 프로비저닝 인프라가 있는 클러스터에는 Machine API를 사용하기 위해 추가 검증 및 구성이 필요합니다.
인프라 플랫폼 유형이 none인 클러스터는 Machine API를 사용할 수 없습니다. 이 제한은 클러스터에 연결된 컴퓨팅 머신이 기능을 지원하는 플랫폼에 설치된 경우에도 적용됩니다. 설치 후에는 이 매개변수를 변경할 수 없습니다.
클러스터의 플랫폼 유형을 보려면 다음 명령을 실행합니다.
$ oc get infrastructure cluster -o jsonpath='{.status.platform}'
인프라 머신 세트를 사용하여 기본 라우터, 통합 컨테이너 이미지 레지스트리 및 클러스터 지표 및 모니터링과 같은 인프라 구성 요소만 호스팅하는 머신을 생성할 수 있습니다. 이러한 인프라 머신은 환경을 실행하는 데 필요한 총 서브스크립션 수에 포함되지 않습니다.
8.1. OpenShift Container Platform 인프라 구성 요소 링크 복사링크가 클립보드에 복사되었습니다!
각 자체 관리형 Red Hat OpenShift 서브스크립션에는 OpenShift Container Platform 및 기타 OpenShift 관련 구성 요소에 대한 권한이 포함되어 있습니다. 이러한 권한은 OpenShift Container Platform 컨트롤 플레인 및 인프라 워크로드를 실행하는 데 포함되며 크기 조정 중에 고려하지 않아도 됩니다.
인프라 노드로 자격을 부여하고 포함된 인타이틀먼트를 사용하려면 최종 사용자 애플리케이션의 일부가 아닌 클러스터를 지원하는 구성 요소만 해당 인스턴스에서 실행할 수 있습니다. 예를 들면 다음과 같은 구성 요소가 있습니다.
- Kubernetes 및 OpenShift Container Platform 컨트롤 플레인 서비스
- 기본 라우터
- 통합된 컨테이너 이미지 레지스트리
- HAProxy 기반 Ingress 컨트롤러
- 사용자 정의 프로젝트를 모니터링하기위한 구성 요소를 포함한 클러스터 메트릭 수집 또는 모니터링 서비스
- 클러스터 집계 로깅
- Red Hat Quay
- Red Hat OpenShift Data Foundation
- Red Hat Advanced Cluster Security for Kubernetes
- Red Hat Advanced Cluster Security for Kubernetes
- Red Hat OpenShift GitOps
- Red Hat OpenShift Pipelines
- Red Hat OpenShift Service Mesh
다른 컨테이너, Pod 또는 구성 요소를 실행하는 모든 노드는 서브스크립션을 적용해야 하는 작업자 노드입니다.
인프라 노드 및 인프라 노드에서 실행할 수 있는 구성 요소에 대한 자세한 내용은 엔터프라이즈 Kubernetes 문서의 OpenShift 크기 조정 및 서브스크립션 가이드의 "Red Hat OpenShift 컨트롤 플레인 및 인프라 노드" 섹션을 참조하십시오.
인프라 노드를 생성하려면 머신 세트를 사용하거나노드에 레이블을 지정하거나 머신 구성 풀을 사용할 수 있습니다.
8.1.1. 다른 클라우드의 인프라 머신 세트 생성 링크 복사링크가 클립보드에 복사되었습니다!
클라우드에 샘플 컴퓨팅 머신 세트를 사용합니다.
8.1.1.1. AWS에서 컴퓨팅 머신 세트 사용자 정의 리소스의 샘플 YAML 링크 복사링크가 클립보드에 복사되었습니다!
샘플 YAML은 us-east-1a AWS(Amazon Web Services) 로컬 영역에서 실행되는 컴퓨팅 머신 세트를 정의하고 node-role.kubernetes.io/infra: "" 로 레이블이 지정된 노드를 생성합니다.
이 샘플에서 <infrastructure_id>는 클러스터를 프로비저닝할 때 설정한 클러스터 ID를 기반으로 하는 인프라 ID 레이블이며 <infra>는 추가할 노드 레이블입니다.
apiVersion: machine.openshift.io/v1beta1
kind: MachineSet
metadata:
labels:
machine.openshift.io/cluster-api-cluster: <infrastructure_id>
name: <infrastructure_id>-infra-<zone>
namespace: openshift-machine-api
spec:
replicas: 1
selector:
matchLabels:
machine.openshift.io/cluster-api-cluster: <infrastructure_id>
machine.openshift.io/cluster-api-machineset: <infrastructure_id>-infra-<zone>
template:
metadata:
labels:
machine.openshift.io/cluster-api-cluster: <infrastructure_id>
machine.openshift.io/cluster-api-machine-role: infra
machine.openshift.io/cluster-api-machine-type: infra
machine.openshift.io/cluster-api-machineset: <infrastructure_id>-infra-<zone>
spec:
metadata:
labels:
node-role.kubernetes.io/infra: ""
providerSpec:
value:
ami:
id: ami-046fe691f52a953f9
apiVersion: machine.openshift.io/v1beta1
blockDevices:
- ebs:
iops: 0
volumeSize: 120
volumeType: gp2
credentialsSecret:
name: aws-cloud-credentials
deviceIndex: 0
iamInstanceProfile:
id: <infrastructure_id>-worker-profile
instanceType: m6i.large
kind: AWSMachineProviderConfig
placement:
availabilityZone: <zone>
region: <region>
securityGroups:
- filters:
- name: tag:Name
values:
- <infrastructure_id>-node
- filters:
- name: tag:Name
values:
- <infrastructure_id>-lb
subnet:
filters:
- name: tag:Name
values:
- <infrastructure_id>-private-<zone>
tags:
- name: kubernetes.io/cluster/<infrastructure_id>
value: owned
- name: <custom_tag_name>
value: <custom_tag_value>
userDataSecret:
name: worker-user-data
taints:
- key: node-role.kubernetes.io/infra
effect: NoSchedule
- 1
- 클러스터를 프로비저닝할 때 설정한 클러스터 ID를 기반으로 하는 인프라 ID를 지정합니다. OpenShift CLI 패키지가 설치되어 있으면 다음 명령을 실행하여 인프라 ID를 얻을 수 있습니다.
$ oc get -o jsonpath='{.status.infrastructureName}{"\n"}' infrastructure cluster - 2
- 인프라 ID,
infra역할 노드 레이블 및 영역을 지정합니다. - 3
infra역할 노드 레이블을 지정합니다.- 4
- OpenShift Container Platform 노드의 AWS 영역에 유효한 RHCOS(Red Hat Enterprise Linux CoreOS) Amazon 머신 이미지(AMI)를 지정합니다. AWS Marketplace 이미지를 사용하려면 해당 리전의 AMI ID를 받으려면 AWS Marketplace 에서 OpenShift Container Platform 서브스크립션을 완료해야 합니다.
$ oc -n openshift-machine-api \ -o jsonpath='{.spec.template.spec.providerSpec.value.ami.id}{"\n"}' \ get machineset/<infrastructure_id>-<role>-<zone> - 5
- 영역 이름을 지정합니다(예:
us-east-1a). - 6
- 리전을 지정합니다(예:
us-east-1). - 7
- 인프라 ID 및 영역을 지정합니다.
- 8
- 선택 사항: 클러스터의 사용자 지정 태그 데이터를 지정합니다. 예를 들어
Email:admin-email@example.com의name:value쌍을 지정하여 관리자 연락처 이메일 주소를 추가할 수 있습니다.참고install-config.yml파일에서 설치 중에 사용자 지정 태그를 지정할 수도 있습니다.install-config.yml파일과 머신 세트에 동일한name데이터가 있는 태그가 포함된 경우 머신 세트의 태그 값이install-config.yml파일의 태그 값보다 우선합니다. - 9
- 사용자 워크로드가
infra노드에서 예약되지 않도록 테인트를 지정합니다.참고인프라 노드에
NoSchedule테인트를 추가하면 해당 노드에서 실행 중인 기존 DNS Pod가misscheduled로 표시됩니다.misscheduledDNS Pod에서 허용 오차를 삭제하거나 추가해야 합니다.
AWS에서 실행되는 머신 세트는 보장되지 않는 Spot 인스턴스를 지원합니다. AWS의 온 디맨드 인스턴스에 비해 저렴한 가격으로 Spot 인스턴스를 사용하여 비용을 절약할 수 있습니다. spotMarketOptions 를 MachineSet YAML 파일에 추가하여 Spot 인스턴스를 구성합니다.
8.1.1.2. Azure에서 컴퓨팅 머신 세트 사용자 정의 리소스의 샘플 YAML 링크 복사링크가 클립보드에 복사되었습니다!
이 샘플 YAML은 리전의 1 Microsoft Azure 영역에서 실행되는 컴퓨팅 머신 세트를 정의하고 node-role.kubernetes.io/infra: "" 로 레이블이 지정된 노드를 만듭니다.
이 샘플에서 < infrastructure_id >는 클러스터를 프로비저닝할 때 설정한 클러스터 ID를 기반으로 하는 인프라 ID 레이블이며 infra 는 추가할 노드 레이블입니다.
apiVersion: machine.openshift.io/v1beta1
kind: MachineSet
metadata:
labels:
machine.openshift.io/cluster-api-cluster: <infrastructure_id>
machine.openshift.io/cluster-api-machine-role: infra
machine.openshift.io/cluster-api-machine-type: infra
name: <infrastructure_id>-infra-<region>
namespace: openshift-machine-api
spec:
replicas: 1
selector:
matchLabels:
machine.openshift.io/cluster-api-cluster: <infrastructure_id>
machine.openshift.io/cluster-api-machineset: <infrastructure_id>-infra-<region>
template:
metadata:
creationTimestamp: null
labels:
machine.openshift.io/cluster-api-cluster: <infrastructure_id>
machine.openshift.io/cluster-api-machine-role: infra
machine.openshift.io/cluster-api-machine-type: infra
machine.openshift.io/cluster-api-machineset: <infrastructure_id>-infra-<region>
spec:
metadata:
creationTimestamp: null
labels:
machine.openshift.io/cluster-api-machineset: <machineset_name>
node-role.kubernetes.io/infra: ""
providerSpec:
value:
apiVersion: machine.openshift.io/v1beta1
credentialsSecret:
name: azure-cloud-credentials
namespace: openshift-machine-api
image:
offer: ""
publisher: ""
resourceID: /resourceGroups/<infrastructure_id>-rg/providers/Microsoft.Compute/galleries/gallery_<infrastructure_id>/images/<infrastructure_id>-gen2/versions/latest
sku: ""
version: ""
internalLoadBalancer: ""
kind: AzureMachineProviderSpec
location: <region>
managedIdentity: <infrastructure_id>-identity
metadata:
creationTimestamp: null
natRule: null
networkResourceGroup: ""
osDisk:
diskSizeGB: 128
managedDisk:
storageAccountType: Premium_LRS
osType: Linux
publicIP: false
publicLoadBalancer: ""
resourceGroup: <infrastructure_id>-rg
sshPrivateKey: ""
sshPublicKey: ""
tags:
<custom_tag_name_1>: <custom_tag_value_1>
<custom_tag_name_2>: <custom_tag_value_2>
subnet: <infrastructure_id>-<role>-subnet
userDataSecret:
name: worker-user-data
vmSize: Standard_D4s_v3
vnet: <infrastructure_id>-vnet
zone: "1"
taints:
- key: node-role.kubernetes.io/infra
effect: NoSchedule
- 1
- 클러스터를 프로비저닝할 때 설정한 클러스터 ID를 기반으로 하는 인프라 ID를 지정합니다. OpenShift CLI 패키지가 설치되어 있으면 다음 명령을 실행하여 인프라 ID를 얻을 수 있습니다.
$ oc get -o jsonpath='{.status.infrastructureName}{"\n"}' infrastructure cluster다음 명령을 실행하여 서브넷을 가져올 수 있습니다.
$ oc -n openshift-machine-api \ -o jsonpath='{.spec.template.spec.providerSpec.value.subnet}{"\n"}' \ get machineset/<infrastructure_id>-worker-centralus1다음 명령을 실행하여 vnet을 가져올 수 있습니다.
$ oc -n openshift-machine-api \ -o jsonpath='{.spec.template.spec.providerSpec.value.vnet}{"\n"}' \ get machineset/<infrastructure_id>-worker-centralus1 - 2
infra노드 레이블을 지정합니다.- 3
- 인프라 ID, 인프라 노드
레이블및 리전을 지정합니다. - 4
- 컴퓨팅 머신 세트의 이미지 세부 정보를 지정합니다. Azure Marketplace 이미지를 사용하려면 "Azure Marketplace 오퍼링 사용"을 참조하십시오.
- 5
- 인스턴스 유형과 호환되는 이미지를 지정합니다. 설치 프로그램에서 생성한 Hyper-V generation V2 이미지에는
-gen2접미사가 있지만 V1 이미지의 접미사 없이 이름이 동일합니다. - 6
- 머신을 배치할 리전을 지정합니다.
- 7
- 선택 사항: 머신 세트에서 사용자 지정 태그를 지정합니다. <
custom_tag_name> 필드에 태그 이름과 <custom_tag_value> 필드에 해당 태그 값을 입력합니다. - 8
- 머신을 배치할 리전 내 영역을 지정합니다. 해당 리전에서 지정하는 영역을 지원하는지 확인합니다.중요
리전에서 가용성 영역을 지원하는 경우 영역을 지정해야 합니다. 영역을 지정하면 Pod에 영구 볼륨 연결이 필요한 경우 볼륨 노드 유사성 오류가 발생하지 않습니다. 이를 위해 동일한 리전의 각 영역에 대한 컴퓨팅 머신 세트를 생성할 수 있습니다.
- 9
- 사용자 워크로드가 인프라 노드에서 예약되지 않도록 테인트를 지정합니다.참고
인프라 노드에
NoSchedule테인트를 추가하면 해당 노드에서 실행 중인 기존 DNS Pod가misscheduled로 표시됩니다.misscheduledDNS Pod에서 허용 오차를 삭제하거나 추가해야 합니다.
Azure에서 실행되는 머신 세트는 보장되지 않는 Spot 가상 머신을 지원합니다. Azure의 표준 가상 머신에 비해 더 낮은 가격으로 Spot 가상 머신을 사용하여 비용을 절감할 수 있습니다. spotVMOptions 를 MachineSet YAML 파일에 추가하여 Spot 가상 머신을 구성할 수 있습니다.
8.1.1.3. Azure Stack Hub에서 컴퓨팅 머신 세트 사용자 정의 리소스의 샘플 YAML 링크 복사링크가 클립보드에 복사되었습니다!
이 샘플 YAML은 리전의 1 Microsoft Azure 영역에서 실행되는 컴퓨팅 머신 세트를 정의하고 node-role.kubernetes.io/infra: "" 로 레이블이 지정된 노드를 만듭니다.
이 샘플에서 <infrastructure_id>는 클러스터를 프로비저닝할 때 설정한 클러스터 ID를 기반으로 하는 인프라 ID 레이블이며 <infra>는 추가할 노드 레이블입니다.
apiVersion: machine.openshift.io/v1beta1
kind: MachineSet
metadata:
labels:
machine.openshift.io/cluster-api-cluster: <infrastructure_id>
machine.openshift.io/cluster-api-machine-role: <infra>
machine.openshift.io/cluster-api-machine-type: <infra>
name: <infrastructure_id>-infra-<region>
namespace: openshift-machine-api
spec:
replicas: 1
selector:
matchLabels:
machine.openshift.io/cluster-api-cluster: <infrastructure_id>
machine.openshift.io/cluster-api-machineset: <infrastructure_id>-infra-<region>
template:
metadata:
creationTimestamp: null
labels:
machine.openshift.io/cluster-api-cluster: <infrastructure_id>
machine.openshift.io/cluster-api-machine-role: <infra>
machine.openshift.io/cluster-api-machine-type: <infra>
machine.openshift.io/cluster-api-machineset: <infrastructure_id>-infra-<region>
spec:
metadata:
creationTimestamp: null
labels:
node-role.kubernetes.io/infra: ""
taints:
- key: node-role.kubernetes.io/infra
effect: NoSchedule
providerSpec:
value:
apiVersion: machine.openshift.io/v1beta1
availabilitySet: <availability_set>
credentialsSecret:
name: azure-cloud-credentials
namespace: openshift-machine-api
image:
offer: ""
publisher: ""
resourceID: /resourceGroups/<infrastructure_id>-rg/providers/Microsoft.Compute/images/<infrastructure_id>
sku: ""
version: ""
internalLoadBalancer: ""
kind: AzureMachineProviderSpec
location: <region>
managedIdentity: <infrastructure_id>-identity
metadata:
creationTimestamp: null
natRule: null
networkResourceGroup: ""
osDisk:
diskSizeGB: 128
managedDisk:
storageAccountType: Premium_LRS
osType: Linux
publicIP: false
publicLoadBalancer: ""
resourceGroup: <infrastructure_id>-rg
sshPrivateKey: ""
sshPublicKey: ""
subnet: <infrastructure_id>-<role>-subnet
userDataSecret:
name: worker-user-data
vmSize: Standard_DS4_v2
vnet: <infrastructure_id>-vnet
zone: "1"
- 1 5 7 14 16 17 18 21
- 클러스터를 프로비저닝할 때 설정한 클러스터 ID를 기반으로 하는 인프라 ID를 지정합니다. OpenShift CLI 패키지가 설치되어 있으면 다음 명령을 실행하여 인프라 ID를 얻을 수 있습니다.
$ oc get -o jsonpath='{.status.infrastructureName}{"\n"}' infrastructure cluster다음 명령을 실행하여 서브넷을 가져올 수 있습니다.
$ oc -n openshift-machine-api \ -o jsonpath='{.spec.template.spec.providerSpec.value.subnet}{"\n"}' \ get machineset/<infrastructure_id>-worker-centralus1다음 명령을 실행하여 vnet을 가져올 수 있습니다.
$ oc -n openshift-machine-api \ -o jsonpath='{.spec.template.spec.providerSpec.value.vnet}{"\n"}' \ get machineset/<infrastructure_id>-worker-centralus1 - 2 3 8 9 11 19 20
<infra>노드 레이블을 지정합니다.- 4 6 10
- 인프라 ID,
<infra>노드 레이블 및 리전을 지정합니다. - 12
- 사용자 워크로드가 인프라 노드에서 예약되지 않도록 테인트를 지정합니다.참고
인프라 노드에
NoSchedule테인트를 추가하면 해당 노드에서 실행 중인 기존 DNS Pod가misscheduled로 표시됩니다.misscheduledDNS Pod에서 허용 오차를 삭제하거나 추가해야 합니다. - 15
- 머신을 배치할 리전을 지정합니다.
- 13
- 클러스터의 가용성 세트를 지정합니다.
- 22
- 머신을 배치할 리전 내 영역을 지정합니다. 해당 리전이 지정한 영역을 지원하는지 확인합니다.
Azure Stack Hub에서 실행되는 머신 세트는 보장되지 않는 Spot 가상 머신을 지원하지 않습니다.
8.1.1.4. IBM Cloud에서 컴퓨팅 머신 세트 사용자 정의 리소스의 샘플 YAML 링크 복사링크가 클립보드에 복사되었습니다!
이 샘플 YAML은 리전의 지정된 IBM Cloud® 영역에서 실행되는 컴퓨팅 머신 세트를 정의하고 node-role.kubernetes.io/infra: "" 로 레이블이 지정된 노드를 생성합니다.
이 샘플에서 <infrastructure_id>는 클러스터를 프로비저닝할 때 설정한 클러스터 ID를 기반으로 하는 인프라 ID 레이블이며 <infra>는 추가할 노드 레이블입니다.
apiVersion: machine.openshift.io/v1beta1
kind: MachineSet
metadata:
labels:
machine.openshift.io/cluster-api-cluster: <infrastructure_id>
machine.openshift.io/cluster-api-machine-role: <infra>
machine.openshift.io/cluster-api-machine-type: <infra>
name: <infrastructure_id>-<infra>-<region>
namespace: openshift-machine-api
spec:
replicas: 1
selector:
matchLabels:
machine.openshift.io/cluster-api-cluster: <infrastructure_id>
machine.openshift.io/cluster-api-machineset: <infrastructure_id>-<infra>-<region>
template:
metadata:
labels:
machine.openshift.io/cluster-api-cluster: <infrastructure_id>
machine.openshift.io/cluster-api-machine-role: <infra>
machine.openshift.io/cluster-api-machine-type: <infra>
machine.openshift.io/cluster-api-machineset: <infrastructure_id>-<infra>-<region>
spec:
metadata:
labels:
node-role.kubernetes.io/infra: ""
providerSpec:
value:
apiVersion: ibmcloudproviderconfig.openshift.io/v1beta1
credentialsSecret:
name: ibmcloud-credentials
image: <infrastructure_id>-rhcos
kind: IBMCloudMachineProviderSpec
primaryNetworkInterface:
securityGroups:
- <infrastructure_id>-sg-cluster-wide
- <infrastructure_id>-sg-openshift-net
subnet: <infrastructure_id>-subnet-compute-<zone>
profile: <instance_profile>
region: <region>
resourceGroup: <resource_group>
userDataSecret:
name: <role>-user-data
vpc: <vpc_name>
zone: <zone>
taints:
- key: node-role.kubernetes.io/infra
effect: NoSchedule
- 1 5 7
- 클러스터를 프로비저닝할 때 설정한 클러스터 ID를 기반으로 하는 인프라 ID입니다. OpenShift CLI 패키지가 설치되어 있으면 다음 명령을 실행하여 인프라 ID를 얻을 수 있습니다.
$ oc get -o jsonpath='{.status.infrastructureName}{"\n"}' infrastructure cluster - 2 3 8 9 16
<infra>노드 레이블입니다.- 4 6 10
- 인프라 ID,
<infra>노드 레이블 및 리전입니다. - 11
- 클러스터 설치에 사용된 사용자 지정 RHCOS(Red Hat Enterprise Linux CoreOS) 이미지입니다.
- 12
- 머신을 배치할 리전 내의 인프라 ID 및 영역입니다. 해당 리전이 지정한 영역을 지원하는지 확인합니다.
- 13
- IBM Cloud® 인스턴스 프로필을 지정합니다.
- 14
- 머신을 배치할 리전을 지정합니다.
- 15
- 시스템 리소스가 배치되는 리소스 그룹입니다. 이는 설치 시 지정된 기존 리소스 그룹 또는 인프라 ID를 기반으로 이름이 지정된 설치 관리자 생성 리소스 그룹입니다.
- 17
- VPC 이름입니다.
- 18
- 머신을 배치할 리전 내 영역을 지정합니다. 해당 리전이 지정한 영역을 지원하는지 확인합니다.
- 19
- 사용자 워크로드가 인프라 노드에서 예약되지 않도록 하는 테인트입니다.참고
인프라 노드에
NoSchedule테인트를 추가하면 해당 노드에서 실행 중인 기존 DNS Pod가misscheduled로 표시됩니다.misscheduledDNS Pod에서 허용 오차를 삭제하거나 추가해야 합니다.
8.1.1.5. Google Cloud에서 컴퓨팅 머신 세트 사용자 정의 리소스의 샘플 YAML 링크 복사링크가 클립보드에 복사되었습니다!
이 샘플 YAML은 Google Cloud에서 실행되는 컴퓨팅 머신 세트를 정의하고 node-role.kubernetes.io/infra: "" 로 레이블이 지정된 노드를 생성합니다. 여기서 infra 는 추가할 노드 레이블입니다.
8.1.1.5.1. OpenShift CLI를 사용하여 얻은 값 링크 복사링크가 클립보드에 복사되었습니다!
다음 예제에서는 OpenShift CLI를 사용하여 클러스터의 일부 값을 가져올 수 있습니다.
- 인프라 ID
<infrastructure_id>문자열은 클러스터를 프로비저닝할 때 설정한 클러스터 ID를 기반으로 하는 인프라 ID입니다. OpenShift CLI 패키지가 설치되어 있으면 다음 명령을 실행하여 인프라 ID를 얻을 수 있습니다.$ oc get -o jsonpath='{.status.infrastructureName}{"\n"}' infrastructure cluster- 이미지 경로
<path_to_image>문자열은 디스크를 생성하는 데 사용된 이미지의 경로입니다. OpenShift CLI가 설치되어 있으면 다음 명령을 실행하여 이미지에 대한 경로를 얻을 수 있습니다.$ oc -n openshift-machine-api \ -o jsonpath='{.spec.template.spec.providerSpec.value.disks[0].image}{"\n"}' \ get machineset/<infrastructure_id>-worker-a
샘플 Google Cloud MachineSet 값
apiVersion: machine.openshift.io/v1beta1
kind: MachineSet
metadata:
labels:
machine.openshift.io/cluster-api-cluster: <infrastructure_id>
name: <infrastructure_id>-w-a
namespace: openshift-machine-api
spec:
replicas: 1
selector:
matchLabels:
machine.openshift.io/cluster-api-cluster: <infrastructure_id>
machine.openshift.io/cluster-api-machineset: <infrastructure_id>-w-a
template:
metadata:
creationTimestamp: null
labels:
machine.openshift.io/cluster-api-cluster: <infrastructure_id>
machine.openshift.io/cluster-api-machine-role: <infra>
machine.openshift.io/cluster-api-machine-type: <infra>
machine.openshift.io/cluster-api-machineset: <infrastructure_id>-w-a
spec:
metadata:
labels:
node-role.kubernetes.io/infra: ""
providerSpec:
value:
apiVersion: machine.openshift.io/v1beta1
canIPForward: false
credentialsSecret:
name: gcp-cloud-credentials
deletionProtection: false
disks:
- autoDelete: true
boot: true
image: <path_to_image>
labels: null
sizeGb: 128
type: pd-ssd
gcpMetadata:
- key: <custom_metadata_key>
value: <custom_metadata_value>
kind: GCPMachineProviderSpec
machineType: n1-standard-4
metadata:
creationTimestamp: null
networkInterfaces:
- network: <infrastructure_id>-network
subnetwork: <infrastructure_id>-worker-subnet
projectID: <project_name>
region: us-central1
serviceAccounts:
- email: <infrastructure_id>-w@<project_name>.iam.gserviceaccount.com
scopes:
- https://www.googleapis.com/auth/cloud-platform
tags:
- <infrastructure_id>-worker
userDataSecret:
name: worker-user-data
zone: us-central1-a
taints:
- key: node-role.kubernetes.io/infra
effect: NoSchedule
- 1
<infrastructure_id>의 경우 클러스터를 프로비저닝할 때 설정한 클러스터 ID를 기반으로 하는 인프라 ID를 지정합니다.- 2
<infra>의 경우<infra>노드 레이블을 지정합니다.- 3
- 현재 컴퓨팅 머신 세트에 사용되는 이미지의 경로를 지정합니다.
Google Cloud Marketplace 이미지를 사용하려면 다음을 사용할 제안을 지정합니다.
-
OpenShift Container Platform:
https://www.googleapis.com/compute/v1/projects/redhat-marketplace-public/global/images/redhat-coreos-ocp-413-x86-64-202305021736 -
OpenShift Platform Plus:
https://www.googleapis.com/compute/v1/projects/redhat-marketplace-public/global/images/redhat-coreos-opp-413-x86-64-202305021736 -
OpenShift Kubernetes Engine:
https://www.googleapis.com/compute/v1/projects/redhat-marketplace-public/global/images/redhat-coreos-oke-413-x86-64-202305021736
-
OpenShift Container Platform:
- 4
- 선택 사항:
key:value쌍 형식으로 사용자 지정 메타데이터를 지정합니다. 사용 사례의 예는 사용자 지정 메타데이터 설정에 대한 Google Cloud 설명서를 참조하십시오. - 5
- &
lt;project_name> 의 경우 클러스터에 사용하는 Google Cloud 프로젝트의 이름을 지정합니다. - 6
- 단일 서비스 계정을 지정합니다. 여러 서비스 계정이 지원되지 않습니다.
- 7
- 사용자 워크로드가 인프라 노드에서 예약되지 않도록 테인트를 지정합니다.참고
인프라 노드에
NoSchedule테인트를 추가하면 해당 노드에서 실행 중인 기존 DNS Pod가misscheduled로 표시됩니다.misscheduledDNS Pod에서 허용 오차를 삭제하거나 추가해야 합니다.
Google Cloud에서 실행되는 머신 세트는 보장되지 않는 선점 가능한 가상 머신 인스턴스를 지원합니다. Google Cloud의 일반 인스턴스에 비해 더 낮은 가격으로 선점 가능한 가상 머신 인스턴스를 사용하여 비용을 절감할 수 있습니다. preemptible 을 MachineSet YAML 파일에 preemptible 추가하여 선점 가능한 가상 머신 인스턴스를 구성할 수 있습니다.
8.1.1.6. Nutanix에서 컴퓨팅 머신 세트 사용자 정의 리소스의 샘플 YAML 링크 복사링크가 클립보드에 복사되었습니다!
이 샘플 YAML은 node-role.kubernetes.io/infra: "" 로 레이블이 지정된 노드를 생성하는 Nutanix 컴퓨팅 머신 세트를 정의합니다.
이 샘플에서 <infrastructure_id>는 클러스터를 프로비저닝할 때 설정한 클러스터 ID를 기반으로 하는 인프라 ID 레이블이며 <infra>는 추가할 노드 레이블입니다.
8.1.1.6.1. OpenShift CLI를 사용하여 얻은 값 링크 복사링크가 클립보드에 복사되었습니다!
다음 예제에서는 OpenShift CLI(oc)를 사용하여 클러스터의 일부 값을 가져올 수 있습니다.
- 인프라 ID
<infrastructure_id>문자열은 클러스터를 프로비저닝할 때 설정한 클러스터 ID를 기반으로 하는 인프라 ID입니다. OpenShift CLI 패키지가 설치되어 있으면 다음 명령을 실행하여 인프라 ID를 얻을 수 있습니다.$ oc get -o jsonpath='{.status.infrastructureName}{"\n"}' infrastructure cluster
apiVersion: machine.openshift.io/v1beta1
kind: MachineSet
metadata:
labels:
machine.openshift.io/cluster-api-cluster: <infrastructure_id>
machine.openshift.io/cluster-api-machine-role: <infra>
machine.openshift.io/cluster-api-machine-type: <infra>
name: <infrastructure_id>-<infra>-<zone>
namespace: openshift-machine-api
annotations:
machine.openshift.io/memoryMb: "16384"
machine.openshift.io/vCPU: "4"
spec:
replicas: 3
selector:
matchLabels:
machine.openshift.io/cluster-api-cluster: <infrastructure_id>
machine.openshift.io/cluster-api-machineset: <infrastructure_id>-<infra>-<zone>
template:
metadata:
labels:
machine.openshift.io/cluster-api-cluster: <infrastructure_id>
machine.openshift.io/cluster-api-machine-role: <infra>
machine.openshift.io/cluster-api-machine-type: <infra>
machine.openshift.io/cluster-api-machineset: <infrastructure_id>-<infra>-<zone>
spec:
metadata:
labels:
node-role.kubernetes.io/infra: ""
providerSpec:
value:
apiVersion: machine.openshift.io/v1
bootType: ""
categories:
- key: <category_name>
value: <category_value>
cluster:
type: uuid
uuid: <cluster_uuid>
credentialsSecret:
name: nutanix-credentials
image:
name: <infrastructure_id>-rhcos
type: name
kind: NutanixMachineProviderConfig
memorySize: 16Gi
project:
type: name
name: <project_name>
subnets:
- type: uuid
uuid: <subnet_uuid>
systemDiskSize: 120Gi
userDataSecret:
name: <user_data_secret>
vcpuSockets: 4
vcpusPerSocket: 1
taints:
- key: node-role.kubernetes.io/infra
effect: NoSchedule
- 1
<infrastructure_id>의 경우 클러스터를 프로비저닝할 때 설정한 클러스터 ID를 기반으로 하는 인프라 ID를 지정합니다.- 2
<infra>노드 레이블을 지정합니다.- 3
- 인프라 ID,
<infra>노드 레이블 및 영역을 지정합니다. - 4
- 클러스터 자동 스케일러에 대한 주석입니다.
- 5
- 컴퓨팅 시스템에서 사용하는 부팅 유형을 지정합니다. 부팅 유형에 대한 자세한 내용은 가상화 된 환경에서 UEFI, Secure Boot 및 TPM 이해를 참조하십시오. 유효한 값은
Legacy,SecureBoot또는UEFI입니다. 기본값은Legacy입니다.참고OpenShift Container Platform 4.17에서
레거시부팅 유형을 사용해야 합니다. - 6
- 컴퓨팅 머신에 적용할 하나 이상의 Nutanix Prism 카테고리를 지정합니다. 이 스탠자에는 Prism Central에 존재하는 카테고리 키-값 쌍에 대한
key및value매개변수가 필요합니다. 카테고리에 대한 자세한 내용은 카테고리 관리를 참조하십시오. - 7
- Nutanix Prism Element 클러스터 구성을 지정합니다. 이 예에서 클러스터 유형은
uuid이므로uuid스탠자가 있습니다. - 8
- 사용할 이미지를 지정합니다. 클러스터의 기존 기본 컴퓨팅 머신 세트의 이미지를 사용합니다.
- 9
- Gi에 클러스터의 메모리 양을 지정합니다.
- 10
- 클러스터에 사용하는 Nutanix 프로젝트를 지정합니다. 이 예에서 프로젝트 유형은
name이므로name스탠자가 있습니다. - 11
- Gi에서 시스템 디스크 크기를 지정합니다.
- 12
openshift-machine-api네임스페이스에 있는 사용자 데이터 YAML 파일에서 시크릿 이름을 지정합니다. 설치 프로그램이 기본 컴퓨팅 시스템 세트에 채우는 값을 사용합니다.- 13
- vCPU 소켓 수를 지정합니다.
- 14
- 소켓당 vCPU 수를 지정합니다.
- 15
- 사용자 워크로드가 인프라 노드에서 예약되지 않도록 테인트를 지정합니다.참고
인프라 노드에
NoSchedule테인트를 추가하면 해당 노드에서 실행 중인 기존 DNS Pod가misscheduled로 표시됩니다.misscheduledDNS Pod에서 허용 오차를 삭제하거나 추가해야 합니다.
8.1.1.7. RHOSP에서 컴퓨팅 머신 세트 사용자 정의 리소스의 샘플 YAML 링크 복사링크가 클립보드에 복사되었습니다!
이 샘플 YAML은 RHOSP(Red Hat OpenStack Platform)에서 실행되는 컴퓨팅 머신 세트를 정의하고 node-role.kubernetes.io/infra: "" 로 레이블이 지정된 노드를 생성합니다.
이 샘플에서 <infrastructure_id>는 클러스터를 프로비저닝할 때 설정한 클러스터 ID를 기반으로 하는 인프라 ID 레이블이며 <infra>는 추가할 노드 레이블입니다.
apiVersion: machine.openshift.io/v1beta1
kind: MachineSet
metadata:
labels:
machine.openshift.io/cluster-api-cluster: <infrastructure_id>
machine.openshift.io/cluster-api-machine-role: <infra>
machine.openshift.io/cluster-api-machine-type: <infra>
name: <infrastructure_id>-infra
namespace: openshift-machine-api
spec:
replicas: <number_of_replicas>
selector:
matchLabels:
machine.openshift.io/cluster-api-cluster: <infrastructure_id>
machine.openshift.io/cluster-api-machineset: <infrastructure_id>-infra
template:
metadata:
labels:
machine.openshift.io/cluster-api-cluster: <infrastructure_id>
machine.openshift.io/cluster-api-machine-role: <infra>
machine.openshift.io/cluster-api-machine-type: <infra>
machine.openshift.io/cluster-api-machineset: <infrastructure_id>-infra
spec:
metadata:
creationTimestamp: null
labels:
node-role.kubernetes.io/infra: ""
taints:
- key: node-role.kubernetes.io/infra
effect: NoSchedule
providerSpec:
value:
apiVersion: machine.openshift.io/v1alpha1
cloudName: openstack
cloudsSecret:
name: openstack-cloud-credentials
namespace: openshift-machine-api
flavor: <nova_flavor>
image: <glance_image_name_or_location>
serverGroupID: <optional_UUID_of_server_group>
kind: OpenstackProviderSpec
networks:
- filter: {}
subnets:
- filter:
name: <subnet_name>
tags: openshiftClusterID=<infrastructure_id>
primarySubnet: <rhosp_subnet_UUID>
securityGroups:
- filter: {}
name: <infrastructure_id>-worker
serverMetadata:
Name: <infrastructure_id>-worker
openshiftClusterID: <infrastructure_id>
tags:
- openshiftClusterID=<infrastructure_id>
trunk: true
userDataSecret:
name: worker-user-data
availabilityZone: <optional_openstack_availability_zone>
- 1 5 7 14 16 17 18 19
- 클러스터를 프로비저닝할 때 설정한 클러스터 ID를 기반으로 하는 인프라 ID를 지정합니다. OpenShift CLI 패키지가 설치되어 있으면 다음 명령을 실행하여 인프라 ID를 얻을 수 있습니다.
$ oc get -o jsonpath='{.status.infrastructureName}{"\n"}' infrastructure cluster - 2 3 8 9 20
<infra>노드 레이블을 지정합니다.- 4 6 10
- 인프라 ID 및
<infra>노드 레이블을 지정합니다. - 11
- 사용자 워크로드가 인프라 노드에서 예약되지 않도록 테인트를 지정합니다.참고
인프라 노드에
NoSchedule테인트를 추가하면 해당 노드에서 실행 중인 기존 DNS Pod가misscheduled로 표시됩니다.misscheduledDNS Pod에서 허용 오차를 삭제하거나 추가해야 합니다. - 12
- MachineSet의 서버 그룹 정책을 설정하려면, 서버 그룹 생성에서 반환된 값을 입력합니다. 대부분의 배포에는
anti-affinity또는soft-anti-affinity정책이 권장됩니다. - 13
- 여러 네트워크에 배포해야 합니다. 여러 네트워크에 배포하는 경우 이 목록에는
primarySubnet값으로 사용되는 네트워크를 포함해야 합니다. - 15
- 노드 엔드포인트를 게시할 RHOSP 서브넷을 지정합니다. 일반적으로 이 서브넷은
install-config.yaml파일에서machineSubnet값으로 사용되는 서브넷과 동일합니다.
8.1.1.8. vSphere에서 컴퓨팅 머신 세트 사용자 정의 리소스의 샘플 YAML 링크 복사링크가 클립보드에 복사되었습니다!
이 샘플 YAML은 VMware vSphere에서 실행되는 컴퓨팅 머신 세트를 정의하고 node-role.kubernetes.io/infra: "" 로 레이블이 지정된 노드를 생성합니다.
이 샘플에서 < infrastructure_id >는 클러스터를 프로비저닝할 때 설정한 클러스터 ID를 기반으로 하는 인프라 ID 레이블이며 infra 는 추가할 노드 레이블입니다.
apiVersion: machine.openshift.io/v1beta1
kind: MachineSet
metadata:
creationTimestamp: null
labels:
machine.openshift.io/cluster-api-cluster: <infrastructure_id>
name: <infrastructure_id>-infra
namespace: openshift-machine-api
spec:
replicas: 1
selector:
matchLabels:
machine.openshift.io/cluster-api-cluster: <infrastructure_id>
machine.openshift.io/cluster-api-machineset: <infrastructure_id>-infra
template:
metadata:
creationTimestamp: null
labels:
machine.openshift.io/cluster-api-cluster: <infrastructure_id>
machine.openshift.io/cluster-api-machine-role: infra
machine.openshift.io/cluster-api-machine-type: infra
machine.openshift.io/cluster-api-machineset: <infrastructure_id>-infra
spec:
metadata:
creationTimestamp: null
labels:
node-role.kubernetes.io/infra: ""
providerSpec:
value:
apiVersion: machine.openshift.io/v1beta1
credentialsSecret:
name: vsphere-cloud-credentials
diskGiB: 120
kind: VSphereMachineProviderSpec
memoryMiB: 8192
metadata:
creationTimestamp: null
network:
devices:
- networkName: "<vm_network_name>"
numCPUs: 4
numCoresPerSocket: 1
snapshot: ""
template: <vm_template_name>
userDataSecret:
name: worker-user-data
workspace:
datacenter: <vcenter_data_center_name>
datastore: <vcenter_datastore_name>
folder: <vcenter_vm_folder_path>
resourcepool: <vsphere_resource_pool>
server: <vcenter_server_ip>
taints:
- key: node-role.kubernetes.io/infra
effect: NoSchedule
- 1
- 클러스터를 프로비저닝할 때 설정한 클러스터 ID를 기반으로 하는 인프라 ID를 지정합니다. OpenShift CLI (
oc) 패키지가 설치되어 있으면 다음 명령을 실행하여 인프라 ID를 얻을 수 있습니다.$ oc get -o jsonpath='{.status.infrastructureName}{"\n"}' infrastructure cluster - 2
- 인프라 ID 및 인프라
노드레이블을 지정합니다. - 3
infra노드 레이블을 지정합니다.- 4
- 컴퓨팅 머신 세트를 배포할 vSphere VM 네트워크를 지정합니다. 이 VM 네트워크는 다른 컴퓨팅 시스템이 클러스터에 상주하는 위치여야 합니다.
- 5
- 사용할 vSphere VM 템플릿 (예:
user-5ddjd-rhcos)을 지정합니다. - 6
- 컴퓨팅 머신 세트를 배포할 vCenter 데이터 센터를 지정합니다.
- 7
- 컴퓨팅 머신 세트를 배포할 vCenter 데이터 저장소를 지정합니다.
- 8
- vCenter의 vSphere VM 폴더에 경로(예:
/dc1/vm/user-inst-5ddjd)를 지정합니다. - 9
- VM의 vSphere 리소스 풀을 지정합니다.
- 10
- vCenter 서버 IP 또는 정규화된 도메인 이름을 지정합니다.
- 11
- 사용자 워크로드가 인프라 노드에서 예약되지 않도록 테인트를 지정합니다.참고
인프라 노드에
NoSchedule테인트를 추가하면 해당 노드에서 실행 중인 기존 DNS Pod가misscheduled로 표시됩니다.misscheduledDNS Pod에서 허용 오차를 삭제하거나 추가해야 합니다.
8.1.2. 컴퓨팅 머신 세트 생성 링크 복사링크가 클립보드에 복사되었습니다!
설치 프로그램에서 생성한 컴퓨팅 머신 세트 외에도 고유한 머신 세트를 생성하여 선택한 특정 워크로드의 머신 컴퓨팅 리소스를 동적으로 관리할 수 있습니다.
사전 요구 사항
- OpenShift Container Platform 클러스터를 배포합니다.
-
OpenShift CLI(
oc)를 설치합니다. -
cluster-admin권한이 있는 사용자로oc에 로그인합니다.
프로세스
컴퓨팅 머신 세트 CR(사용자 정의 리소스) 샘플이 포함된 새 YAML 파일을 만들고
<file_name>.yaml이라는 이름을 지정합니다.<clusterID>및<role>매개 변수 값을 설정해야 합니다.선택 사항: 특정 필드에 설정할 값이 확실하지 않은 경우 클러스터에서 기존 컴퓨팅 머신 세트를 확인할 수 있습니다.
클러스터의 컴퓨팅 머신 세트를 나열하려면 다음 명령을 실행합니다.
$ oc get machinesets -n openshift-machine-api출력 예
NAME DESIRED CURRENT READY AVAILABLE AGE agl030519-vplxk-worker-us-east-1a 1 1 1 1 55m agl030519-vplxk-worker-us-east-1b 1 1 1 1 55m agl030519-vplxk-worker-us-east-1c 1 1 1 1 55m agl030519-vplxk-worker-us-east-1d 0 0 55m agl030519-vplxk-worker-us-east-1e 0 0 55m agl030519-vplxk-worker-us-east-1f 0 0 55m특정 컴퓨팅 머신 세트 CR(사용자 정의 리소스)의 값을 보려면 다음 명령을 실행합니다.
$ oc get machineset <machineset_name> \ -n openshift-machine-api -o yaml출력 예
apiVersion: machine.openshift.io/v1beta1 kind: MachineSet metadata: labels: machine.openshift.io/cluster-api-cluster: <infrastructure_id>1 name: <infrastructure_id>-<role>2 namespace: openshift-machine-api spec: replicas: 1 selector: matchLabels: machine.openshift.io/cluster-api-cluster: <infrastructure_id> machine.openshift.io/cluster-api-machineset: <infrastructure_id>-<role> template: metadata: labels: machine.openshift.io/cluster-api-cluster: <infrastructure_id> machine.openshift.io/cluster-api-machine-role: <role> machine.openshift.io/cluster-api-machine-type: <role> machine.openshift.io/cluster-api-machineset: <infrastructure_id>-<role> spec: providerSpec:3 ...
다음 명령을 실행하여
MachineSetCR을 생성합니다.$ oc create -f <file_name>.yaml
검증
다음 명령을 실행하여 컴퓨팅 머신 세트 목록을 확인합니다.
$ oc get machineset -n openshift-machine-api출력 예
NAME DESIRED CURRENT READY AVAILABLE AGE agl030519-vplxk-infra-us-east-1a 1 1 1 1 11m agl030519-vplxk-worker-us-east-1a 1 1 1 1 55m agl030519-vplxk-worker-us-east-1b 1 1 1 1 55m agl030519-vplxk-worker-us-east-1c 1 1 1 1 55m agl030519-vplxk-worker-us-east-1d 0 0 55m agl030519-vplxk-worker-us-east-1e 0 0 55m agl030519-vplxk-worker-us-east-1f 0 0 55m새 컴퓨팅 머신 세트를 사용할 수 있으면
DESIRED및CURRENT값이 일치합니다. 컴퓨팅 머신 세트를 사용할 수 없는 경우 몇 분 기다렸다가 명령을 다시 실행합니다.
8.1.3. 인프라 노드 생성 링크 복사링크가 클립보드에 복사되었습니다!
설치 관리자 프로비저닝 인프라 환경 또는 머신 API에서 컨트롤 플레인 노드를 관리하는 클러스터의 인프라 머신 세트 생성을 참조하십시오.
클러스터의 요구 사항은 인프라(infra) 노드를 프로비저닝하도록 지정합니다. 설치 프로그램은 컨트롤 플레인 및 작업자 노드만 프로비저닝합니다. 작업자 노드는 레이블을 통해 인프라 노드로 지정할 수 있습니다. 그런 다음 테인트 및 허용 오차를 사용하여 적절한 워크로드를 인프라 노드로 이동할 수 있습니다. 자세한 내용은 "인프라 머신 세트에 리소스 전달"을 참조하십시오.
선택적으로 기본 클러스터 수준 노드 선택기를 생성할 수 있습니다. 기본 노드 선택기는 모든 네임스페이스에서 생성된 Pod에 적용되며 Pod의 기존 노드 선택기와 교차점을 생성하므로 Pod의 선택기가 추가로 제한됩니다.
기본 노드 선택기 키가 Pod 라벨 키와 충돌하는 경우 기본 노드 선택기가 적용되지 않습니다.
그러나 Pod를 예약할 수 없게 만들 수 있는 기본 노드 선택기를 설정하지 마십시오. 예를 들어 Pod의 라벨이 node-role.kubernetes.io/master=""와 같은 다른 노드 역할로 설정된 경우 기본 노드 선택기를 node-role.kubernetes.io/infra=""와 같은 특정 노드 역할로 설정하면 Pod를 예약할 수 없게 될 수 있습니다. 따라서 기본 노드 선택기를 특정 노드 역할로 설정할 때 주의해야 합니다.
또는 프로젝트 노드 선택기를 사용하여 클러스터 수준 노드 선택기 키 충돌을 방지할 수 있습니다.
프로세스
인프라 노드 역할을 수행할 작업자 노드에 레이블을 추가합니다.
$ oc label node <node-name> node-role.kubernetes.io/infra=""해당 노드에
infra역할이 있는지 확인합니다.$ oc get nodes선택 사항: 기본 클러스터 수준 노드 선택기를 생성합니다.
Scheduler오브젝트를 편집합니다.$ oc edit scheduler cluster적절한 노드 선택기를 사용하여
defaultNodeSelector필드를 추가합니다.apiVersion: config.openshift.io/v1 kind: Scheduler metadata: name: cluster spec: defaultNodeSelector: node-role.kubernetes.io/infra=""1 # ...- 1
- 이 예제 노드 선택기는 기본적으로 인프라 노드에 Pod를 배포합니다.
- 파일을 저장하여 변경 사항을 적용합니다.
이제 인프라 리소스를 새 인프라 노드로 이동할 수 있습니다. 또한 원하지 않거나 속하지 않는 워크로드를 새 인프라 노드에서 제거합니다. "OpenShift Container Platform 인프라 구성 요소"의 인프라 노드에서 사용할 수 있도록 지원되는 워크로드 목록을 참조하십시오.
8.1.4. 인프라 머신의 머신 구성 풀 생성 링크 복사링크가 클립보드에 복사되었습니다!
전용 구성을 위한 인프라 머신이 필요한 경우 인프라 풀을 생성해야 합니다.
사용자 지정 머신 구성 풀을 생성하면 동일한 파일 또는 장치를 참조하는 경우 기본 작업자 풀 구성이 재정의됩니다.
프로세스
특정 레이블이 있는 인프라 노드로 할당하려는 노드에 레이블을 추가합니다.
$ oc label node <node_name> <label>$ oc label node ci-ln-n8mqwr2-f76d1-xscn2-worker-c-6fmtx node-role.kubernetes.io/infra=작업자 역할과 사용자 지정 역할을 모두 포함하는 머신 구성 풀을 머신 구성 선택기로 생성합니다.
$ cat infra.mcp.yaml출력 예
apiVersion: machineconfiguration.openshift.io/v1 kind: MachineConfigPool metadata: name: infra spec: machineConfigSelector: matchExpressions: - {key: machineconfiguration.openshift.io/role, operator: In, values: [worker,infra]}1 nodeSelector: matchLabels: node-role.kubernetes.io/infra: ""2 참고사용자 지정 머신 구성 풀은 작업자 풀의 머신 구성을 상속합니다. 사용자 지정 풀은 작업자 풀을 대상으로 하는 머신 구성을 사용하지만 사용자 지정 풀을 대상으로 하는 변경 사항만 배포할 수 있는 기능을 추가합니다. 사용자 지정 풀은 작업자 풀에서 리소스를 상속하므로 작업자 풀을 변경하면 사용자 지정 풀에도 영향을 줍니다.
YAML 파일이 있으면 머신 구성 풀을 생성할 수 있습니다.
$ oc create -f infra.mcp.yaml머신 구성을 확인하고 인프라 구성이 성공적으로 렌더링되었는지 확인합니다.
$ oc get machineconfig출력 예
NAME GENERATEDBYCONTROLLER IGNITIONVERSION CREATED 00-master 365c1cfd14de5b0e3b85e0fc815b0060f36ab955 3.2.0 31d 00-worker 365c1cfd14de5b0e3b85e0fc815b0060f36ab955 3.2.0 31d 01-master-container-runtime 365c1cfd14de5b0e3b85e0fc815b0060f36ab955 3.2.0 31d 01-master-kubelet 365c1cfd14de5b0e3b85e0fc815b0060f36ab955 3.2.0 31d 01-worker-container-runtime 365c1cfd14de5b0e3b85e0fc815b0060f36ab955 3.2.0 31d 01-worker-kubelet 365c1cfd14de5b0e3b85e0fc815b0060f36ab955 3.2.0 31d 99-master-1ae2a1e0-a115-11e9-8f14-005056899d54-registries 365c1cfd14de5b0e3b85e0fc815b0060f36ab955 3.2.0 31d 99-master-ssh 3.2.0 31d 99-worker-1ae64748-a115-11e9-8f14-005056899d54-registries 365c1cfd14de5b0e3b85e0fc815b0060f36ab955 3.2.0 31d 99-worker-ssh 3.2.0 31d rendered-infra-4e48906dca84ee702959c71a53ee80e7 365c1cfd14de5b0e3b85e0fc815b0060f36ab955 3.2.0 23m rendered-master-072d4b2da7f88162636902b074e9e28e 5b6fb8349a29735e48446d435962dec4547d3090 3.2.0 31d rendered-master-3e88ec72aed3886dec061df60d16d1af 02c07496ba0417b3e12b78fb32baf6293d314f79 3.2.0 31d rendered-master-419bee7de96134963a15fdf9dd473b25 365c1cfd14de5b0e3b85e0fc815b0060f36ab955 3.2.0 17d rendered-master-53f5c91c7661708adce18739cc0f40fb 365c1cfd14de5b0e3b85e0fc815b0060f36ab955 3.2.0 13d rendered-master-a6a357ec18e5bce7f5ac426fc7c5ffcd 365c1cfd14de5b0e3b85e0fc815b0060f36ab955 3.2.0 7d3h rendered-master-dc7f874ec77fc4b969674204332da037 5b6fb8349a29735e48446d435962dec4547d3090 3.2.0 31d rendered-worker-1a75960c52ad18ff5dfa6674eb7e533d 5b6fb8349a29735e48446d435962dec4547d3090 3.2.0 31d rendered-worker-2640531be11ba43c61d72e82dc634ce6 5b6fb8349a29735e48446d435962dec4547d3090 3.2.0 31d rendered-worker-4e48906dca84ee702959c71a53ee80e7 365c1cfd14de5b0e3b85e0fc815b0060f36ab955 3.2.0 7d3h rendered-worker-4f110718fe88e5f349987854a1147755 365c1cfd14de5b0e3b85e0fc815b0060f36ab955 3.2.0 17d rendered-worker-afc758e194d6188677eb837842d3b379 02c07496ba0417b3e12b78fb32baf6293d314f79 3.2.0 31d rendered-worker-daa08cc1e8f5fcdeba24de60cd955cc3 365c1cfd14de5b0e3b85e0fc815b0060f36ab955 3.2.0 13drendered-infra-*접두사가 있는 새 머신 구성이 표시되어야 합니다.선택 사항: 사용자 지정 풀에 변경 사항을 배포하려면
infra와 같은 사용자 지정 풀 이름을 레이블로 사용하는 머신 구성을 생성합니다. 필수 사항은 아니며 지침 용도로만 표시됩니다. 이렇게 하면 인프라 노드에 고유한 사용자 지정 구성을 적용할 수 있습니다.참고새 머신 구성 풀을 생성한 후 MCO는 해당 풀에 대해 새로 렌더링된 구성과 해당 풀의 관련 노드를 다시 부팅하여 새 구성을 적용합니다.
머신 구성을 생성합니다.
$ cat infra.mc.yaml출력 예
apiVersion: machineconfiguration.openshift.io/v1 kind: MachineConfig metadata: name: 51-infra labels: machineconfiguration.openshift.io/role: infra1 spec: config: ignition: version: 3.2.0 storage: files: - path: /etc/infratest mode: 0644 contents: source: data:,infra- 1
- 노드에 추가한 레이블을
nodeSelector로 추가합니다.
머신 구성을 인프라 레이블 노드에 적용합니다.
$ oc create -f infra.mc.yaml
새 머신 구성 풀을 사용할 수 있는지 확인합니다.
$ oc get mcp출력 예
NAME CONFIG UPDATED UPDATING DEGRADED MACHINECOUNT READYMACHINECOUNT UPDATEDMACHINECOUNT DEGRADEDMACHINECOUNT AGE infra rendered-infra-60e35c2e99f42d976e084fa94da4d0fc True False False 1 1 1 0 4m20s master rendered-master-9360fdb895d4c131c7c4bebbae099c90 True False False 3 3 3 0 91m worker rendered-worker-60e35c2e99f42d976e084fa94da4d0fc True False False 2 2 2 0 91m이 예에서는 작업자 노드가 인프라 노드로 변경되었습니다.