كيفية رفع كتلة 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
لقطات بروميثيوس:









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