วิธีแสดงเหตุการณ์คลัสเตอร์ Kubernetes แบบเรียลไทม์

บล็อกโพสต์นี้จะช่วยให้คุณได้เรียนรู้วิธีเผยแพร่ข้อมูลเหตุการณ์คลัสเตอร์ Kubernetes ไปยัง Amazon Elastic Search โดยใช้ Fluentd Logging agent

ในบทความนี้คุณจะได้เรียนรู้วิธีเผยแพร่ข้อมูลเหตุการณ์คลัสเตอร์ Kubernetes ไปยัง Amazon โดยใช้ Fluentd logging agent จากนั้นข้อมูลจะถูกดูโดยใช้ เครื่องมือสร้างภาพแบบโอเพนซอร์สสำหรับ Elasticsearch Amazon ES ประกอบด้วยการรวม Kibana ในตัว

เราจะแนะนำคุณตลอดขั้นตอนต่อไปนี้:

ขั้นตอนที่ 1: การสร้างคลัสเตอร์ Kubernetes

Kubernetes เป็นแพลตฟอร์มโอเพ่นซอร์สที่ Google สร้างขึ้นเพื่อจัดการแอปพลิเคชันที่มีคอนเทนเนอร์ ช่วยให้คุณจัดการปรับขนาดและปรับใช้แอปที่มีคอนเทนเนอร์ของคุณในสภาพแวดล้อมคลัสเตอร์ เราสามารถจัดเตรียมคอนเทนเนอร์ของเราในโฮสต์ต่างๆด้วย ผู้ว่าการ ปรับขนาดแอปที่บรรจุด้วยทรัพยากรทั้งหมดได้ทันทีและมีสภาพแวดล้อมการจัดการคอนเทนเนอร์แบบรวมศูนย์

เราจะเริ่มต้นด้วยการสร้างคลัสเตอร์ Kubernetes และฉันจะสาธิตวิธีการติดตั้งและกำหนดค่า Kubernetes บน CentOS 7 ทีละขั้นตอน

หนึ่ง. กำหนดค่าโฮสต์

วิธีใช้พาวเวอร์ใน java
    • vi / etc / โฮสต์
    • ทำการเปลี่ยนแปลงตามรายละเอียดโฮสต์ของคุณในไฟล์โฮสต์

IMG1 - Elasticsearch - Edureka

2. ปิดการใช้งาน SELinux โดยดำเนินการคำสั่งด้านล่าง

    • setenforce 0
    • sed -i –follow-symlinks 's / SELINUX = บังคับใช้ / SELINUX = disabled / g' / etc / sysconfig / selinux

3. เปิดใช้งาน br_netfilter Kernel Module

โมดูล br_netfilter จำเป็นสำหรับการติดตั้ง kubernetes รันคำสั่งด้านล่างเพื่อเปิดใช้งานโมดูลเคอร์เนล br_netfilter
    • modprobe br_netfilter
    • echo ‘1’> / proc / sys / net / bridge / bridge-nf-call-iptables

สี่. ปิดการใช้งาน SWAP โดยเรียกใช้คำสั่งด้านล่าง

    • swapoff -a
    • จากนั้นแก้ไข / etc / fstab และแสดงความคิดเห็นที่ swap line

5. ติดตั้ง Docker CE เวอร์ชันล่าสุดติดตั้งการอ้างอิงแพ็คเกจสำหรับนักเทียบท่าโดยเรียกใช้คำสั่งด้านล่าง

    • yum install -y yum-utils device-mapper-persistent-data lvm2
เพิ่มที่เก็บนักเทียบท่าลงในระบบและติดตั้ง docker-ce โดยใช้คำสั่ง yum

6. ติดตั้ง Kubernetes

ใช้คำสั่งต่อไปนี้เพื่อเพิ่มที่เก็บ kubernetes เข้ากับระบบ centos 7
    • ยำติดตั้ง -y kubelet bebeadm kubectl

