Tổng quan về k9s - giao diện đầu cuối nâng cao cho Kubernetes

Tổng quan về k9s - giao diện đầu cuối nâng cao cho Kubernetes

K9s cung cấp giao diện người dùng đầu cuối để tương tác với các cụm Kubernetes. Mục tiêu của dự án Nguồn mở này là giúp dễ dàng điều hướng, theo dõi và quản lý các ứng dụng trong K8s. K9 liên tục theo dõi các thay đổi trong Kubernetes và đưa ra các lệnh nhanh để làm việc với các tài nguyên được giám sát.

Dự án được viết bằng Go và đã tồn tại hơn một năm rưỡi: cam kết đầu tiên được thực hiện vào ngày 1 tháng 2019 năm 9000. Tại thời điểm viết bài, có hơn XNUMX sao trên GitHub và khoảng 80 cộng tác viên. Hãy xem k9s làm được những gì?

Cài đặt và khởi chạy

Đây là ứng dụng khách (liên quan đến cụm Kubernetes) dễ chạy nhất dưới dạng hình ảnh Docker:

docker run --rm -it -v $KUBECONFIG:/root/.kube/config quay.io/derailed/k9s

Đối với một số bản phân phối Linux và các hệ điều hành khác, cũng có các bản cài đặt sẵn gói. Nói chung, đối với các hệ thống Linux, bạn có thể cài đặt tệp nhị phân:

sudo wget -qO- https://github.com/derailed/k9s/releases/download/v0.22.0/k9s_Linux_x86_64.tar.gz | tar zxvf -  -C /tmp/
sudo mv /tmp/k9s /usr/local/bin

Không có yêu cầu cụ thể cho cụm K8s. Dựa trên các đánh giá, ứng dụng cũng hoạt động với các phiên bản Kubernetes cũ hơn, chẳng hạn như 1.12.

Ứng dụng được khởi chạy bằng cách sử dụng cấu hình tiêu chuẩn .kube/config - tương tự như cách nó làm kubectl.

Điều hướng

Theo mặc định, một cửa sổ sẽ mở ra với không gian tên mặc định được chỉ định cho ngữ cảnh. Đó là, nếu bạn đã viết kubectl config set-context --current --namespace=test, sau đó không gian tên sẽ mở test. (Xem bên dưới để thay đổi ngữ cảnh/không gian tên.)

Tổng quan về k9s - giao diện đầu cuối nâng cao cho Kubernetes

Đi đến chế độ lệnh được thực hiện bằng cách nhấn ":". Sau đó, bạn có thể kiểm soát hoạt động của k9s bằng các lệnh - ví dụ: để xem danh sách StatefulSets (trong không gian tên hiện tại), bạn có thể nhập :sts.

Tổng quan về k9s - giao diện đầu cuối nâng cao cho Kubernetes

Đối với một số tài nguyên Kubernetes khác:

  • :ns - không gian tên;
  • :deploy — Triển khai;
  • :ing - Xâm nhập;
  • :svc - Dịch vụ.

Để hiển thị danh sách đầy đủ các loại tài nguyên có sẵn để xem, có một lệnh :aliases.

Cũng thuận tiện để xem danh sách các lệnh có sẵn bằng tổ hợp phím nóng trong cửa sổ hiện tại: để thực hiện việc này, chỉ cần nhấp vào "?".

Tổng quan về k9s - giao diện đầu cuối nâng cao cho Kubernetes

Ngoài ra trong k9s còn có chế độ tìm kiếm, để đi đến đâu chỉ cần nhập "/". Với nó, một tìm kiếm được thực hiện trên nội dung của "cửa sổ" hiện tại. Giả sử nếu trước đây bạn đã nhập :ns, bạn có một danh sách các không gian tên đang mở. Nếu có quá nhiều trong số chúng, thì để không phải cuộn xuống trong một thời gian dài, chỉ cần nhập vào cửa sổ với các không gian tên là đủ /mynamespace.

Để tìm kiếm theo nhãn, bạn có thể chọn tất cả các nhóm trong không gian tên mong muốn, sau đó nhập, ví dụ: / -l app=whoami. Chúng tôi sẽ nhận được một danh sách các nhóm có nhãn này:

