10.10. 커널 부팅 매개변수를 설정하여 호스팅된 클러스터에 대한 고급 노드 튜닝
호스팅된 제어 평면에서 보다 고급 튜닝을 수행하려면 커널 부팅 매개변수 설정이 필요하며, 이 경우 노드 튜닝 연산자를 사용할 수도 있습니다. 다음 예제에서는 방대한 페이지를 예약하여 노드 풀을 만드는 방법을 보여줍니다.
프로세스
크기가 2MB인 10개의 거대한 페이지를 생성하기 위한
Tuned객체 매니페스트가 포함된ConfigMap객체를 생성합니다. 이ConfigMap매니페스트를tuned-hugepages.yaml이라는 이름의 파일에 저장합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 참고.spec.recommend.match필드는 의도적으로 비워두었습니다. 이 경우, 이Tuned객체는 이ConfigMap객체가 참조되는 노드 풀의 모든 노드에 적용됩니다. 동일한 하드웨어 구성을 가진 노드를 동일한 노드 풀로 그룹화합니다. 그렇지 않으면 TuneD 피연산자는 동일한 노드 풀을 공유하는 두 개 이상의 노드에 대해 충돌하는 커널 매개변수를 계산할 수 있습니다.관리 클러스터에
ConfigMap오브젝트를 생성합니다.oc --kubeconfig="<management_cluster_kubeconfig>" create -f tuned-hugepages.yaml
$ oc --kubeconfig="<management_cluster_kubeconfig>" create -f tuned-hugepages.yaml1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
<management_cluster_kubeconfig>를관리 클러스터kubeconfig파일의 이름으로 바꾸세요.
NodePool매니페스트 YAML 파일을 만들고,NodePool의 업그레이드 유형을 사용자 지정하고,spec.tuningConfig섹션에서 만든ConfigMap객체를 참조합니다.hcpCLI를 사용하여NodePool매니페스트를 만들고hugepages-nodepool.yaml이라는 파일에 저장합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 참고hcp create명령의--render플래그는 비밀을 렌더링하지 않습니다. 비밀을 렌더링하려면hcp create명령에서--render및--render-sensitive플래그를 모두 사용해야 합니다.hugepages-nodepool.yaml파일에서.spec.management.upgradeType을InPlace로 설정하고,.spec.tuningConfig를사용자가 만든tuned-hugepagesConfigMap객체를 참조하도록 설정합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 참고새로운
MachineConfig객체를 적용할 때 불필요한 노드 재생성을 방지하려면.spec.management.upgradeType을InPlace로 설정합니다.Replace업그레이드 유형을 사용하면 노드가 완전히 삭제되고 TuneD 피연산자가 계산한 새 커널 부팅 매개변수를 적용할 때 새 노드로 기존 노드를 대체할 수 있습니다.관리 클러스터에
NodePool을생성합니다.oc --kubeconfig="<management_cluster_kubeconfig>" create -f hugepages-nodepool.yaml
$ oc --kubeconfig="<management_cluster_kubeconfig>" create -f hugepages-nodepool.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
검증
노드를 사용할 수 있게 되면 컨테이너화된 TuneD 데몬은 적용된 TuneD 프로필을 기반으로 필요한 커널 부팅 매개변수를 계산합니다. 노드가 준비되고 생성된 MachineConfig 객체를 적용하기 위해 한 번 재부팅하면 TuneD 프로필이 적용되었고 커널 부팅 매개변수가 설정되었는지 확인할 수 있습니다.
호스트 클러스터에서
Tuned오브젝트를 나열합니다.oc --kubeconfig="<hosted_cluster_kubeconfig>" get tuned.tuned.openshift.io \ -n openshift-cluster-node-tuning-operator
$ oc --kubeconfig="<hosted_cluster_kubeconfig>" get tuned.tuned.openshift.io \ -n openshift-cluster-node-tuning-operatorCopy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
NAME AGE default 123m hugepages-8dfb1fed 1m23s rendered 123m
NAME AGE default 123m hugepages-8dfb1fed 1m23s rendered 123mCopy to Clipboard Copied! Toggle word wrap Toggle overflow 호스팅된 클러스터의
Profile오브젝트를 나열합니다.oc --kubeconfig="<hosted_cluster_kubeconfig>" get profile.tuned.openshift.io \ -n openshift-cluster-node-tuning-operator
$ oc --kubeconfig="<hosted_cluster_kubeconfig>" get profile.tuned.openshift.io \ -n openshift-cluster-node-tuning-operatorCopy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
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
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 3m57sCopy to Clipboard Copied! Toggle word wrap Toggle overflow 새
NodePool의 작업자 노드 모두openshift-node-hugepages프로필이 적용됩니다.튜닝이 올바르게 적용되었는지 확인하려면 노드에서 디버그 쉘을 시작하고
/proc/cmdline을 확인합니다.oc --kubeconfig="<hosted_cluster_kubeconfig>" \ debug node/nodepool-1-worker-1 -- chroot /host cat /proc/cmdline
$ oc --kubeconfig="<hosted_cluster_kubeconfig>" \ debug node/nodepool-1-worker-1 -- chroot /host cat /proc/cmdlineCopy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
BOOT_IMAGE=(hd0,gpt3)/ostree/rhcos-... hugepagesz=2M hugepages=50
BOOT_IMAGE=(hd0,gpt3)/ostree/rhcos-... hugepagesz=2M hugepages=50Copy to Clipboard Copied! Toggle word wrap Toggle overflow