[kubernetes] name = Kubernetes baseurl = https: //packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64 เปิดใช้งาน = 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
ติดตั้งไฟล์ แพ็กเกจ kubeadm, kubelet และ kubectl โดยใช้คำสั่ง yum ด้านล่าง
  • systemctl start docker && systemctl เปิดใช้งานนักเทียบท่า

หลังจากการติดตั้งเสร็จสมบูรณ์ให้รีสตาร์ทเซิร์ฟเวอร์เหล่านั้นทั้งหมดหลังจากรีสตาร์ทให้เริ่มการทำงานของ services docker และ kubelet

  • systemctl start docker && systemctl เปิดใช้งานนักเทียบท่า
  • systemctl start kubelet && systemctl เปิดใช้งาน kubelet
7. การเริ่มต้นคลัสเตอร์ Kubernetes ล็อกอินเข้าสู่เซิร์ฟเวอร์หลักและรันคำสั่งด้านล่าง
  • systemctl start kubelet && systemctl เปิดใช้งาน kubelet
เมื่อการเริ่มต้น Kubernetes เสร็จสมบูรณ์คุณจะได้รับผลลัพธ์คัดลอกคำสั่งจากผลลัพธ์ที่คุณได้รับและดำเนินการเพื่อเริ่มใช้คลัสเตอร์ จดบันทึกคำสั่งเข้าร่วม kubeadm จากผลลัพธ์ คำสั่งนี้จะใช้เพื่อลงทะเบียนโหนดใหม่ไปยังคลัสเตอร์ kubernetes 8. ปรับใช้เครือข่ายผ้าสักหลาดกับคลัสเตอร์ kubernetes ใช้ kubectl -f

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

เครือข่ายผ้าสักหลาดถูกนำไปใช้กับคลัสเตอร์ Kubernetes แล้ว รอสักครู่แล้วตรวจสอบโหนด kubernetes และพ็อดโดยใช้คำสั่งด้านล่าง
    • kubectl รับโหนด
    • kubectl รับพ็อด - เนมสเปซทั้งหมด
และคุณจะได้รับโหนด 'k8s-master' ทำงานเป็นคลัสเตอร์ 'หลัก' พร้อมสถานะ 'พร้อม' และคุณจะได้รับพ็อดทั้งหมดที่จำเป็นสำหรับคลัสเตอร์รวมถึง 'kube-flannel-ds' สำหรับพ็อดเครือข่าย การกำหนดค่า

9. การเพิ่มโหนดในคลัสเตอร์เชื่อมต่อกับเซิร์ฟเวอร์ node01 และรันคำสั่ง kubeadm join

    • kubeadm เข้าร่วม 172.31.7.47:6443 –token at03m9.iinkh5ps9q12sh2i –discovery-token-ca-cert-hash sha256: 3f6c1824796ef1ff3d9427c883bde915d5bc13331d74891d831f29a8c4c4a

เชื่อมต่อกับเซิร์ฟเวอร์ node02 และรันคำสั่ง kubeadm join

    • kubeadm เข้าร่วม 172.31.7.47:6443 –token at03m9.iinkh5ps9q12sh2i –discovery-token-ca-cert-hash sha256: 3f6c1824796ef1ff3d9427c883bde915d5bc13331d74891d831f29a8c4c4a

รอสักครู่และตรวจสอบเซิร์ฟเวอร์คลัสเตอร์หลัก 'k8s-master' ตรวจสอบโหนดและพ็อดโดยใช้คำสั่งต่อไปนี้

      • kubectl รับโหนด

ตอนนี้คุณจะได้รับเพิ่ม worker1 และ worker2 ในคลัสเตอร์ด้วยสถานะ 'พร้อม'

      • kubectl รับพ็อด - เนมสเปซทั้งหมด

การเริ่มต้นและการกำหนดค่าหลักคลัสเตอร์ Kubernetes เสร็จสมบูรณ์แล้ว