Tổng quan về k9s - giao diện đầu cuối nâng cao cho Kubernetes

Tìm kiếm hoạt động trong tất cả các loại cửa sổ, bao gồm nhật ký, xem bảng kê khai YAML và describe để biết tài nguyên - xem bên dưới để biết thêm chi tiết về các tính năng này.

Luồng điều hướng tổng thể trông như thế nào?

Với lệnh :ctx bạn có thể chọn một ngữ cảnh:

Tổng quan về k9s - giao diện đầu cuối nâng cao cho Kubernetes

Để chọn một không gian tên, có lệnh đã được đề cập :ns, sau đó bạn có thể sử dụng tính năng tìm kiếm không gian mong muốn: /test.

Nếu bây giờ chúng tôi chọn tài nguyên mà chúng tôi quan tâm (ví dụ: cùng một StatefulSet), thông tin tương ứng sẽ xuất hiện cho nó: có bao nhiêu nhóm đang chạy với thông tin ngắn gọn về chúng.

Tổng quan về k9s - giao diện đầu cuối nâng cao cho Kubernetes

Chỉ các nhóm có thể được quan tâm - sau đó là đủ để tham gia :pod. Trong trường hợp Bản đồ cấu hình (:cm - đối với danh sách các tài nguyên này), bạn có thể chọn đối tượng quan tâm và nhấp vào "u", sau đó K9s sẽ cho bạn biết ai cụ thể sử dụng nó (CM này).

Một tính năng hữu ích khác để xem tài nguyên là "x-quang" (Chế độ xem tia X). Chế độ này được gọi bằng lệnh :xray RESOURCE và ... việc chỉ ra cách thức hoạt động của nó sẽ dễ dàng hơn là giải thích. Đây là một minh họa cho StatefulSets:

Tổng quan về k9s - giao diện đầu cuối nâng cao cho Kubernetes
(Mỗi tài nguyên này có thể được chỉnh sửa, thay đổi, tạo describe.)

Và đây là Triển khai với Ingress:

Tổng quan về k9s - giao diện đầu cuối nâng cao cho Kubernetes

Làm việc với tài nguyên

Bạn có thể lấy thông tin về từng tài nguyên trong YAML hoặc tài nguyên của nó describe bằng cách nhấn các phím tắt tương ứng (“y” và “d”, tương ứng). Tất nhiên, thậm chí còn có nhiều thao tác cơ bản hơn: danh sách của chúng và các phím tắt luôn hiển thị nhờ một “tiêu đề” tiện lợi trong giao diện (ẩn bằng cách nhấn Ctrl + e).

Tổng quan về k9s - giao diện đầu cuối nâng cao cho Kubernetes

Khi chỉnh sửa bất kỳ tài nguyên nào ("e" sau khi được chọn), trình soạn thảo văn bản được xác định trong các biến môi trường sẽ được mở (export EDITOR=vim).

Và đây là mô tả chi tiết về tài nguyên (describe):

Tổng quan về k9s - giao diện đầu cuối nâng cao cho Kubernetes

Đầu ra này (hoặc đầu ra của việc xem bảng kê khai tài nguyên YAML) có thể được lưu bằng phím tắt quen thuộc Ctrl + s. Nơi nó sẽ được lưu sẽ được biết từ tin nhắn K9s:

Log /tmp/k9s-screens-root/kubernetes/Describe-1601244920104133900.yml saved successfully!

Bạn cũng có thể khôi phục tài nguyên từ các tệp sao lưu đã tạo sau khi xóa nhãn và chú thích hệ thống. Để làm điều này, bạn cần vào thư mục với họ (:dir /tmp), sau đó chọn tệp mong muốn và áp dụng apply.

Nhân tiện, bất cứ lúc nào bạn cũng có thể quay lại Bộ bản sao trước đó nếu có vấn đề với bộ hiện tại. Để thực hiện việc này, hãy chọn RS mong muốn (:rs cho danh sách của họ):

Tổng quan về k9s - giao diện đầu cuối nâng cao cho Kubernetes

... và khôi phục bằng Ctrl + l. Chúng ta sẽ nhận được thông báo rằng mọi thứ diễn ra tốt đẹp:

