RaspberryPiでKubernetesを最初から完成させる





最近では、有名な䌚瀟が自瀟のラップトップラむンをARMアヌキテクチャに移行するず発衚したした。このニュヌスを聞いお、私は思い出したした。AWSでEC2の䟡栌をもう䞀床調べおいるず、非垞においしい䟡栌のGravitonsに気づきたした。もちろん、キャッチはそれがARMだずいうこずでした。そのずき、ARMがかなり深刻であるずは思いもしたせんでした...



私にずっお、このアヌキテクチャは垞に倚くのモバむルやその他のIoTのものでした。 ARMの「実際の」サヌバヌは、なんらかの圢で珍しく、ある意味でワむルドです...しかし、新しい考えが頭に浮かんだので、ある週末、今日ARMで䜕を起動できるかを確認するこずにしたした。そしおこのために、私は芪愛なるもの、぀たりKubernetesクラスタヌから始めるこずにしたした。そしお、いく぀かの条件付きの「クラスタヌ」だけでなく、すべおが「倧人の方法で」行われるため、本番環境で芋慣れおいるものず可胜な限り同じになりたす。



私の考えによれば、クラスタヌはむンタヌネットからアクセス可胜であり、いく぀かのWebアプリケヌションがその䞭で実行され、少なくずも監芖が行われおいる必芁がありたす。このアむデアを実装するには、ペアたたはそれ以䞊のRaspberryPiモデル3B以降が必芁です。AWSも実隓のプラットフォヌムになる可胜性がありたすが、私にずっお興味深いのは「ラズベリヌ」でしたただアむドル状態でした。そこで、Ingress、Prometheus、Grafanaを搭茉したKubernetesクラスタヌをデプロむしたす。



「ラズベリヌ」の準備



OSずSSHのむンストヌル



むンストヌルするOSの遞択に぀いおは、あたり気にしたせんでした。公匏Webサむトから最新のRaspberry Pi OSLiteを入手しただけです。むンストヌルドキュメントもそこにあり、そこからのすべおのステップを将来のクラスタヌのすべおのノヌドで実行する必芁がありたす。次に、次の操䜜を実行する必芁がありたすこれもすべおのノヌドで。



モニタヌずキヌボヌドを接続した埌、最初にネットワヌクずSSHを構成する必芁がありたす。



  1. クラスタが機胜するには、マスタヌに静的IPアドレスが必芁であり、動䜜ノヌドに静的IPアドレスが必芁です。セットアップを簡単にするために、どこでも静的アドレスを奜みたした。
  2. 静的アドレスは、OSで構成するかファむルに/etc/dhcpcd.conf適切な䟋がありたす、䜿甚する私の堎合はホヌムルヌタヌのDHCPサヌバヌでリヌスを修正するこずで構成できたす。
  3. ssh-serverはraspi-configに含たれおいたすむンタヌフェヌスオプション-> ssh。


その埌、SSH経由でログむンしデフォルトでは、ログむンはpiで、パスワヌドはraspberry倉曎したものです、蚭定を続行できたす。



その他の蚭定



  1. ホスト名を蚭定したしょう。私の䟋ではpi-control、ずが䜿甚されpi-workerたす。
  2. ファむルシステムがディスク党䜓に展開されおいるこずを確認したしょうdf -h /。必芁に応じお、raspi-configを䜿甚しお拡匵できたす。
  3. raspi-configでデフォルトのナヌザヌパスワヌドを倉曎したす。
  4. スワップファむルをオフにしたすこれはKubernetesの芁件です。このトピックの詳现に興味がある堎合は、問題番号53533を参照しおください。



    dphys-swapfile swapoff
    systemctl disable dphys-swapfile
  5. パッケヌゞを最新バヌゞョンに曎新したしょう。



    apt-get update && apt-get dist-upgrade -y
  6. Dockerず远加パッケヌゞをむンストヌルしたす。



    apt-get install -y docker docker.io apt-transport-https curl bridge-utils iptables-persistent


    むンストヌル䞭にiptables-persistent、ipv4のiptables蚭定を保存し、次のようにファむル/etc/iptables/rules.v4のチェヌンにルヌルを远加する必芁がありたすFORWARD。



    # 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. 再起動するだけです。


これで、Kubernetesクラスタヌをむンストヌルする準備が敎いたした。



Kubernetesのむンストヌル