ขั้นตอนที่ 2: การสร้างคลัสเตอร์ Amazon ES

Elasticsearch เป็นเครื่องมือค้นหาและวิเคราะห์โอเพ่นซอร์สซึ่งใช้สำหรับการวิเคราะห์บันทึกและการตรวจสอบแอปพลิเคชันแบบเรียลไทม์ Amazon Elasticsearch Service (Amazon ES) เป็นบริการ AWS ที่ช่วยให้สามารถปรับใช้การใช้งานและขนาดของ Elasticsearch ใน AWS Cloud ได้ คุณสามารถใช้ Amazon ES เพื่อวิเคราะห์เหตุการณ์การส่งอีเมลจาก Amazon SES ของคุณ

เราจะสร้างคลัสเตอร์ Amazon ES จากนั้นปรับใช้ Fluentd logging agent ไปยังคลัสเตอร์ Kubernetes ซึ่งจะรวบรวมบันทึกและส่งไปยังคลัสเตอร์ Amazon ES

ส่วนนี้แสดงวิธีใช้คอนโซล Amazon ES เพื่อสร้างคลัสเตอร์ Amazon ES

เพื่อสร้างคลัสเตอร์ Amazon ES

    1. ลงชื่อเข้าใช้ AWS Management Console และเปิดคอนโซล Amazon Elasticsearch Service ที่ https://console.aws.amazon.com/es/
    2. เลือก สร้างโดเมนใหม่และเลือกประเภทการปรับใช้ ในคอนโซล Amazon ES.
    3. ภายใต้เวอร์ชันให้ใช้ค่าเริ่มต้นของฟิลด์เวอร์ชัน Elasticsearch
    4. เลือกถัดไป
    5. พิมพ์ชื่อโดเมนการค้นหา Elastic ของคุณในไฟล์ กำหนดค่าคลัสเตอร์ หน้าภายใต้ กำหนดค่าโดเมน
    6. ในหน้ากำหนดค่าคลัสเตอร์เลือกตัวเลือกต่อไปนี้ภายใต้อินสแตนซ์ข้อมูล
      • ประเภทอินสแตนซ์ - เลือก t2.micro.elasticsearch (มีสิทธิ์ระดับฟรี)
      • จำนวนอินสแตนซ์ - หนึ่ง
    7. ภายใต้อินสแตนซ์มาสเตอร์เฉพาะ
      • เปิดใช้งานต้นแบบเฉพาะ - อย่าเปิดใช้งานตัวเลือกนี้
      • เปิดใช้งานการรับรู้โซน - อย่าเปิดใช้งานตัวเลือกนี้.
    8. ภายใต้การกำหนดค่าที่เก็บข้อมูลให้เลือกตัวเลือกต่อไปนี้
      • ประเภทการจัดเก็บ - เลือก EBS สำหรับการตั้งค่า EBS ให้เลือกประเภทโวลุ่ม EBS ของ General Purpose (SSD) และขนาดโวลุ่ม EBS& thinspจาก 10.
    9. ภายใต้การเข้ารหัส - อย่าเปิดใช้งานตัวเลือกนี้
    10. ภายใต้การกำหนดค่าสแนปชอต
      • ชั่วโมงเริ่มต้นสแนปชอตอัตโนมัติ - เลือกสแนปช็อตอัตโนมัติชั่วโมงเริ่มต้น 00:00 UTC (ค่าเริ่มต้น)
    11. เลือกถัดไป
    12. ภายใต้การกำหนดค่าเครือข่ายเลือกการเข้าถึง VPC และเลือกรายละเอียดตามที่ VPC ของคุณแสดงไว้ด้านล่างภายใต้การพิสูจน์ตัวตน Kibana: - อย่าเปิดใช้งานตัวเลือกนี้
    13. ในการตั้งค่านโยบายการเข้าถึงให้เลือกอนุญาตการเข้าถึงโดเมนแบบเปิดหมายเหตุ: - ในการผลิตคุณควร จำกัด การเข้าถึงเฉพาะที่อยู่ IP หรือช่วง
    14. เลือกถัดไป
    15. ในหน้าตรวจสอบตรวจสอบการตั้งค่าของคุณจากนั้นเลือกยืนยันและสร้าง

