Kiat cepat Kubernetes ini membantu Anda mendapatkan detail tentang node pekerja Kubernetes dan cara membaca serta memahami outputnya.
Apa itu simpul Kubernetes?
Node adalah mesin pekerja (virtual/fisik) di Kubernetes tempat pod yang membawa aplikasi Anda berjalan. Layanan yang berjalan pada sebuah node termasuk Docker, kubelet dan kube-proxy.
Mencantumkan node yang tersedia di cluster Kubernetes Anda
Cara termudah untuk melihat node yang tersedia adalah dengan menggunakan perintah kubectl dengan cara ini:
kubectl get nodes
Ini akan menunjukkan kepada Anda semua node di cluster Anda secara sekilas. Anda dapat melihat status, peran, usia, dan versi setiap node.
[email protected]:~# kubectl get nodes
NAME STATUS ROLES AGE VERSION
kmaster-rj Ready master 39d v1.18.8
kworker-rj1 Ready <none> 39d v1.18.8
kworker-rj2 Ready <none> 39d v1.18.8
[email protected]:~#
Seperti yang Anda lihat, kedua node pekerja dalam keadaan siap.
Untuk melihat output yang lebih detail, jalankan perintah berikut, Anda dapat menambahkan -o wide
pilihan seperti ini:
kubectl get nodes -o wide
Sekarang Anda akan melihat detail tambahan seperti IP internal dan eksternal, image container, versi kernel, dan waktu proses untuk container.
[email protected]:~# kubectl get nodes -o wide
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
kmaster-rj Ready master 39d v1.18.8 172.42.42.200 <none> Ubuntu 18.04.5 LTS 4.15.0-101-generic docker://19.3.6
kworker-rj1 Ready <none> 39d v1.18.8 172.42.42.201 <none> Ubuntu 18.04.4 LTS 4.15.0-101-generic docker://19.3.6
kworker-rj2 Ready <none> 39d v1.18.8 172.42.42.202 <none> Ubuntu 18.04.5 LTS 4.15.0-101-generic docker://19.3.6
Mari kita masuk lebih dalam dan mengetahui lebih banyak tentang node tertentu.
Mendeskripsikan sebuah node untuk lebih jelasnya
Jika Anda menginginkan informasi rinci tentang node tertentu, Anda dapat menggunakan kubectl describe
perintah dengan nama simpul:
kubectl describe nodes worker-node-name
Berikut ini contoh keluarannya:
[email protected]:~# kubectl describe nodes kworker-rj1
Name: kworker-rj1
Roles: <none>
Labels: app=front-end
beta.kubernetes.io/arch=amd64
beta.kubernetes.io/os=linux
kubernetes.io/arch=amd64
kubernetes.io/hostname=kworker-rj1
kubernetes.io/os=linux
size=medium
Annotations: kubeadm.alpha.kubernetes.io/cri-socket: /var/run/dockershim.sock
node.alpha.kubernetes.io/ttl: 0
projectcalico.org/IPv4Address: 172.42.42.201/24
projectcalico.org/IPv4IPIPTunnelAddr: 172.16.213.0
volumes.kubernetes.io/controller-managed-attach-detach: true
CreationTimestamp: Sun, 02 Aug 2020 15:42:32 +0000
Taints: app=front-end:NoExecute
Unschedulable: false
Lease:
HolderIdentity: kworker-rj1
AcquireTime: <unset>
RenewTime: Fri, 11 Sep 2020 07:09:51 +0000
Conditions:
Type Status LastHeartbeatTime LastTransitionTime Reason Message
---- ------ ----------------- ------------------ ------ -------
NetworkUnavailable False Fri, 11 Sep 2020 02:57:12 +0000 Fri, 11 Sep 2020 02:57:12 +0000 CalicoIsUp Calico is running on this node
MemoryPressure False Fri, 11 Sep 2020 07:06:56 +0000 Fri, 28 Aug 2020 06:33:29 +0000 KubeletHasSufficientMemory kubelet has sufficient memory available
DiskPressure False Fri, 11 Sep 2020 07:06:56 +0000 Fri, 28 Aug 2020 06:33:29 +0000 KubeletHasNoDiskPressure kubelet has no disk pressure
PIDPressure False Fri, 11 Sep 2020 07:06:56 +0000 Fri, 28 Aug 2020 06:33:29 +0000 KubeletHasSufficientPID kubelet has sufficient PID available
Ready True Fri, 11 Sep 2020 07:06:56 +0000 Fri, 11 Sep 2020 02:56:03 +0000 KubeletReady kubelet is posting ready status. AppArmor enabled
Addresses:
InternalIP: 172.42.42.201
Hostname: kworker-rj1
Capacity:
cpu: 2
ephemeral-storage: 64800356Ki
hugepages-2Mi: 0
memory: 2040812Ki
pods: 110
Allocatable:
cpu: 2
ephemeral-storage: 59720007991
hugepages-2Mi: 0
memory: 1938412Ki
pods: 110
System Info:
Machine ID: c7dbeba40d7b45a387082c96df6cc554
System UUID: 595C28CA-DBBF-304D-8C5A-7862AA0A60E5
Boot ID: 306f36e0-ded3-4b45-946a-89509f845c21
Kernel Version: 4.15.0-101-generic
OS Image: Ubuntu 18.04.4 LTS
Operating System: linux
Architecture: amd64
Container Runtime Version: docker://19.3.6
Kubelet Version: v1.18.8
Kube-Proxy Version: v1.18.8
Non-terminated Pods: (5 in total)
Namespace Name CPU Requests CPU Limits Memory Requests Memory Limits AGE
--------- ---- ------------ ---------- --------------- ------------- ---
default toleration-demo-dep-54f9ff64b9-7zcrn 0 (0%) 0 (0%) 0 (0%) 0 (0%) 4h9m
default toleration-demo-dep-54f9ff64b9-9sldm 0 (0%) 0 (0%) 0 (0%) 0 (0%) 4h9m
default toleration-demo-dep-54f9ff64b9-rgh7z 0 (0%) 0 (0%) 0 (0%) 0 (0%) 4h9m
kube-system calico-node-2jlhm 250m (12%) 0 (0%) 0 (0%) 0 (0%) 39d
kube-system kube-proxy-54894 0 (0%) 0 (0%) 0 (0%) 0 (0%) 22d
Allocated resources:
(Total limits may be over 100 percent, i.e., overcommitted.)
Resource Requests Limits
-------- -------- ------
cpu 250m (12%) 0 (0%)
memory 0 (0%) 0 (0%)
ephemeral-storage 0 (0%) 0 (0%)
hugepages-2Mi 0 (0%) 0 (0%)
Events: <none>
Itu banyak informasi. Apa yang penting bagi Anda?
- Sebagian besar informasi bersifat informasi mengenai IP sistem, nama host, sumber daya (CPU, GPU, memori) dan informasi versi (OS, Docker, Kubernetes).
- layanan kubelet status.
- Tidak dapat dijadwalkan parameter.
- Kondisi bagian dapat menunjukkan apakah ada masalah sumber daya sistem yang akan mempengaruhi berjalannya aplikasi. Misalnya, jika salah satu OutOfDisk , Tekanan Memori , atau DiskPressure kondisi Benar, sumber daya sistem tidak mencukupi untuk melayani beban kerja lebih lanjut.
- Acara bagian akhirnya juga akan memiliki pesan yang dapat menunjukkan jika ada masalah dengan lingkungan.
Semoga Anda menyukai tip cepat Kubernetes ini. Tetap disini dan jangan lupa untuk berlangganan lebih banyak lagi.
Rakesh Jain
DevOps Profesional | RHCA | Jenkins | Git | buruh pelabuhan | Kubernet | Mungkin | Prometheus | Grafana | AWS Cloud