Bagaimana cara meningkatkan kluster Kubernetes Ketersediaan Tinggi dan tidak meledak otak? Gunakan Kubespray, tentu saja.
Kubespray adalah seperangkat peran yang Mungkin untuk menginstal dan mengkonfigurasi sistem orkestrasi dengan wadah Kubernetes.
Kubernetes adalah proyek sumber terbuka yang dirancang untuk mengelola cluster penampung Linux sebagai satu sistem. Kubernet mengelola dan menjalankan kontainer pada sejumlah besar host, serta menjadi tuan rumah bersama dan mereplikasi sejumlah besar kontainer.
Perhatian, di bawah kucing 4 tangkapan layar elasticsearch dan 9 tangkapan layar prometheus!
Persiapan
Ada 3 Centos 7 node dengan memori 8GB.
Lebih baik gunakan 16GB
Pada setiap node, lakukan hal berikut.
Kami menghubungkan disk, ukuran yang kami butuhkan.
Untuk elastis, Anda memerlukan 3 PV lebih besar dari 30GB (data.persistence.size) dan 2 PV lebih besar dari 4GB (master.persistence.size).
Untuk melakukan ini, pada setiap node, buat 2 disk dengan ukuran yang kita butuhkan.
Ukuran disk tergantung pada jumlah data Anda - Anda perlu memeriksa secara eksperimental.
Disk /dev/vdb: 21.5 GB Disk /dev/vdc: 53.7 GB 
Melalui fdisk kami buat di setiap 1 bagian
Di / mnt / disk, buat folder dengan nama disk baru kami
 mkdir -p /mnt/disks/vdb1 mkdir -p /mnt/disks/vdc1 
Buat FS pada drive ini
 mkfs.xfs -f /dev/vdb1 mkfs.xfs -f /dev/vdc1 
Pasang disk di folder ini
 mount /dev/vdb1 /mnt/disks/vdb1 mount /dev/vdc1 /mnt/disks/vdc1 
Periksa
 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) 
Matikan Firewall di semua node (saya pikir itu penopang, tapi sejauh ini)
 systemctl stop firewalld iptables -F 
Unduh kubespray dan jalankan instalasi kubernetes
 git clone https://github.com/kubernetes-incubator/kubespray.git cd kubespray git tags -   git checkout ' tag' sudo pip install -r requirements.txt 
Kami membawa inventaris / sampel / hosts.ini ke formulir berikut (ganti nama node dengan milik Anda)
 [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 
Ubah nilai-nilai di bawah ini dalam inventaris file / sample / group_vars / k8s-cluster / addons.yml
 helm_enabled: true #  helm   local_volume_provisioner_enabled: true #  local volume provisioner ingress_nginx_enabled: true #  ingress controller 
Tambahkan inventaris / sampel / group_vars / k8s-cluster.yml ke akhir file
 docker_dns_servers_strict: no #   'no',   DNS   3 
Kami memulai instalasi
Sebelum menginstal, baca dokumentasi kubespray https://github.com/kubernetes-incubator/kubespray
ansible-playbook -u 'pengguna yang memiliki sudo pada node' -i inventaris / sampel / hosts.ini cluster.yml -b
Memeriksa StorageClass
 kubectl get storageclass NAME PROVISIONER AGE local-storage kubernetes.io/no-provisioner 18m 
Memeriksa 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 
Inisialisasi Helm
 helm init --service-account tiller 
Kami memulai instalasi elasticsearch
 helm install stable/elasticsearch --namespace logging --name elasticsearch --set data.persistence.storageClass=local-storage,master.persistence.storageClass=local-storage 
Tunggu 5 menit hingga elasticsearch dipasang.
Kami menemukan layanan yang akan menghubungkan kibana dan fluentd. Biasanya memiliki elasticsearch-klien dalam namanya
 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 
Nama elasticsearch-klien ditentukan saat menginstal fluentd-elasticsearch
 helm install stable/fluentd-elasticsearch --namespace logging --set elasticsearch.host=elasticsearch-client 
Nama elasticsearch-client ditentukan saat menginstal kibana
 helm install --namespace logging --set ingress.enabled=true,ingress.hosts[0]=kibana.mydomain.io --set env.ELASTICSEARCH_URL=http://elasticsearch-client:9200 stable/kibana 
Kami melihat bahwa semua pod memiliki status berjalan
 kubectl get pod --namespace=logging 
Jika ada kesalahan, kami melihat log.
 kubectl logs - --namespace logging 
Tambahkan ke DNS atau ke file / etc / hosts
 IP-- kibana.mydomain.io IP-- kibana.mydomain.io IP-- kibana.mydomain.io 
Catatan: jika Anda ingin mengirim log ke eksternal Elasticsearch, maka Anda harus memulai instalasi dengan elasticsearch.host = dns-name-of-your-external-elasticsearch
Pergi ke kibana.mydomain.io
Klik Pola Indeks

Masukkan indeks nama sehingga cocok dengan indeks di bawah ini

pilih @ stempel waktu

Dan di sini EFK bekerja

Kami memulai instalasi kube-prometheus
Unduh prometheus-operator
 git clone https://github.com/coreos/prometheus-operator.git 
Pergi ke folder kube-prometheus
 cd prometheus-operator/contrib/kube-prometheus 
Kami memulai instalasi sesuai dengan instruksi di situs
 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 
Buat file 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 
Buat sumber daya masuknya
 kubectl create -f ingress-grafana-prometheus.yml 
tambahkan ke DNS atau ke file / etc / hosts
 IP-- grafana.mydomain.io IP-- grafana.mydomain.io IP-- grafana.mydomain.io 
Pergi ke grafana.mydomain.io. Masukkan nama pengguna / kata sandi standar: admin / admin
Tangkapan layar prometheus:









PS: Lebih baik menulis semua kesalahan dengan segera secara pribadi.