หมายเหตุ: คลัสเตอร์จะใช้เวลาถึงสิบนาทีในการปรับใช้ จด URL Kibana ของคุณเมื่อคุณคลิกโดเมนการค้นหาแบบยืดหยุ่นที่สร้างขึ้น

ขั้นตอนที่ 3: ปรับใช้ Fluentd Logging Agent บนคลัสเตอร์ Kubernetes

Fluentd เป็นตัวรวบรวมข้อมูลแบบโอเพนซอร์สซึ่งช่วยให้คุณสามารถรวมการรวบรวมและการใช้ข้อมูลเพื่อการใช้งานและทำความเข้าใจข้อมูลได้ดีขึ้น ในกรณีนี้เราจะปรับใช้ Fluentd logging บนคลัสเตอร์ Kubernetes ซึ่งจะรวบรวมไฟล์บันทึกและส่งไปยัง Amazon Elastic Search

เราจะสร้าง ClusterRole ซึ่งให้สิทธิ์บนพ็อดและเนมสเปซออบเจ็กต์เพื่อสร้างรายการและดูคำขอไปยังคลัสเตอร์

ขั้นแรกเราต้องกำหนดค่าสิทธิ์ RBAC (การควบคุมการเข้าถึงตามบทบาท) เพื่อให้ Fluentd สามารถเข้าถึงส่วนประกอบที่เหมาะสมได้

1.fluentd-rbac.yaml:

apiVersion: v1 ชนิด: ServiceAccount metadata: name: fluentd namespace: kube-system --- apiVersion: rbac.authorization.k8s.io/v1beta1 ชนิด: ClusterRole metadata: name: fluentd namespace: kube-system rules: - apiGroups: - ' 'resources: - pods - namespaces verbs: - get - list - watch --- kind: ClusterRoleBinding apiVersion: rbac.authorization.k8s.io/v1beta1 metadata: name: fluentd roleRef: kind: ClusterRole name: fluentd apiGroup: rbac.authorization .k8s.io subject: - kind: ServiceAccount name: fluentd namespace: kube-system

สร้าง: $ kubectl สร้าง -f kubernetes / fluentd-rbac.yaml
ตอนนี้เราสามารถสร้าง DaemonSet

2. fluentd-daemonset.yaml

apiVersion: extensions / v1beta1 ชนิด: DaemonSet metadata: name: fluentd namespace: kube-system labels: k8s-app: fluentd-logging version: v1 kubernetes.io/cluster-service: 'true' spec: template: metadata: label: k8s -app: fluentd-logging version: v1 kubernetes.io/cluster-service: 'true' spec: serviceAccount: fluentd serviceAccountName: fluentd tolerations: - key: node-role.kubernetes.io/master effect: NoSchedule container: - name: รูปภาพ fluentd: fluent / fluentd-kubernetes-daemonset: v1.3-debian-elasticsearch env: - name: FLUENT_ELASTICSEARCH_HOST ค่า: 'elasticsearch.logging' - ชื่อ: FLUENT_ELASTICSEARCH_PORT ค่า: '9200' - ชื่อ: ค่า FLUENT_ELASTICSE - http ' ชื่อ: ค่า FLUENT_UID: ทรัพยากร '0': ข้อ จำกัด : หน่วยความจำ: คำขอ 200Mi: cpu: หน่วยความจำ 100m: 200Mi volumeMounts: - name: varlog mountPath: / var / log - name: varlibdockercontainers mountPath: / var / lib / docker / container readOnly : true terminationGracePeriodSeconds: 30 วอลุ่ม: - name: varlog hostPath: path: / var / log - name: varlibdockercontainers hostPath: path: / var / lib / docker / container

