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.