5장. 노드 작업
5.1. OpenShift Container Platform 클러스터에서 노드 보기 및 나열
클러스터의 모든 노드를 나열하여 노드의 상태, 수명, 메모리 사용량, 세부 정보와 같은 정보를 가져올 수 있습니다.
노드 관리 작업을 수행할 때 CLI는 실제 노드 호스트를 나타내는 노드 오브젝트와 상호 작용합니다. 마스터는 노드 오브젝트의 정보를 사용하여 상태 점검에서 노드를 검증합니다.
5.1.1. 클러스터의 모든 노드 나열 정보
클러스터의 노드에 대한 세부 정보를 가져올 수 있습니다.
다음 명령을 실행하면 모든 노드가 나열됩니다.
$ oc get nodes
다음 예제는 정상 노드가 있는 클러스터입니다.
$ oc get nodes
출력 예
NAME STATUS ROLES AGE VERSION master.example.com Ready master 7h v1.21.0 node1.example.com Ready worker 7h v1.21.0 node2.example.com Ready worker 7h v1.21.0
다음 예제는 하나의 비정상 노드가 있는 클러스터입니다.
$ oc get nodes
출력 예
NAME STATUS ROLES AGE VERSION master.example.com Ready master 7h v1.21.0 node1.example.com NotReady,SchedulingDisabled worker 7h v1.21.0 node2.example.com Ready worker 7h v1.21.0
NotReady
상태를 트리거하는 조건은 이 섹션의 뒷부분에 나와 있습니다.-wide
옵션은 노드에 대한 추가 정보를 제공합니다.$ oc get nodes -o wide
출력 예
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME master.example.com Ready master 171m v1.21.0+39c0afe 10.0.129.108 <none> Red Hat Enterprise Linux CoreOS 48.83.202103210901-0 (Ootpa) 4.18.0-240.15.1.el8_3.x86_64 cri-o://1.21.0-30.rhaos4.8.gitf2f339d.el8-dev node1.example.com Ready worker 72m v1.21.0+39c0afe 10.0.129.222 <none> Red Hat Enterprise Linux CoreOS 48.83.202103210901-0 (Ootpa) 4.18.0-240.15.1.el8_3.x86_64 cri-o://1.21.0-30.rhaos4.8.gitf2f339d.el8-dev node2.example.com Ready worker 164m v1.21.0+39c0afe 10.0.142.150 <none> Red Hat Enterprise Linux CoreOS 48.83.202103210901-0 (Ootpa) 4.18.0-240.15.1.el8_3.x86_64 cri-o://1.21.0-30.rhaos4.8.gitf2f339d.el8-dev
다음 명령에서는 단일 노드에 대한 정보를 나열합니다.
$ oc get node <node>
예를 들면 다음과 같습니다.
$ oc get node node1.example.com
출력 예
NAME STATUS ROLES AGE VERSION node1.example.com Ready worker 7h v1.21.0
다음 명령은 현재 조건의 이유를 포함하여 특정 노드에 대한 세부 정보를 제공합니다.
$ oc describe node <node>
예를 들면 다음과 같습니다.
$ oc describe node node1.example.com
출력 예
Name: node1.example.com 1 Roles: worker 2 Labels: beta.kubernetes.io/arch=amd64 3 beta.kubernetes.io/instance-type=m4.large beta.kubernetes.io/os=linux failure-domain.beta.kubernetes.io/region=us-east-2 failure-domain.beta.kubernetes.io/zone=us-east-2a kubernetes.io/hostname=ip-10-0-140-16 node-role.kubernetes.io/worker= Annotations: cluster.k8s.io/machine: openshift-machine-api/ahardin-worker-us-east-2a-q5dzc 4 machineconfiguration.openshift.io/currentConfig: worker-309c228e8b3a92e2235edd544c62fea8 machineconfiguration.openshift.io/desiredConfig: worker-309c228e8b3a92e2235edd544c62fea8 machineconfiguration.openshift.io/state: Done volumes.kubernetes.io/controller-managed-attach-detach: true CreationTimestamp: Wed, 13 Feb 2019 11:05:57 -0500 Taints: <none> 5 Unschedulable: false Conditions: 6 Type Status LastHeartbeatTime LastTransitionTime Reason Message ---- ------ ----------------- ------------------ ------ ------- OutOfDisk False Wed, 13 Feb 2019 15:09:42 -0500 Wed, 13 Feb 2019 11:05:57 -0500 KubeletHasSufficientDisk kubelet has sufficient disk space available MemoryPressure False Wed, 13 Feb 2019 15:09:42 -0500 Wed, 13 Feb 2019 11:05:57 -0500 KubeletHasSufficientMemory kubelet has sufficient memory available DiskPressure False Wed, 13 Feb 2019 15:09:42 -0500 Wed, 13 Feb 2019 11:05:57 -0500 KubeletHasNoDiskPressure kubelet has no disk pressure PIDPressure False Wed, 13 Feb 2019 15:09:42 -0500 Wed, 13 Feb 2019 11:05:57 -0500 KubeletHasSufficientPID kubelet has sufficient PID available Ready True Wed, 13 Feb 2019 15:09:42 -0500 Wed, 13 Feb 2019 11:07:09 -0500 KubeletReady kubelet is posting ready status Addresses: 7 InternalIP: 10.0.140.16 InternalDNS: ip-10-0-140-16.us-east-2.compute.internal Hostname: ip-10-0-140-16.us-east-2.compute.internal Capacity: 8 attachable-volumes-aws-ebs: 39 cpu: 2 hugepages-1Gi: 0 hugepages-2Mi: 0 memory: 8172516Ki pods: 250 Allocatable: attachable-volumes-aws-ebs: 39 cpu: 1500m hugepages-1Gi: 0 hugepages-2Mi: 0 memory: 7558116Ki pods: 250 System Info: 9 Machine ID: 63787c9534c24fde9a0cde35c13f1f66 System UUID: EC22BF97-A006-4A58-6AF8-0A38DEEA122A Boot ID: f24ad37d-2594-46b4-8830-7f7555918325 Kernel Version: 3.10.0-957.5.1.el7.x86_64 OS Image: Red Hat Enterprise Linux CoreOS 410.8.20190520.0 (Ootpa) Operating System: linux Architecture: amd64 Container Runtime Version: cri-o://1.16.0-0.6.dev.rhaos4.3.git9ad059b.el8-rc2 Kubelet Version: v1.21.0 Kube-Proxy Version: v1.21.0 PodCIDR: 10.128.4.0/24 ProviderID: aws:///us-east-2a/i-04e87b31dc6b3e171 Non-terminated Pods: (13 in total) 10 Namespace Name CPU Requests CPU Limits Memory Requests Memory Limits --------- ---- ------------ ---------- --------------- ------------- openshift-cluster-node-tuning-operator tuned-hdl5q 0 (0%) 0 (0%) 0 (0%) 0 (0%) openshift-dns dns-default-l69zr 0 (0%) 0 (0%) 0 (0%) 0 (0%) openshift-image-registry node-ca-9hmcg 0 (0%) 0 (0%) 0 (0%) 0 (0%) openshift-ingress router-default-76455c45c-c5ptv 0 (0%) 0 (0%) 0 (0%) 0 (0%) openshift-machine-config-operator machine-config-daemon-cvqw9 20m (1%) 0 (0%) 50Mi (0%) 0 (0%) openshift-marketplace community-operators-f67fh 0 (0%) 0 (0%) 0 (0%) 0 (0%) openshift-monitoring alertmanager-main-0 50m (3%) 50m (3%) 210Mi (2%) 10Mi (0%) openshift-monitoring grafana-78765ddcc7-hnjmm 100m (6%) 200m (13%) 100Mi (1%) 200Mi (2%) openshift-monitoring node-exporter-l7q8d 10m (0%) 20m (1%) 20Mi (0%) 40Mi (0%) openshift-monitoring prometheus-adapter-75d769c874-hvb85 0 (0%) 0 (0%) 0 (0%) 0 (0%) openshift-multus multus-kw8w5 0 (0%) 0 (0%) 0 (0%) 0 (0%) openshift-sdn ovs-t4dsn 100m (6%) 0 (0%) 300Mi (4%) 0 (0%) openshift-sdn sdn-g79hg 100m (6%) 0 (0%) 200Mi (2%) 0 (0%) Allocated resources: (Total limits may be over 100 percent, i.e., overcommitted.) Resource Requests Limits -------- -------- ------ cpu 380m (25%) 270m (18%) memory 880Mi (11%) 250Mi (3%) attachable-volumes-aws-ebs 0 0 Events: 11 Type Reason Age From Message ---- ------ ---- ---- ------- Normal NodeHasSufficientPID 6d (x5 over 6d) kubelet, m01.example.com Node m01.example.com status is now: NodeHasSufficientPID Normal NodeAllocatableEnforced 6d kubelet, m01.example.com Updated Node Allocatable limit across pods Normal NodeHasSufficientMemory 6d (x6 over 6d) kubelet, m01.example.com Node m01.example.com status is now: NodeHasSufficientMemory Normal NodeHasNoDiskPressure 6d (x6 over 6d) kubelet, m01.example.com Node m01.example.com status is now: NodeHasNoDiskPressure Normal NodeHasSufficientDisk 6d (x6 over 6d) kubelet, m01.example.com Node m01.example.com status is now: NodeHasSufficientDisk Normal NodeHasSufficientPID 6d kubelet, m01.example.com Node m01.example.com status is now: NodeHasSufficientPID Normal Starting 6d kubelet, m01.example.com Starting kubelet. ...
- 1
- 노드의 이름입니다.
- 2
- 노드의 역할(
master
또는worker
)입니다. - 3
- 노드에 적용되는 라벨입니다.
- 4
- 노드에 적용되는 주석입니다.
- 5
- 노드에 적용되는 테인트입니다.
- 6
- 노드 조건 및 상태입니다.
conditions
스탠자는Ready
,PIDPressure
,PIDPressure
,MemoryPressure
,DiskPressure
OutOfDisk
상태를 나열합니다. 이러한 조건은 이 섹션의 뒷부분에 설명되어 있습니다. - 7
- 노드의 IP 주소 및 호스트 이름.
- 8
- Pod 리소스 및 할당 가능한 리소스입니다.
- 9
- 노드 호스트에 대한 정보입니다.
- 10
- 노드의 Pod입니다.
- 11
- 노드에서 보고한 이벤트입니다.
노드에 표시된 정보 중에 다음 노드 상태가 이 섹션에 표시된 명령의 출력에 표시됩니다.
상태 | 설명 |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| Pod는 노드에 배치하도록 예약할 수 없습니다. |
5.1.2. 클러스터의 노드에 있는 Pod 나열
특정 노드의 모든 Pod를 나열할 수 있습니다.
프로세스
하나 이상의 노드에 있는 모든 Pod 또는 선택한 Pod를 나열하려면 다음을 수행합니다.
$ oc describe node <node1> <node2>
예를 들면 다음과 같습니다.
$ oc describe node ip-10-0-128-218.ec2.internal
선택한 노드에서 모든 Pod 또는 선택한 Pod를 나열하려면 다음을 수행합니다.
$ oc describe --selector=<node_selector>
$ oc describe node --selector=kubernetes.io/os
또는 다음을 수행합니다.
$ oc describe -l=<pod_selector>
$ oc describe node -l node-role.kubernetes.io/worker
종료된 Pod를 포함하여 특정 노드의 모든 Pod를 나열하려면 다음을 수행합니다.
$ oc get pod --all-namespaces --field-selector=spec.nodeName=<nodename>
5.1.3. 노드의 메모리 및 CPU 사용량 통계 보기
컨테이너에 런타임 환경을 제공하는 노드에 대한 사용량 통계를 표시할 수 있습니다. 이러한 사용량 통계에는 CPU, 메모리, 스토리지 사용량이 포함됩니다.
사전 요구 사항
-
사용량 통계를 보려면
cluster-reader
권한이 있어야 합니다. - 사용량 통계를 보려면 메트릭이 설치되어 있어야 합니다.
프로세스
사용량 통계를 보려면 다음을 수행합니다.
$ oc adm top nodes
출력 예
NAME CPU(cores) CPU% MEMORY(bytes) MEMORY% ip-10-0-12-143.ec2.compute.internal 1503m 100% 4533Mi 61% ip-10-0-132-16.ec2.compute.internal 76m 5% 1391Mi 18% ip-10-0-140-137.ec2.compute.internal 398m 26% 2473Mi 33% ip-10-0-142-44.ec2.compute.internal 656m 43% 6119Mi 82% ip-10-0-146-165.ec2.compute.internal 188m 12% 3367Mi 45% ip-10-0-19-62.ec2.compute.internal 896m 59% 5754Mi 77% ip-10-0-44-193.ec2.compute.internal 632m 42% 5349Mi 72%
라벨을 사용하여 노드의 사용량 통계를 보려면 다음을 실행합니다.
$ oc adm top node --selector=''
필터링할 선택기(라벨 쿼리)를 선택해야 합니다.
=
,==
,!=
가 지원됩니다.