おうちKubernetesクラスタを作っているのでメモ
うっかりRasPiが3つ手に入ったので、ずっとやりたかったことをやってみる。
Ubuntu22.04, コンテナランタイムはCRI-Oでやってみる。
参考になったのは下記
Ubuntu23.10でやってみようとしたが、CRI-Oがまだunstableだった。
人によってやり方がいくつかある模様。
絶対手順を忘れるのと、ノードを増やしたり作り直したりするときに楽そうなのでansibleで実行できるようにしといた。
Grafanaをセットアップした際、正しい初期パスワードを入れているのにログインできなくなった。
どうやら過去のパスワードが有効になり続ける現象があるらしい。
下記で解決
できました。1週間くらい暇な時はずっと触ってたけどやっとできた。
エラーはChatGPTが結構いい感じでヒントくれましたね
あと、シェルスクリプトをAnsibleに変換するのもいい感じだった。
で、DBの書き込みエラー?でうまくいかないことがあったけど、デプロイし直したらうまくいった。
なんかクラスタ内部の名前解決が機能していないっぽい。(Podから、 namespace.service.cluster.local
のFQDNでServiceを参照できない。IPアドレスならできる)
なんかバグってる?
環境再構築時にいじっていたら/etc/cni/net.d配下を消すミスをしてしまった。
contrib/cni/10-crio-bridge.conflistを作り直すことで解決。
ワーカーノードからもkubectlを叩きたいときは、control-planeの設定をワーカー側へコピペすること
cat $HOME/.kube/config
環境作り直したらGrafanaダッシュボードが壊れた。
Prometheusにつなげなくなっていたようだが、Grafana側で設定せいているPrometheusサーバのIP更新が必要
Podの中からのホスト名の名前解決で謎挙動があり困っている。
kubectl rollout restart deployment coredns -n kube-system
を行い、2つのPodから同じホストの名前解決を試みる。
最初に実行した方は成功するが、後から実行したものが失敗する。
レプリカ数を減らしたり増やしたりしたがあまり関係なさそう
kubectl scale deployment coredns --replicas=1 -n kube-system
-- 必要に応じて削除
helm uninstall flannel --namespace kube-flannel
-- flannelインストール
kubectl create ns kube-flannel
kubectl label --overwrite ns kube-flannel pod-security.kubernetes.io/enforce=privileged
helm repo add flannel https://flannel-io.github.io/flannel/
helm install flannel --set podCidr="10.244.0.0/16" --namespace kube-flannel flannel/flannel
-- 変なアドレスが当たっているとcorednsのpodがうまく立ち上がらない
sudo ip link set cni0 down
sudo ip link delete cni0
-- 必要に応じて
kubectl -n kube-system rollout restart deployment coredns
-- これをやらないとmetallbのIP適用時にエラーが出る
-- https://zenn.dev/vampire_yuta/articles/ccbc57be8e092a
-- https://github.com/metallb/metallb/issues/1597#issuecomment-1704288084
kubectl edit deploy metallb-controller -nmetallb-system
spec:
progressDeadlineSeconds: 600
replicas: 1
revisionHistoryLimit: 10
selector:
matchLabels:
app.kubernetes.io/component: controller
app.kubernetes.io/instance: metallb
app.kubernetes.io/name: metallb
strategy:
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
type: RollingUpdate
template:
metadata:
creationTimestamp: null
labels:
app.kubernetes.io/component: controller
app.kubernetes.io/instance: metallb
app.kubernetes.io/name: metallb
spec:
containers:
nodeName: <master node name>
- args:
- --port=7472
- --log-level=info
- --tls-min-version=VersionTLS12