helm経由で、 kube-prometheus-stackとloki stackを入れるだけだと連携ができないので
追加で以下の手順を進める必要がある。
1)Loki stackの導入を実施
helm install loki grafana/loki-stack --namespace monitoring --create-namespace
helm経由で、 kube-prometheus-stackとloki stackを入れるだけだと連携ができないので
追加で以下の手順を進める必要がある。
1)Loki stackの導入を実施
helm install loki grafana/loki-stack --namespace monitoring --create-namespace
rasuberry pi3台をwifi接続からethernetに変更することにしました。(なんか動作不安定なので)
1)以下、3台のraspberry piの修正後、以下実施
sudo netplan apply
<Before>
<After>
ネットワーク変更後、以下のエラーがk8sのイベントに表示されまくったので
トラブルシューを行なっていく
Nameserver limits were exceeded, some nameservers have been omitted, the applied nameserver line is: 8.8.8.8 2409:11:9aa0:500:8222:a7ff:fe20:14f4 192.168.10.1
2)まず、CoreDNSのコンフィグマップの修正を行いデプロイ実施
3)次に、CoreDNSの再起動を行う
kubectl -n kube-system rollout restart deployment coredns
raspberry pi側:
4)ipv6の設定を無効化させるために以下を実施
sudo sysctl -p
5)無効化されているか以下のコマンドを実施して、何も表示されてないことを確認
ip -6 addr show
1)以下、クラスタ内にフォルダを作成する
/mnt/data
/mnt/data2
2)PVC用のマニュフェストを作成(garafana/Prometheus用)
3)デプロイを行う
kubectl apply -f /Volumes/Store/Technology/k8s/PVC/garafana-prometheus-pvc.yaml
4)Helmの記載に追記するマニュフェスト作成(volumes.yaml)
5)以下のアップデートコマンド実施
helm install prometheus prometheus-community/kube-prometheus-stack -n monitoring -f volumes.yaml
手動で、yamlからprometheusやgrafanaを入れるとハマる要素がありすぎるので
素直にhelmから入れることにする
(container系のcpu使用率を確認するクエリがまともに動かなかったのが経緯)
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts helm repo update helm install prometheus prometheus-community/kube-prometheus-stack
以下が含まれる。
grafanaにpvcを追加を行ってので以下、手順を記載
1)以下、k8sのクラスターにて、以下のマウント先を作成する
sudo mkdir -p /mnt/data
sudo chmod 777 /mnt/data
2)pvc用に以下赤枠を記載
1)yamlファイルをダウンロードする
curl -LO https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml
2)以下、追加する
導入済みのcalicoからciliumに変更を行ってみる。
公式:
https://docs.cilium.io/en/latest/gettingstarted/k8s-install-default/
1)以下、コントロールプレーンにて実施(arm64版)
------------------------
CILIUM_CLI_VERSION=$(curl -s https://raw.githubusercontent.com/cilium/cilium-cli/main/stable.txt)
CLI_ARCH=amd64
if [ "$(uname -m)" = "aarch64" ]; then CLI_ARCH=arm64; fi
curl -L --fail --remote-name-all https://github.com/cilium/cilium-cli/releases/download/${CILIUM_CLI_VERSION}/cilium-linux-${CLI_ARCH}.tar.gz{,.sha256sum}
sha256sum --check cilium-linux-${CLI_ARCH}.tar.gz.sha256sum
sudo tar xzvfC cilium-linux-${CLI_ARCH}.tar.gz /usr/local/bin
rm cilium-linux-${CLI_ARCH}.tar.gz{,.sha256sum}
2)コントロールプレーンにて実施
cilium install
ヘルスチェック(HTTPポート指定:デフォルト値)でコケまくるので
TCPに変更
以下、コマンド実行してcoreDNSを再作成実施
kubectl rollout restart deployment coredns -n kube-system
以下実施後、権限エラーがでた
kubectl logs -n kube-system -l k8s-app=kube-dns
------- log内容 ------------
[ERROR] plugin/kubernetes: pkg/mod/k8s.io/client-go@v0.27.4/tools/cache/reflector.go:231: Failed to watch *v1.Service: failed to list *v1.Service: services is forbidden: User "system:serviceaccount:kube-system:default" cannot list resource "services" in API group "" at the cluster scope
------------------------------
RBACの追加を行う
テスト用にcoreDNSにサイドカーコンテナを追加して、nslookupを実施する
->疎通確認ができた。
導入済みのprometheusをLBを設置するも失敗、理由は、オンプレ(raspberry pi)では、別途metalLBが必要とのこと。
1)導入方法は、公式の通りに実施
kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.13.10/config/manifests/metallb-native.yaml
grafana経由で、prometheusからメトリクスが取得できなかったので
prometheusのpodログを見てみることに
ログを見てみると、権限系のエラーが出ているみたい。
ログが示すエラー内容:
nodes is forbidden
: ノードリソースのリスト取得が拒否されました。pods is forbidden
: ポッドリソースのリスト取得が拒否されました。原因は、system:serviceaccount:monitoring:default
にこれらのリソースを操作する権限がない
<prometheusのログ>
---------------------------------------------
msg="pkg/mod/k8s.io/client-go@v0.24.0/tools/cache/reflector.go:167: Failed to watch *v1.Pod: failed to list *v1.Pod: pods is forbidden: User \"system:serviceaccount:monitoring:default\" cannot list resource \"pods\" in API group \"\" at the cluster scope" ts=2024-12-03T05:46:53.394Z caller=klog.go:108 level=warn component=k8s_client_runtime func=Warningf msg="pkg/mod/k8s.io/client-go@v0.24.0/tools/cache/reflector.go:167: failed to list *v1.Node: nodes is forbidden: User
---------------------------------------------
以下、RBACの追記して、デプロイ実施
適応後、再度grafanaにて、確認すると。。。
helm経由で、 kube-prometheus-stackとloki stackを入れるだけだと連携ができないので 追加で以下の手順を進める必要がある。 1)Loki stackの導入を実施 helm install loki grafana/loki-stack --name...