Cách trực quan hóa sự kiện cụm Kubernetes trong thời gian thực



Bài đăng trên blog này sẽ hướng dẫn bạn học cách xuất bản dữ liệu sự kiện cụm Kubernetes lên Amazon Elastic Search bằng cách sử dụng tác nhân ghi nhật ký Fluentd.

Trong bài viết này, bạn sẽ học cách xuất bản dữ liệu sự kiện cụm Kubernetes lên Amazon sử dụng tác nhân ghi nhật ký Fluentd. Dữ liệu sau đó sẽ được xem bằng cách sử dụng , một công cụ trực quan hóa mã nguồn mở cho Elasticsearch. Amazon ES bao gồm tích hợp Kibana tích hợp.

Chúng tôi sẽ hướng dẫn bạn quy trình sau:





Bước 1: Tạo một cụm Kubernetes

Kubernetes là một nền tảng mã nguồn mở do Google tạo ra để quản lý các ứng dụng trong vùng chứa. nó cho phép bạn quản lý, mở rộng quy mô và triển khai các ứng dụng được chứa trong một môi trường nhóm. Chúng tôi có thể sắp xếp các vùng chứa của mình trên các máy chủ khác nhau với Thống đốc , mở rộng quy mô các ứng dụng được chứa trong vùng chứa với tất cả tài nguyên đang hoạt động và có môi trường quản lý vùng chứa tập trung.

Chúng tôi sẽ bắt đầu với việc tạo cụm Kubernetes và tôi sẽ hướng dẫn bạn từng bước về cách cài đặt và định cấu hình Kubernetes trên CentOS 7.



một. Định cấu hình máy chủ

cách ngăn chặn deadlock trong java
    • vi / etc / hosts
    • thực hiện các thay đổi theo chi tiết máy chủ của bạn trong tệp máy chủ

IMG1 - Elasticsearch - Edureka

2. Tắt SELinux bằng cách thực hiện các lệnh dưới đây



    • setenforce 0
    • sed -i –follow-symlinks ‘s / SELINUX = thi hành / SELINUX = bị vô hiệu hóa / g’ / etc / sysconfig / selinux

3. Bật mô-đun hạt nhân br_netfilter

Mô-đun br_netfilter là bắt buộc để cài đặt kubernetes. Chạy lệnh bên dưới để bật mô-đun hạt nhân br_netfilter.
    • modprobe br_netfilter
    • echo ‘1’> / proc / sys / net / bridge / bridge-nf-call-iptables

Bốn. Tắt SWAP bằng cách chạy các lệnh bên dưới.

    • hoán đổi -a
    • Sau đó chỉnh sửa / etc / fstab và nhận xét dòng hoán đổi

5. Cài đặt phiên bản mới nhất của Docker CE.Cài đặt các gói phụ thuộc cho docker-ce bằng cách chạy các lệnh dưới đây.

    • yum install -y yum-utils device-mapper-fixed-data lvm2
Thêm kho lưu trữ docker vào hệ thống và cài đặt docker-ce bằng lệnh yum.

6. Cài đặt Kubernetes

Sử dụng lệnh sau để thêm kho lưu trữ kubernetes vào hệ thống centos 7.
    • yum install -y kubelet bebeadm kubectl

[kubernetes] name = Kubernetes baseurl = https: //packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64 đã bật = 1 gpgcheck = 1 repo_gpgcheck = 1 gpgkey = https: //packages.cloud.google. com / yum / doc / yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg EOF
Cài đặt các gói kubeadm, kubelet và kubectl bằng cách chạy lệnh yum bên dưới.
  • systemctl start docker & & systemctl enable docker

Sau khi cài đặt xong, hãy khởi động lại tất cả các máy chủ đó.Sau khi khởi động lại, hãy bắt đầu docker dịch vụ và kubelet

  • systemctl start docker & & systemctl enable docker
  • systemctl start kubelet && systemctl enable kubelet
7. Khởi tạo cụm Kubernetes Đăng nhập vào máy chủ chính và chạy lệnh dưới đây
  • systemctl start kubelet && systemctl enable kubelet