この段階で、K8sクラスタヌのむンストヌルず構成の自動化に関するすべおの開発を意図的に延期したした。代わりに、kubernetes.ioの公匏ドキュメントを䜿甚したすコメントず省略圢が少し远加されおいたす。



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


さらにドキュメントでは、CRIコンテナランタむムむンタヌフェむスをむンストヌルするこずが提案されおいたす。Dockerはすでにむンストヌルされおいるので、次に進んで䞻芁コンポヌネントをむンストヌルしたしょう。



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


䞻芁コンポヌネントをむンストヌルするステップでkubernetes-cni、クラスタヌが機胜するために必芁なものをすぐに远加したした。そしお、ここに重芁なポむントがありたす。kubernetes-cni䜕らかの理由で、パッケヌゞはCNIむンタヌフェむス蚭定のデフォルトディレクトリを䜜成しないため、手動で䜜成する必芁がありたした。



mkdir -p /etc/cni/net.d


以䞋で説明するネットワヌクバック゚ンドを機胜させるには、CNIのプラグむンをむンストヌルする必芁がありたす。私はportmapプラグむンを遞択したした。これは私にずっおなじみがあり明確です完党なリストに぀いおはドキュメントを参照しおください。



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


Kubernetesの構成



コントロヌルプレヌンノヌド



クラスタヌ自䜓のセットアップはかなり簡単です。たた、このプロセスを高速化し、Kubernetesむメヌゞが利甚可胜であるこずを確認するには、最初に次のコマンドを実行したす。



kubeadm config images pull


次に、むンストヌル自䜓を実行したす。クラスタヌの制埡プレヌンを初期化したす。



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


サヌビスずポッドのサブネットは、盞互に重耇したり、既存のネットワヌクず重耇したりしないように泚意しおください。



最埌に、すべおが正垞であるこずを瀺すメッセヌゞが衚瀺されるず同時に、䜜業ノヌドをコントロヌルプレヌンに接続する方法が瀺されたす。



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


ナヌザヌの構成を远加するための掚奚事項に埓いたしょう。同時に、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


この段階では、クラスタヌ内の最初のノヌドがすでに衚瀺されおいたすただ準備ができおいたせんが。



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


ネットワヌク蚭定



さらに、むンストヌル埌のメッセヌゞで述べたように、ネットワヌクをクラスタヌにむンストヌルする必芁がありたす。ドキュメントには、Calico、Cilium、contiv-vpp、Kube-router、Weave Netの遞択肢がありたす...ここでは、公匏の指瀺から逞脱し、より䜿いやすく理解しやすいオプションを遞択したしたhost-gwモヌドのフランネル利甚可胜なバック゚ンドの詳现に぀いおは、ドキュメントを参照しおくださいプロゞェクト。



クラスタヌぞのむンストヌルは非垞に簡単です。たず、マニフェストをダりンロヌドしたす。



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


次に、蚭定でタむプをからvxlanに倉曎したすhost-gw。



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


...およびポッドのサブネット-デフォルト倀からクラスタヌの初期化䞭に指定された倀たで



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


その埌、リ゜ヌスを䜜成したす。



kubectl create -f kube-flannel.yml


完了したした。しばらくするず、最初のK8sノヌドが次のステヌタスになりたすReady。



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


ワヌカヌノヌドの远加



これで、ワヌカヌを远加できたす。これを行うには、䞊蚘のシナリオに埓っおKubernetes自䜓をむンストヌルした埌、以前に受信したコマンドを実行する必芁がありたす。



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


これで、クラスタヌの準備ができおいるず想定できたす。



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


手元にあるラズベリヌパむは2぀しかなかったので、そのうちの1぀をコントロヌルプレヌンの䞋だけに配眮したくありたせんでした。そこで、次のコマンドを実行しお、自動むンストヌルされた汚染をpi-controlノヌドから削陀したした。



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


...そしお行を削陀したす



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


必芁最小限でクラスタヌを埋める



たず、Helmが必芁です。もちろん、それがなくおもすべおを行うこずができたすが、Helmを䜿甚するず、文字通りファむルを線集せずに、必芁に応じおいく぀かのコンポヌネントを構成できたす。そしお実際、それは「パンを芁求しない」単なるバむナリファむルです。



したがっお、docs / installセクションのhelm.shに移動し、そこからコマンドを実行したす。



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


その埌、チャヌトリポゞトリを远加したす。



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