k9s/whoami-5cfbdbb469 successfully rolled back

Và để chia tỷ lệ các bản sao, chỉ cần nhấp vào "s" (tỷ lệ) và chọn số lượng bản sao mong muốn:

Tổng quan về k9s - giao diện đầu cuối nâng cao cho Kubernetes

Bạn có thể nhập bất kỳ vùng chứa nào bằng cách sử dụng trình bao: để thực hiện việc này, hãy chuyển đến nhóm mong muốn, nhấp vào "s" (vỏ) và chọn vùng chứa.

Các tính năng khác

Tất nhiên, việc xem nhật ký cũng được hỗ trợ ("l" cho tài nguyên đã chọn). Và để xem nhật ký mới, không cần phải nhấn Enter liên tục: chỉ cần đánh dấu ("m"), sau đó chỉ theo dõi tin nhắn mới.

Tổng quan về k9s - giao diện đầu cuối nâng cao cho Kubernetes

Cũng trong cùng một cửa sổ, bạn có thể chọn khoảng thời gian cho đầu ra của nhật ký:

  • phím "1" - trong 1 phút;
  • "2" - 5 phút;
  • "3" - 15 phút;
  • "4" - 30 phút;
  • "5" - 1 tiếng;
  • "0" - trong toàn bộ vòng đời của nhóm.

Chế độ vận hành đặc biệt Pulse (lệnh :pulse) hiển thị thông tin chung về cụm Kubernetes:

Tổng quan về k9s - giao diện đầu cuối nâng cao cho Kubernetes

Trong đó, bạn có thể thấy số lượng tài nguyên và trạng thái của chúng (màu xanh lá cây hiển thị những tài nguyên có trạng thái Running).

Một tính năng thú vị khác của K9 được gọi là Popeye. Nó kiểm tra tất cả các tài nguyên để biết các tiêu chí chính xác nhất định và hiển thị "xếp hạng" kết quả cùng với các giải thích. Ví dụ: bạn có thể thấy rằng không có đủ mẫu hoặc giới hạn và một số vùng chứa có thể chạy với quyền root ...

Tổng quan về k9s - giao diện đầu cuối nâng cao cho Kubernetes

Có hỗ trợ Helm cơ bản. Ví dụ: đây là cách bạn có thể xem các bản phát hành được triển khai trong cụm:

:helm all # все
:helm $namespace # в конкретном пространстве имен

điểm chuẩn

Thậm chí được tích hợp vào K9 hey là một trình tạo tải máy chủ HTTP đơn giản, một giải pháp thay thế cho ab (ApacheBench) được biết đến nhiều hơn.

Để bật tính năng này, bạn cần bật tính năng chuyển tiếp cổng trong nhóm. Để thực hiện việc này, hãy chọn nhóm và nhấn Shift + f, chuyển đến menu con chuyển tiếp cổng bằng bí danh "pf".

Tổng quan về k9s - giao diện đầu cuối nâng cao cho Kubernetes

Sau khi chọn cổng và nhấn Ctrl + b, điểm chuẩn sẽ tự bắt đầu. Kết quả công việc của anh ấy được lưu trữ trong /tmp và có sẵn để xem sau trong K9s.

Tổng quan về k9s - giao diện đầu cuối nâng cao cho Kubernetes
Tổng quan về k9s - giao diện đầu cuối nâng cao cho Kubernetes

Để thay đổi cấu hình của điểm chuẩn, bạn cần tạo một tệp $HOME/.k9s/bench-<my_context>.yml (được xác định cho từng cụm).

Lưu ý: Điều quan trọng là phần mở rộng của tất cả các tệp YAML trong một thư mục .k9s nó chính xác .yml (.yaml không hoạt động chính xác).

Ví dụ về cấu hình:

benchmarks:
  defaults:
    # Количество потоков
    concurrency: 2
    # Количество запросов
    requests: 1000
  containers:
    # Настройки для контейнера с бенчмарком
    # Контейнер определяется как namespace/pod-name:container-name
    default/nginx:nginx:
      concurrency: 2
      requests: 10000
      http:
        path: /
        method: POST
        body:
          {"foo":"bar"}
        header:
          Accept:
            - text/html
          Content-Type:
            - application/json
 services:
    # Можно проводить бенчмарк на сервисах типа NodePort и LoadBalancer
    # Синтаксис: namespace/service-name
    default/nginx:
      concurrency: 5
      requests: 500
      http:
        method: GET
        path: /auth
      auth:
        user: flant
        password: s3cr3tp455w0rd

Giao diện

Sự xuất hiện của các cột cho danh sách tài nguyên được sửa đổi bằng cách tạo một tệp $HOME/.k9s/views.yml. Một ví dụ về nội dung của nó:

k9s:
 views:
   v1/pods:
     columns:
       - AGE
       - NAMESPACE
       - NAME
       - IP
       - NODE
       - STATUS
       - READY
   v1/services:
     columns:
       - AGE
       - NAMESPACE
       - NAME
       - TYPE
       - CLUSTER-IP

Đúng, không có đủ cột cho các nhãn, trong đó có vấn đề trong dự án.

Sắp xếp theo cột được thực hiện bằng phím tắt:

  • Shift + n - theo tên;
  • Shift + o - theo nút;
  • Shift + i - theo IP;
  • Shift + a - theo thời gian tồn tại của vùng chứa;
  • Shift + t - theo số lần khởi động lại;
  • Shift + r - theo trạng thái sẵn sàng;
  • Shift + c - theo mức tiêu thụ CPU;
  • Shift + m - theo mức tiêu thụ bộ nhớ.

Nếu ai đó không thích bảng màu mặc định, K9s thậm chí còn hỗ trợ da. Ví dụ làm sẵn (7 miếng) có sẵn đây. Dưới đây là một ví dụ về một trong những giao diện này (trong Hải quân):

Tổng quan về k9s - giao diện đầu cuối nâng cao cho Kubernetes

Plugin

Cuối cùng, bổ sung cho phép bạn mở rộng khả năng của K9s. Bản thân tôi chỉ sử dụng một trong số chúng trong công việc của mình - kubectl get all -n $namespace.

Nó trông như thế này. Tạo một tập tin $HOME/.k9s/plugin.yml với nội dung như thế này:

plugin:
 get-all:
   shortCut: g    
   confirm: false    
   description: get all
   scopes:
   - all
   command: sh
   background: false
   args:
   - -c
   - "kubectl -n $NAMESPACE get all -o wide | less"

Bây giờ bạn có thể vào namespace và nhấn "g" để thực thi lệnh tương ứng:

Tổng quan về k9s - giao diện đầu cuối nâng cao cho Kubernetes

Ví dụ, trong số các plugin có tích hợp với kubectl-jq và một tiện ích để xem nhật ký nghiêm khắc.

Kết luận

Đối với sở thích của tôi, K9 hóa ra rất thuận tiện để làm việc: bạn có thể nhanh chóng làm quen với việc tìm kiếm mọi thứ bạn cần mà không cần sử dụng đến nó. kubectl. Tôi hài lòng với cách xem nhật ký và việc lưu, chỉnh sửa nhanh tài nguyên, tốc độ làm việc nói chung *, chế độ Popeye tỏ ra hữu ích. Một đề cập đặc biệt là khả năng tạo plugin và sửa đổi ứng dụng để phù hợp với nhu cầu của bạn.

* Mặc dù với khối lượng lớn nhật ký, tôi cũng nhận thấy hoạt động chậm chạp của K9s. Vào những thời điểm như vậy, tiện ích đã "ăn" 2 lõi của Intel Xeon E312xx và thậm chí có thể bị đóng băng.

Điều gì còn thiếu vào lúc này? Quay lại nhanh phiên bản trước (chúng tôi không nói về RS) mà không cần vào thư mục. Ngoài ra, phục hồi chỉ xảy ra cho chỉ resource: nếu bạn xóa một chú thích hoặc nhãn, bạn sẽ phải xóa và khôi phục lại toàn bộ tài nguyên (đây là nơi bạn cần vào thư mục). Một chuyện vặt vãnh khác - không có đủ ngày cho những "bản sao lưu" đã lưu như vậy.

PS

Đọc thêm trên blog của chúng tôi:

Nguồn: www.habr.com

Thêm một lời nhận xét