Sau khi khởi tạo Kubernetes hoàn tất, bạn sẽ nhận được kết quả.Sao chép các lệnh từ kết quả bạn nhận được và Thực thi nó để bắt đầu sử dụng cụm. Ghi lại lệnh tham gia kubeadm từ kết quả. Lệnh sẽ được sử dụng để đăng ký các nút mới vào cụm kubernetes. số 8. Triển khai mạng flannel đến cụm kubernetes kubectl áp dụng -f

https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

Mạng flannel đã được triển khai đến cụm Kubernetes. Chờ một lúc rồi kiểm tra nút và nhóm kubernetes bằng các lệnh bên dưới.
    • kubectl nhận các nút
    • kubectl get pods –all-namespaces
Và bạn sẽ nhận được nút 'k8s-master' đang chạy như một cụm 'chính' với trạng thái 'sẵn sàng' và bạn sẽ nhận được tất cả các nhóm cần thiết cho cụm, bao gồm cả 'kube-flannel-ds' cho nhóm mạng cấu hình.

9. Thêm nút vào cụmKết nối với máy chủ node01 và chạy lệnh tham gia kubeadm

    • tham gia kubeadm 172.31.7.47:6443 –token at03m9.iinkh5ps9q12sh2i –discovery-token-ca-cert-hash sha256: 3f6c1824796ef1ff3d9427c883bde915d5bc13331d74891d831f29a8c4a0c5ab

Kết nối với máy chủ node02 và chạy lệnh tham gia kubeadm

    • tham gia kubeadm 172.31.7.47:6443 –token at03m9.iinkh5ps9q12sh2i –discovery-token-ca-cert-hash sha256: 3f6c1824796ef1ff3d9427c883bde915d5bc13331d74891d831f29a8c4a0c5ab

Chờ một lúc và Xác thực máy chủ cụm chính ‘k8s-master’, kiểm tra các nút và nhóm bằng lệnh sau.

      • kubectl nhận các nút

Bây giờ bạn sẽ nhận được worker1 và worker2 đã được thêm vào cụm với trạng thái ‘sẵn sàng’.

      • kubectl get pods –all-namespaces

Quá trình khởi tạo và cấu hình chủ cụm Kubernetes đã hoàn tất.

Bước 2: Tạo một cụm Amazon ES

Elasticsearch là một công cụ phân tích và tìm kiếm mã nguồn mở được sử dụng để phân tích nhật ký và theo dõi các ứng dụng theo thời gian thực. Dịch vụ Amazon Elasticsearch (Amazon ES) là một dịch vụ AWS cho phép triển khai, vận hành và quy mô của Elasticsearch trên đám mây AWS. Bạn có thể sử dụng Amazon ES để phân tích các sự kiện gửi email từ Amazon SES của mình

Chúng tôi sẽ tạo một cụm Amazon ES và sau đó Triển khai tác nhân ghi nhật ký Fluentd đến cụm Kubernetes, cụm này sẽ thu thập nhật ký và gửi đến cụm Amazon ES

Phần này trình bày cách sử dụng bảng điều khiển Amazon ES để tạo một cụm Amazon ES.