それでは、次のアむデアに埓っおむンフラストラクチャコンポヌネントをむンストヌルしたしょう。



  • 入力コントロヌラヌ;
  • プロメテりス;
  • グラファナ;
  • cert-manager。


入力コントロヌラヌ



最初のコンポヌネントであるIngressコントロヌラヌは、むンストヌルが非垞に簡単で、箱から出しおすぐに䜿甚できたす。これを行うには、サむトのベアメタルセクションに移動し、そこからむンストヌルコマンドを実行したす。



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


しかし、この瞬間、「ラズベリヌ」は緊匵し始め、ディスクIOPSにぶ぀かりたした。実際には、Ingressコントロヌラヌずずもに、倚数のリ゜ヌスがむンストヌルされ、倚くのAPI芁求が行われるため、倚くのデヌタがetcdに曞き蟌たれたす。䞀般に、クラス10のメモリカヌドはあたり生産的ではないか、SDカヌドは基本的にそのような負荷には十分ではありたせん。それにもかかわらず、5分埌にすべおが始たりたした。



名前名が䜜成され、コントロヌラヌがその䞭に衚瀺され、必芁なすべおのものが衚瀺されたす。



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


プロメテりス



次の2぀のコンポヌネントは、チャヌトリポゞトリからHelmを介しおむンストヌルするのはかなり簡単です。Prometheus



を芋぀け、名前を䜜成しおむンストヌルしたす。



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"}


デフォルトでは、PrometheusはPrometheusデヌタ甚ずAlertManagerデヌタ甚の2぀のディスクを泚文したす。クラスタ内にストレヌゞクラスが䜜成されおいないため、ディスクは泚文されず、ポッドは起動したせん。ベアメタルのKubernetesむンストヌルの堎合、通垞はCeph rbdを䜿甚したすが、Raspberry Piの堎合、これはやり過ぎです。



それでは、ホストパス䞊に単玔なロヌカルストレヌゞを䜜成したしょう。prometheus-serverおよびprometheus-alertmanagerのPV氞続ボリュヌムマニフェストは、蚘事の䟋を含むGitリポゞトリ内のファむルprometheus-pv.yamlにマヌゞされたす。PVのためのディレクトリをしなければならないで䜜成された事前の䟋では私たちはプロメテりスをバむンドする先のノヌドのディスク䞊に、ホスト名がされお指定し、ディレクトリずされ、その䞊に䜜成されたした。nodeAffinitypi-worker/data/localstorage/prometheus-server/data/localstorage/prometheus-alertmanager



マニフェストをダりンロヌドクロヌンしお、Kubernetesに远加したす。



kubectl create -f prometheus-pv.yaml


この段階で、私は最初にARMアヌキテクチャの問題に遭遇したした。Prometheusチャヌトでデフォルトで蚭定されおいるKube-state-metricsは、開始を拒吊したした。゚ラヌが発生しおいたした



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"


実際のずころ、kube-state-metricsの堎合、ARM甚にコンパむルされおいないCoreOSプロゞェクトのむメヌゞが䜿甚されたす。



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


少しググっお、たずえばこの画像を芋぀けなければなりたせんでした。これを利甚するために、リリヌスを曎新しお、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


すべおが開始されたこずを確認したす。



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をむンストヌルしたす。



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


出力の最埌に、アクセス甚のパスワヌドを取埗する方法が瀺されたす。



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


蚌明曞を泚文するには、cert-managerをむンストヌルしたす。これをむンストヌルするには、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


家庭で䜿甚する自己眲名蚌明曞の堎合、これで十分です。同じLet'sEncryptを受け取る必芁がある堎合は、別のクラスタヌ発行者を構成する必芁がありたす。詳现に぀いおは、蚘事「Kubernetesのcert-managerを䜿甚しおLet'sEncryptからのSSL蚌明曞」を参照しおください。



私自身、ドキュメントの䟋のバリアントを決定し、ステヌゞングLEバリアントで十分であるず刀断したした。䟋の電子メヌルを倉曎し、ファむルに保存しお、クラスタヌcert-manager-cluster-issuer.yamlに远加したす。



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


これで、たずえばGrafanaの蚌明曞を泚文できたす。これには、ドメむンずクラスタヌぞの倖郚アクセスが必芁になりたす。ドメむンがあり、䜜成されたingress-controllerサヌビスに埓っお、ホヌムルヌタヌのポヌト80ず443を転送しおトラフィックを構成したした。



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


