Kubernetes dhammaystiran oo xoq ah Raspberry Pi

Kubernetes dhammaystiran oo xoq ah Raspberry Pi

Dhawaan, mid ka mid ah shirkadaha caanka ah ayaa ku dhawaaqay in ay u wareejinayso khadkeeda laptop-yada dhismaha ARM. Markii aan maqlay warkan, waxaan xasuustay: Anigoo mar kale eegaya qiimaha EC2 ee AWS, waxaan ogaaday Gravitons oo leh qiimo aad u wanaagsan. Qabashada, dabcan, waxay ahayd inay ahayd ARM. Waligey iguma dhicin markaas in ARM ay aad u daran tahay...

Aniga ahaan, qaab-dhismeedkani wuxuu had iyo jeer ahaa goobta mobilada iyo waxyaabaha kale ee IoT. Adeegayaasha "Real" ee ARM waa kuwo aan caadi ahayn, siyaabaha qaarkood xitaa duurjoogta ah ... Si kastaba ha ahaatee, fikrad cusub ayaa ku dhegtay madaxayga, sidaas darteed hal usbuuc ka dib waxaan go'aansaday inaan hubiyo waxa lagu socon karo ARM maanta. Oo tan waxaan go'aansaday inaan ku bilaabo wax dhow oo qaali ah - kooxda Kubernetes. Oo ma aha oo kaliya nooc ka mid ah "kutlada" caadiga ah, laakiin wax walba "hab qaangaar ah", si ay u noqoto inta ugu badan ee suurtogalka ah oo la mid ah sida aan u isticmaalo inaan ku arko wax soo saarka.

