Open14

おうちKubernetesクラスタを作っているのでメモ

tarorotaroro

うっかりRasPiが3つ手に入ったので、ずっとやりたかったことをやってみる。

Ubuntu22.04, コンテナランタイムはCRI-Oでやってみる。

参考になったのは下記

https://kubernetes.io/ja/docs/setup/production-environment/tools/kubeadm/install-kubeadm/
https://ja.linux-console.net/?p=3476#google_vignette
https://tech.virtualtech.jp/entry/2020/01/16/193521
https://sminamot-dev.hatenablog.com/entry/2020/03/10/214447

Ubuntu23.10でやってみようとしたが、CRI-Oがまだunstableだった。

人によってやり方がいくつかある模様。

tarorotaroro

できました。1週間くらい暇な時はずっと触ってたけどやっとできた。

tarorotaroro

エラーはChatGPTが結構いい感じでヒントくれましたね

tarorotaroro

ワーカーノードからもkubectlを叩きたいときは、control-planeの設定をワーカー側へコピペすること

cat $HOME/.kube/config

tarorotaroro

環境作り直したらGrafanaダッシュボードが壊れた。
Prometheusにつなげなくなっていたようだが、Grafana側で設定せいているPrometheusサーバのIP更新が必要

tarorotaroro

Podの中からのホスト名の名前解決で謎挙動があり困っている。

kubectl rollout restart deployment coredns -n kube-system
を行い、2つのPodから同じホストの名前解決を試みる。

最初に実行した方は成功するが、後から実行したものが失敗する。

レプリカ数を減らしたり増やしたりしたがあまり関係なさそう

kubectl scale deployment coredns --replicas=1 -n kube-system

tarorotaroro
-- 必要に応じて削除
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