Để tạo một cụm Amazon ES

    1. Đăng nhập vào Bảng điều khiển quản lý AWS và mở bảng điều khiển Dịch vụ Amazon Elasticsearch tại https://console.aws.amazon.com/es/
    2. Lựa chọn Tạo miền mới và chọn loại triển khai trong bảng điều khiển Amazon ES.
    3. Trong Phiên bản, hãy để giá trị mặc định của trường Phiên bản Elasticsearch.
    4. Chọn Tiếp theo
    5. Nhập tên cho miền tìm kiếm đàn hồi của bạn trên cấu hình cụm trang dưới Định cấu hình miền.
    6. Trên trang Định cấu hình cụm, chọn các tùy chọn sau trong Phiên bản dữ liệu
      • Loại phiên bản - Chọn t2.micro.elasticsearch (Bậc miễn phí đủ điều kiện).
      • Số lượng phiên bản - một
    7. DướiPhiên bản chính chuyên dụng
      • Bật chế độ chính chuyên dụng - Không bật tùy chọn này.
      • Cho phép nhận biết vùng - Không bật tùy chọn này.
    8. Trong Cấu hình bộ nhớ, hãy chọn các tùy chọn sau.
      • Loại lưu trữ - Chọn EBS. Đối với cài đặt EBS, hãy chọn loại âm lượng EBS của Mục đích chung (SSD) và kích thước âm lượng EBS& thinspcủa 10.
    9. Dưới mã hóa - Không bật tùy chọn này
    10. Trong cấu hình ảnh chụp nhanh
      • Giờ bắt đầu chụp nhanh tự động - Chọn Giờ bắt đầu chụp nhanh tự động 00:00 UTC (mặc định).
    11. Chọn Tiếp theo
    12. Trong Cấu hình mạng, chọn Quyền truy cập VPC và chọn chi tiết theo VPC của bạn được hiển thị bên dưới.Dưới xác thực Kibana: - Không bật tùy chọn này.
    13. Để đặt chính sách truy cập, hãy chọn Cho phép truy cập mở vào miền.Lưu ý: - Trong sản xuất, bạn nên hạn chế quyền truy cập vào Địa chỉ IP hoặc Phạm vi cụ thể.
    14. Chọn Tiếp theo.
    15. Trên trang Xem lại, hãy xem lại cài đặt của bạn, sau đó chọn Xác nhận và Tạo.

Lưu ý: Cụm sẽ mất đến mười phút để triển khai. Ghi lại URL Kibana của bạn khi bạn nhấp vào miền tìm kiếm đàn hồi đã tạo.

Bước 3: Triển khai tác nhân ghi nhật ký Fluentd trên cụm Kubernetes

Fluentd là một trình thu thập dữ liệu nguồn mở, cho phép bạn thống nhất việc thu thập và tiêu thụ dữ liệu để sử dụng và hiểu dữ liệu tốt hơn. Trong trường hợp này, chúng tôi sẽ triển khai ghi nhật ký Fluentd trên cụm Kubernetes, cụm này sẽ thu thập các tệp nhật ký và gửi đến Amazon Elastic Search.

Chúng tôi sẽ tạo một ClusterRole cung cấp quyền trên các nhóm và các đối tượng không gian tên để thực hiện yêu cầu nhận, liệt kê và xem để phân cụm.

Đầu tiên, chúng ta cần cấu hình quyền RBAC (kiểm soát truy cập dựa trên vai trò) để Fluentd có thể truy cập các thành phần thích hợp.

1.fluentd-rbac.yaml:

apiVersion: v1 loại: Siêu dữ liệu ServiceAccount: tên: không gian tên thông thạo: kube-system --- apiVersion: rbac.authorization.k8s.io/v1beta1 loại: Siêu dữ liệu ClusterRole: tên: không gian tên thông thạo: quy tắc hệ thống kube: - apiGroups: - ' 'resources: - pods - namespaces verbs: - get - list - watch --- kind: ClusterRoleBinding apiVersion: rbac.authorization.k8s.io/v1beta1 metadata: name: flud roleRef: kind: ClusterRole name: flud apiGroup: rbac.authorization .k8s.io các chủ thể: - loại: Tên tài khoản dịch vụ: không gian tên lưu loát: kube-system

Tạo: $ kubectl create -f kubernetes / Fluid-rbac.yaml
Bây giờ, chúng ta có thể tạo DaemonSet.

2. thông thạod-daemonset.yaml