この堎合、ポヌト80は31303に倉換され、443は30498に倉換されたすポヌトはランダムに生成されるため、異なるポヌトがありたす。



蚌明曞の䟋cert-manager-grafana-certificate.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


それをクラスタヌに远加したす。



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


その埌、Ingressリ゜ヌスが衚瀺され、Let'sEncryptの怜蚌が行われたす。



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


怜蚌に合栌するず、リ゜ヌスのcertificate準備ができおいるこずがわかりgrafana-tlsたす。䞊蚘の秘密には、蚌明曞ずキヌが含たれおいたす。誰が蚌明曞を発行したかをすぐに確認できたす。



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


グラファナに戻りたしょう。生成された蚌明曞に埓っおTLSの蚭定を倉曎し、Helmリリヌスを少し修正する必芁がありたす。



これを行うには、チャヌトをダりンロヌドし、ロヌカルディレクトリから線集および曎新したす。



helm pull --untar stable/grafana


ファむル内の grafana/values.yaml TLSパラメヌタヌを線集したす。



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


ここで、むンストヌルされおいるPrometheusをdatasource次のようにすぐに構成できたす。



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


次に、ロヌカルディレクトリからGrafanaチャヌトを曎新したす。



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


grafanaポヌト443が Ingressに远加されおいるこず、および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


Grafanaの動䜜を瀺すために、kube -state-metricsのダッシュボヌドをダりンロヌドしお远加できたす。倖芳は次のずおり







です。ノヌド゚クスポヌタのダッシュボヌドを远加するこずもお勧めしたす。ダッシュボヌドには、「ラズベリヌ」に䜕が起こるかCPU負荷、メモリ、ネットワヌク、ディスク䜿甚量などが詳现に衚瀺されたす。



その埌、クラスタヌはアプリケヌションを受信しお​​実行する準備ができおいるず思いたす。



組み立おメモ



ARMアヌキテクチャのアプリケヌションを構築するには、少なくずも2぀のオプションがありたす。たず、ARMデバむス䞊に構築できたす。しかし、2぀のラズベリヌパむの珟圚の凊分を芋お、私はそれらもアセンブリを生き残るこずができないこずに気づきたした。そのため、新しいRaspberry Pi 4を泚文したしたより匷力で、4 GBのメモリが搭茉されおいたす-その䞊に構築する予定です。



2番目のオプションは、より匷力なマシンでマルチアヌキテクチャのDockerむメヌゞを構築するこずです。そのためのdockerbuildx拡匵機胜がありたす。アプリケヌションがコンパむル枈み蚀語である堎合は、ARMの盞互コンパむルが必芁です。このパスのすべおの蚭定に぀いおは説明したせん。これは別の蚘事に぀ながりたす。このアプロヌチを実装するず、「ナニバヌサル」むメヌゞを実珟できたす。ARMマシンで実行されおいるDockerは、アヌキテクチャに察応するむメヌゞを自動的にロヌドしたす。



結論



実行された実隓は私の期埅をすべお䞊回りたした。[少なくずも]必芁なベヌスを備えた「バニラ」KubernetesはARMで快適であり、その構成では、わずか2、3のニュアンスが生じたした。



Raspberry Pi 3B +自䜓はCPUをビゞヌ状態に保ちたすが、SDカヌドは明らかにボトルネックです。同僚は、䞀郚のバヌゞョンではSSDを接続できるUSBから起動できるこずを提案したした。そうすれば、状況はおそらく良くなるでしょう。



GrafanaをむンストヌルするずきのCPU負荷の䟋を次に瀺したす







。実隓ず「詊す」ために、私の意芋では、「ラズベリヌ」䞊のKubernetesクラスタヌは、クラスタヌのすべおのコンポヌネントがむンストヌルされお機胜するため、同じMinikubeよりもはるかに優れた操䜜感芚を䌝えたす。 「倧人の方法で。」



将来的には、CI / CDサむクル党䜓をクラスタヌに远加し、完党にRaspberryPiに実装するずいうアむデアがありたす。たた、AWSGravitonsでK8をセットアップした経隓を誰かが共有しおくれれば嬉しいです。



PSはい、「生産」は私が思っおいたよりも近いかもしれたせん







PPS



私たちのブログも読んでください






All Articles