Instal kubernetes melalui kubespray (penyimpanan lokal, instal Elasticsearch + Fluentd + Kibana, prometheus)

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.

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


All Articles