Sida fikradeyda qabo, kooxdu waa inay noqotaa mid laga heli karo internetka, qaar ka mid ah codsiyada webka waa inay ku dhex socdaan, waana inay jirtaa ugu yaraan kormeer. Si loo hirgeliyo fikradan, waxaad u baahan doontaa labo (ama ka badan) oo ah Raspberry Pi ugu yaraan moodel 3B+. AWS waxay noqon kartaa goob lagu tijaabiyo, laakiin waxaan xiisaynayay "raspberries" (kuwaas oo weli taagan shaqo la'aan). Markaa, waxaanu geyn doonaa kooxda Kubernetes oo wata Ingress, Prometheus iyo Grafana.

Diyaarinta "raspberries"

Ku rakibida OS iyo SSH

Wax badan kama dhibin doorashada OS si aan u rakibo: Kaliya waxaan qaatay Raspberry Pi OS Lite kii ugu dambeeyay goobta rasmiga ah. Halkaas laga heli karo dukumentiyada rakibaadda, dhammaan falalka laga soo bilaabo kuwaas oo ay tahay in lagu sameeyo dhammaan qanjidhada kooxda mustaqbalka. Marka xigta, waxaad u baahan doontaa inaad sameyso manipulations soo socda (sidoo kale dhammaan qanjidhada).

Ka dib marka aad isku xirto kormeeraha iyo kiiboodhka, waa inaad marka hore habaysaa shabakada iyo SSH:

  1. Kooxdu si ay u shaqeyso, sayidku waa in uu leeyahay ciwaanka IP-ga ee taagan, qanjidhada shaqalahana waa in ay lahaadaan cinwaan IP ah oo taagan. Waxaan doorbiday ciwaanno taagan si ay u fududaato habaynta.
  2. Ciwaanka taagan waxa lagu habayn karaa OS-ka (faylka /etc/dhcpcd.conf waxaa jira tusaale ku haboon) ama adoo hagaajinaya heshiis kiro serverka DHCP ee loo isticmaalo (xaaladkayga, guriga) router.
  3. Ssh-server si fudud ayaa loogu daray raspi-config (ikhtiyaarada isdhexgalka → ssh).

Taas ka dib, waxaad ku gali kartaa SSH (galitaanka caadiga ah waa pi, furahana waa raspberry ama kan aad u bedeshay) oo sii wad dejinta.

Goobaha kale

  1. Aynu dejino magaca martida loo yahay. Tusaalahayga waxay isticmaali doonaan pi-control и pi-worker.
  2. Aynu eegno in nidaamka faylka loo fidiyay si uu u daboolo diskka oo dhan (df -h /). Haddii loo baahdo, waxaa lagu ballaarin karaa iyadoo la isticmaalayo raspi-config.
  3. Aan bedelno erayga sirta ah ee isticmaale ee raspi-config.
  4. Aynu daminno faylka isku beddelka (tani waa shuruudaha Kubernetes; haddii aad xiisaynayso faahfaahinta mawduucan, eeg tirsiga #53533):
    dphys-swapfile swapoff
    systemctl disable dphys-swapfile
  5. Aan u cusboonaysiinno xirmooyinka noocyadii ugu dambeeyay:
    apt-get update && apt-get dist-upgrade -y
  6. Aynu rakibno Docker iyo baakado dheeraad ah:
    apt-get install -y docker docker.io apt-transport-https curl bridge-utils iptables-persistent

    Marka la rakibayo iptables-persistent Waxaad u baahan doontaa inaad kaydiso goobaha iptables ee ipv4, iyo faylka /etc/iptables/rules.v4 - ku dar xeerar silsiladda FORWARD, sida tan:

    # Generated by xtables-save v1.8.2 on Sun Jul 19 00:27:43 2020
    *filter
    :INPUT ACCEPT [0:0]
    :FORWARD ACCEPT [0:0]
    :OUTPUT ACCEPT [0:0]
    -A FORWARD -s 10.1.0.0/16  -j ACCEPT
    -A FORWARD -d 10.1.0.0/16  -j ACCEPT
    COMMIT
  7. Waxa hadhay oo dhan waa in dib loo bilaabo

Hadda waxaad diyaar u tahay inaad rakibto kutladaada Kubernetes.

Rakibaadda Kubernetes

Marxaladdan, waxaan si badheedh ah dhinac iskaga dhigay dhammaan horumarkayga iyo shirkadeenaba si aan u toosiyo rakibidda iyo habaynta kooxda K8s. Taa beddelkeeda, aan u isticmaalno dukumeentiga rasmiga ah kubernetes.io (wax yar oo lagu kabo faallooyin iyo gaabin).

Aynu ku darno kaydka Kubernetes:

curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
cat <<EOF | sudo tee /etc/apt/sources.list.d/kubernetes.list
deb https://apt.kubernetes.io/ kubernetes-xenial main
EOF
sudo apt-get update

Dheeraad ah dukumeentiyada waxaa la soo jeediyay in la rakibo CRI (kontaynar runtime interface). Maadaama Docker mar hore la rakibay, aan dhaqaaqno oo aan rakibno qaybaha ugu muhiimsan:

sudo apt-get install -y kubelet kubeadm kubectl kubernetes-cni

Tallaabada lagu rakibayo qaybaha ugu muhiimsan, waxaan isla markiiba ku daray kubernetes-cni, taasoo lagama maarmaan u ah in kooxdu ay shaqeyso. Oo halkan waxaa ku yaal qodob muhiim ah: xirmada kubernetes-cni Sababaha qaar uma abuurto tusaha caadiga ah ee goobaha interface CNI, marka waa inaan gacanta ku abuuraa:

mkdir -p /etc/cni/net.d

Shabakadda dhabarka shaqada, taas oo hoos looga hadli doono, waxaad u baahan tahay inaad ku rakibto plugin ee CNI. Waxaan doortay plugin-ka portmap-ka ee la yaqaan oo aniga la fahmi karo (liiska dhamaystiran, eeg dukumentiyo):

curl -sL https://github.com/containernetworking/plugins/releases/download/v0.7.5/cni-plugins-arm-v0.7.5.tgz | tar zxvf - -C /opt/cni/bin/ ./portmap

Habaynta Kubernetes

Node leh diyaarad kontorool

Ku rakibida kooxda lafteedu waa wax fudud. Iyo si loo dedejiyo habkan oo loo xaqiijiyo in sawirada Kubernetes la heli karo, waxaad marka hore ordi kartaa:

kubeadm config images pull

Hadda waxaan fulineynaa rakibidda lafteeda - bilow diyaaradda xakamaynta ee kooxda:

kubeadm init --pod-network-cidr=10.1.0.0/16 --service-cidr=10.2.0.0/16 --upload-certs

Fadlan ogow in shabakadaha hoose ee adeegyada iyo pods-yada aysan isku dul-taagnayn midba midka kale ama shabakadaha jira.

Dhamaadka, waxaa nala tusi doonaa fariin ah in wax walba ay fiican yihiin, isla markaana waxay noo sheegi doonaan sida loo xiro noodhka shaqaalaha ee diyaaradda xakamaynta:

Your Kubernetes control-plane has initialized successfully!
To start using your cluster, you need to run the following as a regular user:
 mkdir -p $HOME/.kube
 sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
 sudo chown $(id -u):$(id -g) $HOME/.kube/config
You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
 https://kubernetes.io/docs/concepts/cluster-administration/addons/
You can now join any number of the control-plane node running the following command on each as root:
 kubeadm join 192.168.88.30:6443 --token a485vl.xjgvzzr2g0xbtbs4 
   --discovery-token-ca-cert-hash sha256:9da6b05aaa5364a9ec59adcc67b3988b9c1b94c15e81300560220acb1779b050 
   --contrl-plane --certificate-key 72a3c0a14c627d6d7fdade1f4c8d7a41b0fac31b1faf0d8fdf9678d74d7d2403
Please note that the certificate-key gives access to cluster sensitive data, keep it secret!
As a safeguard, uploaded-certs will be deleted in two hours; If necessary, you can use
"kubeadm init phase upload-certs --upload-certs" to reload certs afterward.
Then you can join any number of worker nodes by running the following on each as root:
kubeadm join 192.168.88.30:6443 --token a485vl.xjgvzzr2g0xbtbs4 
   --discovery-token-ca-cert-hash sha256:9da6b05aaa5364a9ec59adcc67b3988b9c1b94c15e81300560220acb1779b050

Aan raacno talooyinka ku darista isku xidhka isticmaalaha Isla mar ahaantaana, waxaan ku talinayaa isla markiiba ku darista autocompletion ee kubectl:

 kubectl completion bash > ~/.kube/completion.bash.inc
 printf "
 # Kubectl shell completion
 source '$HOME/.kube/completion.bash.inc'
 " >> $HOME/.bash_profile
 source $HOME/.bash_profile

Marxaladdan, waxaad horeba u arki kartaa noodhka kowaad ee kutlada (inkasta oo aanay wali diyaar ahayn):

root@pi-control:~# kubectl get no
NAME         STATUS     ROLES    AGE   VERSION
pi-control   NotReady   master   29s   v1.18.6

Qaabeynta shabakada

Marka xigta, sida lagu sheegay fariinta ka dib marka la rakibo, waxaad u baahan doontaa inaad ku rakibto shabakada kutlada. Dukumeentigu wuxuu bixiyaa doorasho ka Calico, Cilium, contiv-vpp, Kube-router iyo Weave Net garbaha qaabka host-gw (si aad u hesho macluumaad dheeraad ah oo ku saabsan dhabarka dambe ee la heli karo, eeg dukumentiyada mashruuca).

Ku rakibida kooxdu waa wax fudud. Marka hore, soo deji muujinta:

wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

Kadibna ku beddel nooca goobaha vxlan on host-gw:

sed -i 's/vxlan/host-gw/' kube-flannel.yml

iyo subnet-ka pods-ka - laga bilaabo qiimaha caadiga ah ilaa kan la cayimay inta lagu guda jiro bilowga kooxda:

sed -i 's#10.244.0.0/16#10.1.0.0/16#' kube-flannel.yml

Intaa ka dib, waxaan abuurnaa ilo:

kubectl create -f kube-flannel.yml

Diyaar! Muddo ka dib, noodhka ugu horreeya ee K8s wuxuu u wareegayaa heerka Ready:

NAME         STATUS   ROLES    AGE   VERSION
pi-control   Ready    master   2m    v1.18.6

Ku darista Node Shaqaale

Hadda waxaad ku dari kartaa shaqaale. Si tan loo sameeyo - ka dib markii la rakibo Kubernetes lafteeda sida ku cad muuqaalka kore ee lagu sharraxay - waxaad u baahan tahay oo kaliya inaad socodsiiso amarkii hore ee la helay:

kubeadm join 192.168.88.30:6443 --token a485vl.xjgvzzr2g0xbtbs4 
    --discovery-token-ca-cert-hash sha256:9da6b05aaa5364a9ec59adcc67b3988b9c1b94c15e81300560220acb1779b050

Halkaa marka ay marayso waxaan u qaadan karnaa in kooxdu ay diyaar tahay:

root@pi-control:~# kubectl get no
NAME         STATUS   ROLES    AGE    VERSION
pi-control   Ready    master   28m    v1.18.6
pi-worker    Ready    <none>   2m8s   v1.18.6

Kaliya waxa aan gacanta ku haystay laba Raspberry Pis, si aan u bixiyo mid ka mid ah oo keliya Ma aanan rabin in ay hoos timaado diyaaradda. Markaa waxaan ka saaray wasakhdii si toos ah loogu rakibay qanjirka pi-control anigoo ordaya:

root@pi-control:~# kubectl edit node pi-control

... oo ka saara xadhkaha:

 - effect: NoSchedule
   key: node-role.kubernetes.io/master

Buuxinta kutlada ugu yaraan loo baahan yahay

Marka hore waxaan u baahanahay Helm. Dabcan, wax walba waad samayn kartaa la'aanteed, laakiin Helm wuxuu kuu ogolaanayaa inaad si dhab ah u habayso qaybo ka mid ah go'aankaaga adigoon tafatirin faylasha. Run ahaantiina, waa faylal binary ah oo "aan ku waydiisan rooti."

Markaa aan aadno madax.sh Qaybta dukumeenti/rakibaadda oo ka dhaqan geli amarka:

curl -s https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 | bash

Intaa ka dib, ku dar kaydka jaantusyada:

helm repo add stable https://kubernetes-charts.storage.googleapis.com/

Hadda aan u rakibno qaybaha kaabayaasha sida loo qorsheeyay:

  • Xakamaynta soo galitaanka;
  • Prometheus;
  • Grafana;
  • shahaado-maareeyaha.

Xakamaynta soo galitaanka

Qaybta koowaad waa Xakamaynta soo galitaanka - Rakibadu waa mid fudud oo diyaar u ah in la isticmaalo meel ka baxsan sanduuqa. Si tan loo sameeyo, kaliya u tag qaybta birta qaawan ee goobta oo ka socodsii amarka rakibida halkaas:

kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v0.34.1/deploy/static/provider/baremetal/deploy.yaml

Si kastaba ha ahaatee, wakhtigan "raspberry" wuxuu bilaabay inuu cadaadiso oo uu galo IOPS disk ah. Xaqiiqdu waxay tahay in ay la socdaan kontaroolaha Ingress, tiro badan oo agab ah ayaa lagu rakibay, codsiyo badan oo API ah ayaa la sameeyaa, sidaas awgeed, xog badan ayaa loo qoraa iwm. Guud ahaan, mid ka mid ah kaarka xusuusta ee fasalka 10 ma aha mid aad waxtar u leh, ama kaarka SD asal ahaan kuma filna culeyska noocaas ah. Si kastaba ha noqotee, qiyaastii 5 daqiiqo ka dib wax walbaa way bilowdeen.

Waxaa la sameeyay goob magaceed waxaana ka dhex muuqday maamule iyo wax kasta oo ay u baahan tahay:

root@pi-control:~# kubectl -n ingress-nginx get pod
NAME                                        READY   STATUS      RESTARTS   AGE
ingress-nginx-admission-create-2hwdx        0/1     Completed   0          31s
ingress-nginx-admission-patch-cp55c         0/1     Completed   0          31s
ingress-nginx-controller-7fd7d8df56-68qp5   1/1     Running     0          48s

Prometheus

Labada qaybood ee soo socda aad bay u fududahay in lagu rakibo iyada oo loo marayo Helm shaxda repo.

Hel Prometheus, samee meel magac oo u dhig:

helm search repo stable | grep prometheus
kubectl create ns monitoring
helm install prometheus --namespace monitoring stable/prometheus --set server.ingress.enabled=True --set server.ingress.hosts={"prometheus.home.pi"}

Sida caadiga ah, Prometheus wuxuu dalbanayaa 2 saxan: xogta Prometheus lafteeda iyo xogta AlertManager. Mar haddii fasalka kaydinta aan lagu dhex abuurin kutlada, saxanadaha lama dalban doono mana bilaaban doono galalka. Qalabka Kubernetes ee birta qaawan, waxaan caadi ahaan u isticmaalnaa Ceph rbd, laakiin marka laga hadlayo Raspberry Pi tani waa mid si cad u liidata.

Sidaa darteed, aynu ku abuurno kayd maxalli ah oo fudud marinka martida loo yahay. PV (mugga joogtada ah) ee muujinaya adeegaha-prometheus iyo prometheus-alertmanager ayaa lagu daraa fayl prometheus-pv.yaml в Git kaydka oo wata tusaalayaal maqaalka. Hagaha PV waa loo baahan yahay horay ku samee saxanka noodhka kaas oo aan rabno inaan ku xidhno Prometheus: tusaale ahaan waa ku qoran tahay nodeAffinity magaca martida loo yahay pi-worker waxaana dusheeda lagu abuuray hagayaal /data/localstorage/prometheus-server и /data/localstorage/prometheus-alertmanager.

Soo deji (clone) muujinta oo ku dar Kubernetes:

kubectl create -f prometheus-pv.yaml

Marxaladdan, waxaan marka hore la kulmay dhibaatada dhismaha ARM. Kube-state-metrics, oo si caadi ah loogu rakibay shaxanka Prometheus, ayaa diiday inuu bilaabo. Waxay bixisay khalad:

root@pi-control:~# kubectl -n monitoring logs prometheus-kube-state-metrics-c65b87574-l66d8
standard_init_linux.go:207: exec user process caused "exec format error"

Xaqiiqdu waxay tahay in kube-state-metrics adeegsato sawirka mashruuca CoreOS, kaas oo aan loo diyaarin ARM:

kubectl -n monitoring get deployments.apps prometheus-kube-state-metrics -o=jsonpath={.spec.template.spec.containers[].image}
quay.io/coreos/kube-state-metrics:v1.9.7

Waxay ahayd inaan wax yar sameeyo oo aan helo, tusaale ahaan, sawirkan. Si aan u isticmaalno, aan cusboonaysiinno sii deynta si aan u muujino sawirka loo isticmaalo kube-state-metrics:

helm upgrade prometheus --namespace monitoring stable/prometheus --set server.ingress.enabled=True --set server.ingress.hosts={"prometheus.home.pi"} --set kube-state-metrics.image.repository=carlosedp/kube-state-metrics --set kube-state-metrics.image.tag=v1.9.6

Aan hubino in wax walba ay bilaabeen:

root@pi-control:~# kubectl -n monitoring get po
NAME                                             READY   STATUS              RESTARTS   AGE
prometheus-alertmanager-df65d99d4-6d27g          2/2     Running             0          5m56s
prometheus-kube-state-metrics-5dc5fd89c6-ztmqr   1/1     Running             0          5m56s
prometheus-node-exporter-49zll                   1/1     Running             0          5m51s
prometheus-node-exporter-vwl44                   1/1     Running             0          4m20s
prometheus-pushgateway-c547cfc87-k28qx           1/1     Running             0          5m56s
prometheus-server-85666fd794-z9qnc               2/2     Running             0          4m52s

Grafana iyo maamulaha shahaadada

Jaantusyada iyo dashboard-yada waanu dejinay Grafana:

helm install grafana --namespace monitoring stable/grafana  --set ingress.enabled=true --set ingress.hosts={"grafana.home.pi"}

Dhamaadka wax soo saarka waxaa nala tusi doonaa sida loo helo erayga sirta ah:

kubectl get secret --namespace monitoring grafana -o jsonpath="{.data.admin-password}" | base64 --decode ; echo

Si aad u dalbato shahaadooyin waanu rakibi doonaa maamule ceer. Si aad u rakibto, fadlan tixraac dukumentiyo, kaas oo bixiya amarada u dhigma ee Helm:

helm repo add jetstack https://charts.jetstack.io

helm install 
  cert-manager jetstack/cert-manager 
  --namespace cert-manager 
  --version v0.16.0 
  --set installCRDs=true

Shahaadooyinka iskiis u saxeexay ee isticmaalka guriga, tani waa ku filan tahay. Haddii aad u baahan tahay inaad sidaas oo kale hesho Aan isku dayno, markaa waxaad sidoo kale u baahan tahay inaad habayso soo saaraha kooxeed. Faahfaahinta tan waxaa laga heli karaa maqaalkeena "Shahaadooyinka SSL ee ka yimid Aynu ku sirno maamulaha shahaadada ee Kubernetes".

Aniga qudhaydu waxaan ku dejiyey dookh ka tusaale ahaan dukumentiyada, go'aaminta in doorashada habaynta ee LE ay ku filnaan doonto. Waxaan bedelnaa iimaylka tusaalaha, ku keydi faylka oo ku darnaa kooxda (shahaado-maareeyaha-kutlada-soosaaraha.yaml):

kubectl create -f cert-manager-cluster-issuer.yaml

Hadda waxaad dalban kartaa shahaado, tusaale ahaan, Grafana. Tani waxay u baahan doontaa domain iyo gelitaanka kooxda dibadda. Waxaan haystaa domain, waxaanan habeeyay taraafikada anigoo u soo gudbinaya dekedaha 80 iyo 443 routerka gurigayga si waafaqsan adeega xakamaynta gudaha ee la abuuray:

kubectl -n ingress-nginx get svc
NAME                                 TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)                      AGE
ingress-nginx-controller             NodePort    10.2.206.61    <none>        80:31303/TCP,443:30498/TCP   23d

Xaaladdan oo kale, dekedda 80 waxaa loo tarjumay 31303, iyo dekedda 443 ilaa 30498. (Dekedo si aan kala sooc lahayn ayaa loo sameeyay, marka taadu way ka duwanaan doontaa.)

Waa kan tusaale shahaado ah (shahaado-maareeyaha-grafana-shahaadada.yaml):

apiVersion: cert-manager.io/v1alpha2
kind: Certificate
metadata:
  name: grafana
  namespace: monitoring
spec:
  dnsNames:
    - grafana.home.pi
  secretName: grafana-tls
  issuerRef:
    kind: ClusterIssuer
    name: letsencrypt-staging

Kudar kooxda:

kubectl create -f cert-manager-grafana-certificate.yaml

Taas ka dib, ilaha Ingress ayaa soo bixi doona, iyada oo loo marayo Aynu sir qaadno ansaxinta ayaa dhici doonta:

root@pi-control:~# kubectl -n monitoring get ing
NAME                        CLASS    HOSTS                        ADDRESS         PORTS   AGE
cm-acme-http-solver-rkf8l   <none>   grafana.home.pi      192.168.88.31   80      72s
grafana                     <none>   grafana.home.pi      192.168.88.31   80      6d17h
prometheus-server           <none>   prometheus.home.pi   192.168.88.31   80      8d

Ka dib markii ansixinta dhaafto, waxaan arki doonaa in khayraadka certificate diyaar ah, iyo sirta kore grafana-tls - shahaado iyo fure. Waxaad isla markiiba hubin kartaa cidda bixisay shahaadada:

root@pi-control:~# kubectl -n monitoring get certificate
NAME      READY   SECRET        AGE
grafana   True    grafana-tls   13m

root@pi-control:~# kubectl -n monitoring get secrets grafana-tls -ojsonpath="{.data['tls.crt']}" | base64 -d | openssl x509 -issuer -noout
issuer=CN = Fake LE Intermediate X1

Aan ku soo laabano Grafana. Waxaan u baahan doonaa inaan wax yar hagaajino siideynteeda Helm annagoo bedelayna dejinta TLS si ay ugu dhigmaan shahaadada la soo saaray.

Si tan loo sameeyo, soo deji jaantuska, ka beddel oo ka cusboonaysii tusaha deegaanka:

helm pull --untar stable/grafana

Tafatirka faylka grafana/values.yaml Halbeegyada TLS:

  tls:
    - secretName: grafana-tls
      hosts:
        - grafana.home.pi

Halkan waxaad isla markiiba u habeyn kartaa Prometheus-ka la rakibay sida datasource:

datasources:
  datasources.yaml:
    apiVersion: 1
    datasources:
    - name: Prometheus
      type: prometheus
      url: http://prometheus-server:80
      access: proxy
      isDefault: true

Hadda waxaan ka cusboonaysiinnay jaantuska Grafana hagaha maxalliga ah:

helm upgrade grafana --namespace monitoring ./grafana  --set ingress.enabled=true --set ingress.hosts={"grafana.home.pi"}

Hubinta waxa ku jira gudaha grafana dekedda 443 ayaa lagu daray oo waxaa jira marin loo maro HTTPS:

root@pi-control:~# kubectl -n monitoring get ing grafana
NAME      CLASS    HOSTS                     ADDRESS         PORTS     AGE
grafana   <none>   grafana.home.pi           192.168.88.31   80, 443   63m

root@pi-control:~# curl -kI https://grafana.home.pi
HTTP/2 302
server: nginx/1.19.1
date: Tue, 28 Jul 2020 19:01:31 GMT
content-type: text/html; charset=utf-8
cache-control: no-cache
expires: -1
location: /login
pragma: no-cache
set-cookie: redirect_to=%2F; Path=/; HttpOnly; SameSite=Lax
x-frame-options: deny
strict-transport-security: max-age=15724800; includeSubDomains

Si loo muujiyo Grafana ficil ahaan, waad soo dejisan kartaa oo ku dari kartaa dashboardka kube-state-metrics. Tani waa sida ay u egtahay:

Kubernetes dhammaystiran oo xoq ah Raspberry Pi

Waxaan sidoo kale ku talinayaa in lagu daro dashboard loogu talagalay dhoofiyaha noodhka: waxay si faahfaahsan u muujin doontaa waxa ku dhacaya "raspberries" (loader CPU, xusuusta, shabakada, isticmaalka diskka, iwm.).

Intaa ka dib waxaan qabaa taas kooxdu waxay diyaar u tahay inay aqbasho oo ay qabato codsiyada!

Fiiro gaar ah oo ku saabsan shirka

Waxaa jira ugu yaraan laba ikhtiyaar oo loogu talagalay dhisidda codsiyada dhismaha ARM. Marka hore, waxaad ku dhisi kartaa qalabka ARM. Si kastaba ha ahaatee, ka dib markii aan eegay tuurista hadda ee laba Raspberry Pis, waxaan ogaaday in aanay ka badbaadi doonin kulanka midkood. Sidaa darteed, waxaan dalbaday naftayda Raspberry Pi 4 cusub (waa aad ka awood badan waxayna leedahay illaa 4 GB oo xusuusta ah) - Waxaan qorsheynayaa inaan ku dhiso.

Doorashada labaad waa in la dhiso sawirka Docker-ka badan ee mashiinka ka xoog badan. Tan waxaa jira docker buildx kordhin. Haddii codsigu ku qoran yahay luqad la soo ururiyey, markaa isku-dubbaridka ARM ayaa loo baahan doonaa. Ma sifayn doono dhammaan habaynta waddadan, sababtoo ah... Tani waxay u baahan doontaa maqaal gaar ah. Marka la hirgeliyo habkan, waxaa suurtagal ah in la gaaro sawirro "caalami ah": Docker oo ku shaqeeya mashiinka ARM ayaa laftiisa si toos ah u soo dejisan doona sawirka u dhigma dhismaha.

gunaanad

Tijaabadu waxay dhaaftay dhammaan filashooyinka: [ugu yaraan] "vanilla" Kubernetes oo leh saldhigga lagama maarmaanka ah ayaa ku faraxsan ARM, oo kaliya dhowr nuances ayaa la soo baxay qaabeynta.

Raspberry Pi 3B+ laftoodu waxay ku hayaan culayska CPU, laakiin kaadhadhkooda SD waa cilad cad. Asxaabtu waxay soo jeediyeen in noocyada qaarkood ay suurtagal tahay in laga soo bilaabo USB, halkaas oo aad ku xiri karto SSD: markaa waxay u badan tahay in xaaladdu ay fiicnaan doonto.

Waa kuwan tusaale culeyska CPU marka la rakibayo Grafana:

Kubernetes dhammaystiran oo xoq ah Raspberry Pi

Tijaabooyin iyo "isku day", fikradeyda, kooxda Kubernetes ee "raspberries" waxay soo gudbisaa dareenka hawlgalka si ka fiican isla Minikube, sababtoo ah dhammaan qaybaha kooxda ayaa la rakibay oo u shaqeeya "sida qof weyn".

Mustaqbalka, waxaa jira fikrad ah in lagu daro kooxda dhammaan wareegga CI/CD, oo lagu hirgeliyay gebi ahaanba Raspberry Pi. Waxaan sidoo kale ku farxi doonaa haddii qof la wadaago khibradooda ku saabsan dejinta K8s ee AWS Gravitons.

PS Haa, "wax-soo-saar" ayaa laga yaabaa inay ka dhowaato sidii aan moodayay:

Kubernetes dhammaystiran oo xoq ah Raspberry Pi

PPS

Sidoo kale ka akhri boggayaga:

Source: www.habr.com

U soo iibso martigelin lagu kalsoonaan karo oo loogu talagalay bogagga leh ilaalinta DDoS, VPS VDS servers 🔥 Iibso martigelin degel oo lagu kalsoonaan karo oo leh ilaalinta DDoS, VPS VDS servers | ProHoster