อย่าลืมกำหนด FLUENT_ELASTICSEARCH_HOST & FLUENT_ELASTICSEARCH_PORT ตามสภาพแวดล้อมการค้นหาแบบยืดหยุ่นของคุณ

ปรับใช้:

วิธีการใช้วิธีนามธรรมใน java

$ kubectl สร้าง -f kubernetes / fluentd-daemonset.yaml

ตรวจสอบความถูกต้องของบันทึก

บันทึก $ kubectl ได้อย่างคล่องแคล่วd-lwbt6 -n kube-system | การเชื่อมต่อ grep

คุณจะเห็นว่า Fluentd เชื่อมต่อกับ Elasticsearch ภายในบันทึก:

ขั้นตอนที่ 4: แสดงภาพข้อมูล kubernetes ใน Kibana

  1. เชื่อมต่อกับ URL แดชบอร์ด kibana เพื่อรับจากคอนโซล Amazon ES
  2. หากต้องการดูบันทึกที่ Fluentd รวบรวมไว้ใน Kibana ให้คลิก 'การจัดการ' จากนั้นเลือก 'รูปแบบดัชนี' ภายใต้ 'Kibana'
  3. เลือกรูปแบบดัชนีเริ่มต้น (logstash- *)
  4. คลิกขั้นตอนถัดไปและตั้งค่า“ ชื่อช่องตัวกรองเวลา” (@timestamp) แล้วเลือกสร้างรูปแบบดัชนี
  5. คลิกค้นพบเพื่อดูบันทึกแอปพลิเคชันของคุณ
  6. คลิกแสดงภาพและเลือกสร้างการแสดงภาพและเลือกพาย กรอกข้อมูลในฟิลด์ต่อไปนี้ตามที่แสดงด้านล่าง
    • เลือก Logstash- * index แล้วคลิกแยกชิ้น
    • การรวม - เงื่อนไขที่สำคัญ
    • ฟิลด์ = Kubernetes.pod_name.keyword
    • ขนาด - 10

7. และใช้การเปลี่ยนแปลง

แค่นั้นแหละ! นี่คือวิธีที่คุณจะเห็นภาพ Kubernetes Pod ที่สร้างใน Kibana

สรุป :

การตรวจสอบโดยการวิเคราะห์บันทึกเป็นองค์ประกอบสำคัญของการปรับใช้แอปพลิเคชันใด ๆ คุณสามารถรวบรวมและรวมบันทึกระหว่างคลัสเตอร์ของคุณใน Kubernetes เพื่อตรวจสอบคลัสเตอร์ทั้งหมดจากแดชบอร์ดเดียว ในตัวอย่างของเราเราได้เห็นการดำเนินการที่คล่องแคล่วเป็นสื่อกลางระหว่างคลัสเตอร์ kubernetes และ Amazon ES Fluentd รวมการรวบรวมบันทึกและการรวมเข้าด้วยกันและส่งบันทึกไปยัง Amazon ES สำหรับการวิเคราะห์บันทึกและการแสดงข้อมูลด้วย kibana

ตัวอย่างข้างต้นแสดงวิธีเพิ่ม AWS Elastic search logging และ kibana Monitoring ไปยัง kubernetes cluster โดยใช้ fluentd

หากคุณพบว่าบล็อก Kubernetes นี้เกี่ยวข้องโปรดดูที่ โดย Edureka บริษัท การเรียนรู้ออนไลน์ที่เชื่อถือได้ซึ่งมีเครือข่ายผู้เรียนที่พึงพอใจมากกว่า 250,000 คนกระจายอยู่ทั่วโลก

มีคำถามสำหรับเรา? โปรดระบุไว้ในส่วนความคิดเห็นแล้วเราจะติดต่อกลับไป