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に変更することにしました。(なんか動作不安定なので)
<After>
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
以下が含まれる。
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
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にて、確認すると。。。
初期導入を行ったので、詳細な設定を行なっていくことにする。
初回ログインについては、ID: admin / Pass: adminだった。(その後、パスを設定するスタイル)
1)Add data sourseからprometheus(導入済みであること)を選択
2)以下、prometheusに関連した詳細なパラメータを記載していく
k8sの環境を新しくしたので、ArgoCDの導入も新規で行う必要があるので記載を行う
以前に利用したyamlで書いたargoCDのマニフェストをデプロイしてもgithubにあるprometheus,grafanaのリポジトリからデプロイが出来なくなったので(どハマりエラー連発したので)、今回は、helm経由でargoCDの導入を行ってみる。
Lensという、k8sの管理ツールを使ってhelmでの導入を行ってみる
①赤く枠に示した、argo-cdを選択
②導入対象のバージョンとNameSpaceの指定を選択
③インストールを実施
実施にArgoCDにて、ログインして対象のミドルがデプロイできるか検証してみる。
1)ArgoCDにログインする(ログイン手順は割愛)
2)Settings > Repositoryを選択
3)CONNECT REPOを選択
4)以下の設定を記載
①VIA HTTPSを選択
②git
③default
④対象のリポジトリのURLを記載
⑤gihthubのIDを入力
⑥githubで作成したクレデンシャル(設定方法は、そこら辺に情報が転がっているので割愛)
⑦CONNECTを押す
5)ArgoCDからgithubのリポジトリ取得からデプロイまでの行う
①上記で作成したリポジトリ一覧から対象(今回、proetheus)を選択
②Create Applicationを選択
6)詳細な設定をおこなっていく
①アプリ名を記載
②default
③特に指定がないなら " . " (ドット)の記載で良いです
④選択肢から選ぶだけです
⑤対象のname spaceを選ぶ
⑥CREATEを押す
argoCD用のCustom Resourcesが削除できなくなった経緯から強制的に削除する方法を記載してみる
ArgoCD のアプリケーションは、finalizer
が設定されていると削除時にブロックされることがあります。finalizer
を手動で削除することで、削除が進むことがあります。
アプリケーションの詳細を確認します。
kubectl get applications.argoproj.io prometheus --namespace=default -o yaml
finalizers
セクションを探し、その内容を確認します。
finalizer
を削除するために、次のコマンドを実行します。
kubectl patch applications.argoproj.io prometheus --namespace=default -p '{"metadata":{"finalizers":null}}' --type=merge
このコマンドで finalizers
を削除し、その後に削除を実施。
kubectl delete
コマンドに --force
オプションを追加して、強制的に削除。
kubectl delete applications.argoproj.io prometheus --namespace=default --force --grace-period=0
強制削除はリソースのクリーンアップ処理をスキップするため、データの不整合や依存関係の問題が発生する可能性があるので注意
ArgoCD が内部でリソースをロックしている場合があります。argocd-application-controller
のログを確認して、リソースの削除に関するエラーや警告が出ていないか確認。
kubectl logs -n argocd <argocd-application-controller-pod-name>
ログの中にエラーや警告が含まれている場合、それに基づいて対策を検討します。
クラスタ全体の API サーバーや kubectl
の動作が正常であることを確認します。場合によっては、API サーバーの問題でリソースの削除が遅延することがあるらしい。
kubectl get pods --all-namespaces
すべてのポッドが正常に動作していることを確認し、異常がある場合は対応すること
アプリケーションに関連するリソース(例えば、ConfigMap や Secret)が残っている場合、これらのリソースが削除されていないことが原因で削除処理が進まないことがあります。これらの関連リソースも確認し、手動で削除。
kubectl get configmaps,secret --namespace=default
必要に応じて、手動で削除します。
kubectl delete configmap <name> --namespace=defaultkubectl delete secret <name> --namespace=default
これらの対策を順に試して、アプリケーションを削除してみてください。
対象のノードに、workerというラベルをつける場合
以下のコマンドで編集を行う必要がある。
kubectl label nodes [ノード名] node-role.kubernetes.io/worker=
指定した Envoy プロキシが接続しているクラスターの情報を表示しています。 出力からは、Envoy プロキシがどのサービスに対して接続設定を持っているか またはどのサービスとの通信が行われているかを確認できます。 [出力の説明] SERVICE FQDN : 接続先サービス...