Các câu lệnh kubectl và helm cho người mới bắt đầu

Giới thiệu về helm và kubectl #

helm là một công cụ quản lý ứng dụng bên trong kubernetes. Bạn có thể dễ dàng triển khai chart với các cài đặt ứng dụng của bạn, cho phép chúng bật lên và sử dụng được ngay trong vòng vài phút.

kubectl là câu lệnh cho phép bạn tương tác với môi trường Kubernetes, quản lý và cấu hình cluster của bạn.

helm list trong Helm #

Câu lệnh helm list cung cấp thông tin về các ứng dụng hiện tại đang chạy. Trong ví dụ này, mình đã triển khai một ứng dụng – Jenkins. Nếu chạy trực tiếp, câu lệnh này chỉ hiển thị các namespace mặc định.

$ helm list
NAME    NAMESPACE    REVISION    UPDATED    STATUS    CHART    APP VERSION

Tuy nhiên, nếu mình cho thêm trường giá trị, thì thông tin về tất cả namespace sẽ được hiển thị:

$ helm list --all-namespaces
NAME     NAMESPACE  REVISION  UPDATED                   STATUS      CHART           APP  VERSION
tel4vn-namespace  tel4vn-namespace        1         2020-10-27 16:18:07 EST   deployed    jenkins-1.9.4   lts

Hoặc mình cũng có thể chỉ định namespace nào đó:

$ helm list --namespace jenkins
NAME     NAMESPACE  REVISION  UPDATED                   STATUS    CHART          APP VERSION
tel4vn-namespace    tel4vn-namespace      1              2020-10-27 16:18:07 EST  deployed  jenkins-1.9.4  lts

kubectl get trong Kubernetes Cluster #

Câu lệnh kubetl get có thể sử dụng để lấy bất kì thông tin về các đối tượng của Kubernetes. Bao gồm về pod, node, namespace.

$ kubectl get namespaces
NAME             STATUS   AGE
default          Active   53m
jenkins          Active   44m
kube-node-lease  Active   53m
kube-public      Active   53m
kube-system      Active   53m

hoặc các thông tin về node:

$ kubectl get nodes
NAME       STATUS   ROLES       AGE   VERSION
minikube   Ready    master  55m   v1.16.2

Như thông tin trả về, mình đang chạy Minikube làm cluster duy nhất. Ngoài ra, để lấy thông tin về pod, bạn cũng có thể dùng câu lệnh như bên dưới:

$ kubectl get pods
No resources found in default namespace.

Rõ ràng là không có pod nào đang chạy. Nhưng không đó chỉ là default namespace mà thôi. Khi mình chỉ định namespace nào đó sẽ khác:

$ kubectl get pods --namespace jenkins
NAME                      READY  STATUS   RESTARTS  AGE
tel4vn-7fc688c874-mh7gv  1/1    Running  0         40m

kubectl describe trong Kubernetes #

Bạn có câu lệnh này sử dụng để lấy thông tin chi tiết về một loại đối tượng nào đó trong Kubernetes.

$ kubectl describe ns tel4vn-namespace
Name:           tel4vn-namespace
Labels:         <none>
Annotations:  <none>
Status:         Active
No resource quota.
No resource limits.

Tương tự, bạn cũng có thể lấy thông tin về một pod nào đó, với điều kiện phải chỉ rõ namespace nếu pod đó không nằm default namespace:

kubectl describe pods tel4vn-7fc688c874-mh7gv --namespace tel4vn-namespace

Bạn cũng có thể sử dụng kubectl describe để lấy thông tin về một node nào đó trong cluster. Thông tin được hiển thị sẽ chi tiết hơn rất nhiều so với câu lệnh kubectl get

