7.9. 커널 부팅 매개변수를 설정하여 호스팅된 클러스터의 고급 노드 튜닝
커널 부팅 매개변수를 설정해야 하는 호스팅된 컨트롤 플레인의 고급 튜닝의 경우 Node Tuning Operator를 사용할 수도 있습니다. 다음 예제에서는 대규모 페이지가 예약된 노드 풀을 생성하는 방법을 보여줍니다.
프로세스
크기가 2MB인 대규모 페이지 10개를 생성하기 위한
Tuned오브젝트 매니페스트가 포함된ConfigMap오브젝트를 생성합니다. 이ConfigMap매니페스트를tuned-hugepages.yaml이라는 파일에 저장합니다.apiVersion: v1 kind: ConfigMap metadata: name: tuned-hugepages namespace: clusters data: tuning: | apiVersion: tuned.openshift.io/v1 kind: Tuned metadata: name: hugepages namespace: openshift-cluster-node-tuning-operator spec: profile: - data: | [main] summary=Boot time configuration for hugepages include=openshift-node [bootloader] cmdline_openshift_node_hugepages=hugepagesz=2M hugepages=50 name: openshift-node-hugepages recommend: - priority: 20 profile: openshift-node-hugepages참고.spec.recommend.match필드는 의도적으로 비워 둡니다. 이 경우 이Tuned오브젝트는 이ConfigMap오브젝트가 참조되는 노드 풀의 모든 노드에 적용됩니다. 동일한 하드웨어 구성이 있는 노드를 동일한 노드 풀로 그룹화합니다. 그렇지 않으면 TuneD 피연산자가 동일한 노드 풀을 공유하는 두 개 이상의 노드에 대해 충돌하는 커널 매개변수를 계산할 수 있습니다.관리 클러스터에
ConfigMap오브젝트를 생성합니다.$ oc --kubeconfig="<management_cluster_kubeconfig>" create -f tuned-hugepages.yaml1 - 1
- &
lt;management_cluster_kubeconfig>를 관리 클러스터kubeconfig파일의 이름으로 바꿉니다.
NodePool매니페스트 YAML 파일을 생성하고NodePool의 업그레이드 유형을 사용자 지정하고spec.tuningConfig섹션에서 생성한ConfigMap오브젝트를 참조합니다.NodePool매니페스트를 생성하고hcpCLI를 사용하여hugepages-nodepool.yaml이라는 파일에 저장합니다.$ hcp create nodepool aws \ --cluster-name <hosted_cluster_name> \1 --name <nodepool_name> \2 --node-count <nodepool_replicas> \3 --instance-type <instance_type> \4 --render > hugepages-nodepool.yaml참고hcp create명령의--render플래그는 시크릿을 렌더링하지 않습니다. 보안을 렌더링하려면hcp create명령에서--render및--render-sensitive플래그를 모두 사용해야 합니다.hugepages-nodepool.yaml파일에서.spec.management.upgradeType을InPlace로 설정하고.spec.tuningConfig를 설정하여 사용자가 생성한tuned-hugepagesConfigMap오브젝트를 참조합니다.apiVersion: hypershift.openshift.io/v1alpha1 kind: NodePool metadata: name: hugepages-nodepool namespace: clusters ... spec: management: ... upgradeType: InPlace ... tuningConfig: - name: tuned-hugepages참고새
MachineConfig오브젝트를 적용할 때 노드의 불필요한 재생성을 방지하려면.spec.management.upgradeType을InPlace로 설정합니다. 업그레이드교체유형을 사용하는 경우 노드가 완전히 삭제되고 TuneD 피연산자가 계산된 새 커널 부팅 매개변수를 적용할 때 새 노드가 대체될 수 있습니다.관리 클러스터에서
NodePool을 생성합니다.$ oc --kubeconfig="<management_cluster_kubeconfig>" create -f hugepages-nodepool.yaml
검증
노드를 사용할 수 있게 되면 컨테이너화된 TuneD 데몬은 적용된 TuneD 프로필을 기반으로 필요한 커널 부팅 매개변수를 계산합니다. 생성된 MachineConfig 오브젝트를 적용하기 위해 노드를 준비하고 재부팅한 후 TuneD 프로필이 적용되고 커널 부팅 매개변수가 설정되었는지 확인할 수 있습니다.
호스트 클러스터에서
Tuned오브젝트를 나열합니다.$ oc --kubeconfig="<hosted_cluster_kubeconfig>" get tuned.tuned.openshift.io -n openshift-cluster-node-tuning-operator출력 예
NAME AGE default 123m hugepages-8dfb1fed 1m23s rendered 123m호스팅된 클러스터의
Profile오브젝트를 나열합니다.$ oc --kubeconfig="<hosted_cluster_kubeconfig>" get profile.tuned.openshift.io -n openshift-cluster-node-tuning-operator출력 예
NAME TUNED APPLIED DEGRADED AGE nodepool-1-worker-1 openshift-node True False 132m nodepool-1-worker-2 openshift-node True False 131m hugepages-nodepool-worker-1 openshift-node-hugepages True False 4m8s hugepages-nodepool-worker-2 openshift-node-hugepages True False 3m57s새
NodePool의 작업자 노드 모두openshift-node-hugepages프로필이 적용됩니다.튜닝이 올바르게 적용되었는지 확인하려면 노드에서 디버그 쉘을 시작하고
/proc/cmdline을 확인합니다.$ oc --kubeconfig="<hosted_cluster_kubeconfig>" debug node/nodepool-1-worker-1 -- chroot /host cat /proc/cmdline출력 예
BOOT_IMAGE=(hd0,gpt3)/ostree/rhcos-... hugepagesz=2M hugepages=50