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