tel4vn@devops:~$ kubectl describe node minikube
Name: minikube
Roles: master
Labels: beta.kubernetes.io/arch=amd64
beta.kubernetes.io/os=linux
kubernetes.io/arch=amd64
kubernetes.io/hostname=minikube
kubernetes.io/os=linux
minikube.k8s.io/commit=b09ee50ec047410326a85435f4d99026f9c4f5c4
minikube.k8s.io/name=minikube
minikube.k8s.io/updated_at=2020_10_21T08_17_39_0700
minikube.k8s.io/version=v1.14.0
node-role.kubernetes.io/master=
Annotations: kubeadm.alpha.kubernetes.io/cri-socket: /var/run/dockershim.sock
node.alpha.kubernetes.io/ttl: 0
volumes.kubernetes.io/controller-managed-attach-detach: true
CreationTimestamp: Wed, 21 Oct 2020 08:17:37 +0000
Taints: <none>
Unschedulable: false
Lease:
HolderIdentity: minikube
AcquireTime: <unset>
RenewTime: Tue, 27 Oct 2020 08:18:08 +0000
Conditions:
Type Status LastHeartbeatTime LastTransitionTime Reason Message
---- ------ ----------------- ------------------ ------ -------
MemoryPressure False Tue, 27 Oct 2020 08:18:14 +0000 Wed, 21 Oct 2020 08:17:37 +0000 KubeletHasSufficientMemory kubelet has sufficient memory available
DiskPressure False Tue, 27 Oct 2020 08:18:14 +0000 Wed, 21 Oct 2020 08:17:37 +0000 KubeletHasNoDiskPressure kubelet has no disk pressure
PIDPressure False Tue, 27 Oct 2020 08:18:14 +0000 Wed, 21 Oct 2020 08:17:37 +0000 KubeletHasSufficientPID kubelet has sufficient PID available
Ready True Tue, 27 Oct 2020 08:18:14 +0000 Wed, 21 Oct 2020 08:17:57 +0000 KubeletReady kubelet is posting ready status
Addresses:
InternalIP: 192.168.49.2
Hostname: minikube
Capacity:
cpu: 8
ephemeral-storage: 25668836Ki
hugepages-2Mi: 0
memory: 8151920Ki
pods: 110
Allocatable:
cpu: 8
ephemeral-storage: 25668836Ki
hugepages-2Mi: 0
memory: 8151920Ki
pods: 110
System Info:
Machine ID: 0682d9e108e94281b3923968fb665b5a
System UUID: adf971fa-e303-4ce9-bb33-f4f0077c2f6c
Boot ID: d5e209c3-fa57-4f7e-87d4-9cf76c1024bd
Kernel Version: 5.4.0-52-generic
OS Image: tel4vn 20.04 LTS
Operating System: linux
Architecture: amd64
Container Runtime Version: docker://19.3.8
Kubelet Version: v1.19.2
Kube-Proxy Version: v1.19.2
Non-terminated Pods: (7 in total)
Namespace Name CPU Requests CPU Limits Memory Requests Memory Limits AGE
--------- ---- ------------ ---------- --------------- ------------- ---
kube-system coredns-f9fd979d6-ldxnn 100m (1%) 0 (0%) 70Mi (0%) 170Mi (2%) 6d
kube-system etcd-minikube 0 (0%) 0 (0%) 0 (0%) 0 (0%) 6d
kube-system kube-apiserver-minikube 250m (3%) 0 (0%) 0 (0%) 0 (0%) 6d
kube-system kube-controller-manager-minikube 200m (2%) 0 (0%) 0 (0%) 0 (0%) 6d
kube-system kube-proxy-vbgrj 0 (0%) 0 (0%) 0 (0%) 0 (0%) 6d
kube-system kube-scheduler-minikube 100m (1%) 0 (0%) 0 (0%) 0 (0%) 6d
kube-system storage-provisioner 0 (0%) 0 (0%) 0 (0%) 0 (0%) 6d
Allocated resources:
(Total limits may be over 100 percent, i.e., overcommitted.)
Resource Requests Limits
-------- -------- ------
cpu 650m (8%) 0 (0%)
memory 70Mi (0%) 170Mi (2%)
ephemeral-storage 0 (0%) 0 (0%)
hugepages-2Mi 0 (0%) 0 (0%)
Events: <none>

Kết luận #

Trên đây là một số câu lệnh mà mình muốn gửi mình những người mới làm quen với helm và kubernetes. Chúng có thể sử dụng để lấy thông tin và tình trạng của kubernetes cluster, ứng dụng đang triển khai bởi helm. Mục đích là để bạn có thể hiểu thị các thông tin cụ thể về có đối tượng trong Kubernetes và các thông số mà Helm hỗ trợ.

Bạn đọc cũng có thể đọ thêm bài viết về Helm và tạo Helm chart trong bài viết dưới:

Nguồn: https//opensource.com

Mình là Tùng, hiện đang là DevOps tại Công Ty CP EcoIT. Với kinh nghiệm và thủ thuật đúc rút được từ trong công việc, mình muốn chia sẻ cho bạn đọc cùng biết và cùng nhau học thêm nhiều điều mới trong lĩnh vực DevOps.

Powered by BetterDocs

Để lại bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *