قم بتثبيت kubernetes عبر kubespray (التخزين المحلي ، قم بتثبيت Elasticsearch + Fluentd + Kibana ، prometheus)

كيفية رفع كتلة Kubernetes عالية التوفر وعدم انفجار الدماغ؟ استخدم Kubespray بالطبع.


Kubespray هي مجموعة من الأدوار Ansible لتثبيت وتكوين نظام تنسيق مع حاويات Kubernetes.


Kubernetes هو مشروع مفتوح المصدر مصمم لإدارة مجموعة حاويات Linux كنظام واحد. تدير Kubernetes وتدير الحاويات على عدد كبير من المضيفين ، بالإضافة إلى الاستضافة المشتركة وتكرار عدد كبير من الحاويات.


تنبيه ، تحت القط 4 لقطات من البحث المطاطي و 9 لقطات من بروميثيوس!


تحضير


هناك 3 عقد Centos 7 مع ذاكرة 8GB.
استخدام أفضل 16 جيجابايت
على كل عقدة ، قم بما يلي.
نقوم بتوصيل الأقراص ، التي نحتاج إلى أحجامها.


للمرونة ، تحتاج إلى 3 PVs أكبر من 30 GB (data.persstanding.size) و 2 PVs أكبر من 4GB (master.persstanding.size).


للقيام بذلك ، على كل عقدة ، قم بإنشاء قرصين من الأحجام التي نحتاجها.
تعتمد أحجام القرص على عدد البيانات الخاصة بك - تحتاج إلى التحقق تجريبيا.


Disk /dev/vdb: 21.5 GB Disk /dev/vdc: 53.7 GB 

من خلال fdisk نقوم بإنشاء كل قسم 1


في / mnt / disks إنشاء مجلد باسم قرصنا الجديد


 mkdir -p /mnt/disks/vdb1 mkdir -p /mnt/disks/vdc1 

إنشاء FS على محركات الأقراص هذه


 mkfs.xfs -f /dev/vdb1 mkfs.xfs -f /dev/vdc1 

تحميل الأقراص في هذا المجلد


 mount /dev/vdb1 /mnt/disks/vdb1 mount /dev/vdc1 /mnt/disks/vdc1 

تحقق


 mount | grep mnt /dev/vdb1 on /mnt/disks/vdb1 type xfs (rw,relatime,attr2,inode64,noquota) /dev/vdc1 on /mnt/disks/vdc1 type xfs (rw,relatime,attr2,inode64,noquota) 

قم بإيقاف تشغيل جدار الحماية على جميع العقد (أعتقد أنه عكاز ، ولكن حتى الآن)


 systemctl stop firewalld iptables -F 

قم بتنزيل kubespray وقم بتشغيل تثبيت kubernetes


 git clone https://github.com/kubernetes-incubator/kubespray.git cd kubespray git tags -   git checkout ' tag' sudo pip install -r requirements.txt 

نقوم بإحضار المخزون / العينة / hosts.ini إلى النموذج التالي (استبدل أسماء العقد الخاصة بك)


 [k8s-cluster:children] kube-master kube-node [all] test-tools-kuber-apatsev-1 ansible_host=ip-- ip=ip-- test-tools-kuber-apatsev-2 ansible_host=ip-- ip=ip-- test-tools-kuber-apatsev-3 ansible_host=ip-- ip=ip-- [kube-master] test-tools-kuber-apatsev-1 test-tools-kuber-apatsev-2 test-tools-kuber-apatsev-3 [kube-node] test-tools-kuber-apatsev-1 test-tools-kuber-apatsev-2 test-tools-kuber-apatsev-3 [etcd] test-tools-kuber-apatsev-1 test-tools-kuber-apatsev-2 test-tools-kuber-apatsev-3 [calico-rr] [vault] test-tools-kuber-apatsev-1 test-tools-kuber-apatsev-2 test-tools-kuber-apatsev-3 

قم بتغيير القيم أدناه في ملف الجرد / العينة / group_vars / k8s -uster / addons.yml


 helm_enabled: true #  helm   local_volume_provisioner_enabled: true #  local volume provisioner ingress_nginx_enabled: true #  ingress controller 

قم بإضافة المخزون / العينة / group_vars / k8s -uster.yml إلى نهاية الملف


 docker_dns_servers_strict: no #   'no',   DNS   3 

نبدأ التثبيت
قبل التثبيت ، اقرأ وثائق kubespray https://github.com/kubernetes-incubator/kubespray
ansible-playbook -u "مستخدم لديه sudo على العقد" -i الجرد / العينة / hosts.ini الكتلة.


التحقق من StorageClass


 kubectl get storageclass NAME PROVISIONER AGE local-storage kubernetes.io/no-provisioner 18m 

فحص PV


 kubectl get pv local-pv-26b51a64 49Gi RWO Delete Available local-storage 11m local-pv-5bec36e4 19Gi RWO Delete Available local-storage 14m local-pv-81c889eb 49Gi RWO Delete Available local-storage 13m local-pv-aa880f42 19Gi RWO Delete Available local-storage 10m local-pv-b6ffa66b 19Gi RWO Delete Available local-storage 11m local-pv-d465b035 49Gi RWO Delete Available local-storage 10m 

تهيئة هيلم


 helm init --service-account tiller 

نبدأ في تركيب elasticearch


 helm install stable/elasticsearch --namespace logging --name elasticsearch --set data.persistence.storageClass=local-storage,master.persistence.storageClass=local-storage 

انتظر 5 دقائق حتى يتم تثبيت البحث.


نجد الخدمة التي ستصل بين الكيبانا والفلانت. عادة ما يكون لدى العميل elasticearch في اسمه


 kubectl get services --namespace logging | grep elasticsearch elasticsearch-client ClusterIP 10.233.60.173 <none> 9200/TCP 19s elasticsearch-discovery ClusterIP None <none> 9300/TCP 19s 

يتم تحديد اسم عميل elasticearch- العميل عند تثبيت flasticd-elasticsearch


 helm install stable/fluentd-elasticsearch --namespace logging --set elasticsearch.host=elasticsearch-client 

يتم تحديد اسم عميل elasticsearch عند تثبيت الكيبانا


 helm install --namespace logging --set ingress.enabled=true,ingress.hosts[0]=kibana.mydomain.io --set env.ELASTICSEARCH_URL=http://elasticsearch-client:9200 stable/kibana 

نحن ننظر إلى أن جميع القرون لها حالة قيد التشغيل


 kubectl get pod --namespace=logging 

إذا كان هناك خطأ ، فإننا ننظر إلى السجلات.


 kubectl logs - --namespace logging 

أضف إلى DNS أو إلى ملف / etc / hosts


 IP-- kibana.mydomain.io IP-- kibana.mydomain.io IP-- kibana.mydomain.io 

ملاحظة: إذا كنت تريد إرسال سجلات إلى Elasticsearch الخارجي ، فيجب عليك بدء التثبيت باستخدام elasticsearch.host = dns-name-of-your-external-elasticsearch


انتقل إلى kibana.mydomain.io
انقر فوق نمط الفهرس



أدخل فهرس الأسماء بحيث يتطابق مع الفهرس أدناه



حدد الطابع الزمني @



وهنا تعمل EFK



نبدأ تثبيت kube-prometheus


تحميل عامل بروميثيوس


 git clone https://github.com/coreos/prometheus-operator.git 

انتقل إلى مجلد kube-prometheus


 cd prometheus-operator/contrib/kube-prometheus 

نبدأ التثبيت وفقًا للتعليمات على الموقع


 kubectl create -f manifests/ || true until kubectl get customresourcedefinitions servicemonitors.monitoring.coreos.com ; do date; sleep 1; echo ""; done until kubectl get servicemonitors --all-namespaces ; do date; sleep 1; echo ""; done kubectl create -f manifests/ 2>/dev/null || true 

قم بإنشاء ملف ingress-grafana-prometheus.yml


 apiVersion: extensions/v1beta1 kind: Ingress metadata: name: test namespace: monitoring spec: rules: - host: grafana.mydomain.io http: paths: - backend: serviceName: grafana servicePort: 3000 

إنشاء مورد دخول


 kubectl create -f ingress-grafana-prometheus.yml 

إضافة إلى DNS أو إلى ملف / etc / hosts


 IP-- grafana.mydomain.io IP-- grafana.mydomain.io IP-- grafana.mydomain.io 

انتقل إلى grafana.mydomain.io. أدخل اسم المستخدم / كلمة المرور القياسية: admin / admin
لقطات بروميثيوس:











ملاحظة: من الأفضل أن تكتب عن جميع الأخطاء على الفور.

Source: https://habr.com/ru/post/ar426959/


All Articles