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:
- Tạo một cụm Kubernetes
- Tạo một cụm Amazon ES
- Triển khai tác nhân ghi nhật ký Fluentd trên cụm Kubernetes
- Hình dung ngày kubernetes trong Kibana
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ủ
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
- yum-config-manager –add-repo https://download.docker.com/linux/centos/docker-ce.repo
- yum install -y docker-ce
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 EOFCà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
- systemctl start kubelet && systemctl enable kubelet
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
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
- Đă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/
- 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.
- Trong Phiên bản, hãy để giá trị mặc định của trường Phiên bản Elasticsearch.
- Chọn Tiếp theo
- 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.
- 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
- 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.
- 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.
- Dưới mã hóa - Không bật tùy chọn này
- 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).
- Chọn Tiếp theo
- 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.
- Để đặ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ể.
- Chọn Tiếp theo.
- 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
- 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
- Để 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”
- chọn mẫu Chỉ mục mặc định (logstash- *)
- 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
- Nhấp vào Khám phá để xem nhật ký ứng dụng của bạn
- 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.