apiVersion: extension / v1beta1 kind: DaemonSet siêu dữ liệu: name: không gian tên thông thạo: kube-system label: k8s-app: phiên bản ghi nhận thông thạo: v1 kubernetes.io/cluster-service: 'true' spec: mẫu: siêu dữ liệu: nhãn: k8s -app: phiên bản ghi chép thông thạo: v1 kubernetes.io/cluster-service: 'true' spec: serviceAccount: thông thạod serviceAccountName: dung nạp thông thạo: - key: node-role.kubernetes.io/master effect: NoSchedule container: - name: ảnh lưu loát: thông thạo / lưu loát-kubernetes-daemonset: v1.3-debian-đàn hồi giá trị env: - tên: FLUENT_ELASTICSEARCH_HOST giá trị: 'đàn hồi.logging' - tên: FLUENT_ELASTICSEARCH_PORT giá trị: '9200' - tên: FLUENT_ELASTIC '- tên: FLUENT_ELASTIC' - giá trị: FLUENT_ELASTIC tên: FLUENT_UID giá trị: '0' tài nguyên: giới hạn: bộ nhớ: 200Mi yêu cầu: cpu: 100m bộ nhớ: 200Mi volume Số lượng: - name: varlog mountPath: / var / log - name: varlibdockercontainers mountPath: / var / lib / docker / container readOnly : true endGracePeriodSeconds: 30 tập: - name: varlog hostPath: path: / var / log - name: varlibdockercontainers hostPath: path: / var / lib / docker / container

Đảm bảo xác định FLUENT_ELASTICSEARCH_HOST & FLUENT_ELASTICSEARCH_PORT theo môi trường tìm kiếm linh hoạt của bạn

Triển khai:

các loại khuôn khổ trong selen

$ kubectl create -f kubernetes / Fluid-daemonset.yaml

Xác thực nhật ký

$ kubectl nhật ký thông thạod-lwbt6 -n kube-system | kết nối grep

Bạn sẽ thấy rằng Fluentd kết nối với Elasticsearch trong nhật ký:

Bước 4: Trực quan hóa dữ liệu kubernetes trong Kibana

  1. Kết nối với URL bảng điều khiển kibana để truy cập từ bảng điều khiển Amazon ES
  2. Để xem nhật ký được Fluentd trong Kibana thu thập, hãy nhấp vào “Quản lý” và sau đó chọn “Mẫu chỉ mục” trong “Kibana”
  3. chọn mẫu Chỉ mục mặc định (logstash- *)
  4. Nhấp vào Bước tiếp theo và đặt “Tên trường bộ lọc thời gian” (@timestamp) và chọn Tạo mẫu chỉ mục
  5. Nhấp vào Khám phá để xem nhật ký ứng dụng của bạn
  6. Nhấp vào Hình ảnh hóa và chọn tạo hình ảnh hóa và chọn Hình tròn. Điền vào các trường sau như được hiển thị bên dưới.
    • Chọn chỉ mục Logstash- * và nhấp vào các lát chia nhỏ
    • Tổng hợp - Các điều khoản quan trọng
    • Trường = Kubernetes.pod_name.keyword
    • Cỡ 10

7. Và áp dụng các thay đổi

Đó là nó! Đây là cách bạn có thể hình dung Kubernetes Pod được tạo trong Kibana.

Tóm lược :

Giám sát bằng phân tích nhật ký là một thành phần quan trọng của bất kỳ triển khai ứng dụng nào. Bạn có thể thu thập và hợp nhất nhật ký trên toàn bộ cụm của mình trong Kubernetes để theo dõi toàn bộ cụm từ một bảng điều khiển duy nhất. Trong ví dụ của chúng tôi, chúng tôi đã thấy thông thạod hoạt động như một người trung gian giữa cụm kubernetes và Amazon ES. Fluentd kết hợp thu thập và tổng hợp nhật ký và gửi nhật ký đến Amazon ES để phân tích nhật ký và trực quan hóa dữ liệu với kibana.

Ví dụ trên cho thấy cách thêm ghi nhật ký tìm kiếm AWS Elastic và giám sát kibana vào cụm kubernetes bằng cách sử dụng thông thạod.

Nếu bạn thấy blog Kubernetes này có liên quan, hãy xem của Edureka, một công ty học trực tuyến đáng tin cậy với mạng lưới hơn 250.000 người học hài lòng trải dài trên toàn cầu.

Có một câu hỏi cho chúng tôi? Vui lòng đề cập đến nó trong phần bình luận và chúng tôi sẽ liên hệ lại với bạn.