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









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