Skip to content

Instantly share code, notes, and snippets.

@goocey
Last active February 9, 2022 16:04
Show Gist options
  • Save goocey/de7b2b716185673b26d5333dccf0ee5d to your computer and use it in GitHub Desktop.
Save goocey/de7b2b716185673b26d5333dccf0ee5d to your computer and use it in GitHub Desktop.
このgitstは自宅環境内でのkubernetes環境で自分が使うサービスを管理するまでの記録を綴ったもの

これは?

遅ればせながら自宅内環境をkubernetesで作っていく このgitstはそれらの経緯の記録を行っているもの

環境回り

使用機材

VM(AMD64) Pi4 ベアメタル(raspbian)

利用想定

Pi4で軽量に動くkubernetes環境ということで、k3s

インフラ周りの調査

名前解決

core-dns: サービスとのマッピングがどんどん書き換わっていく関係でdnsmasqではなく、core-dnsが必要。 etcd: corednsで使用する情報を格納してどんどん入れ替えてくので必要。

kubernetes? microk8s? k3s?

kubernetesが重たいのは知っているので除外、そうなるとmicrok8s?と思ってインストールして試してみたが、何のコンテナを動かしてもいないときでも結構重たいのでこれは採用できないと思った。
結果的に残ったk3sで構築していくことに

Microk8sでadd-onで作っていたRegistryだったりmetal-lbだったりは自前で用意する必要がある。

k3s install

host

curl -sfL https://get.k3s.io | K3S_KUBECONFIG_MODE="644" sh -

hostで下記を実行し、nodeで実行するコマンドを生成

token=`sudo cat /var/lib/rancher/k3s/server/node-token`
master_host=`hostname`
echo "curl -sfL https://get.k3s.io | K3S_URL=https://${master_host}:6443 K3S_TOKEN=${token} sh -"

node

nodeで下記を実行

curl -sfL https://get.k3s.io | K3S_URL=https://master_node_ip:6443 K3S_TOKEN=mynodetoken sh -

kube controll plane setup

ラズベリーパイでk3sクラスタを作ってみた | 日常系エンジニアのTech Blog
上記のサイトをcontrol planeのセットアップで参考にしていました。
raspbianように読み替えて下記の通りにしました。

modprobe nf_conntrack
modprobe br_netfilter
modprobe vxlan

cat << 'EOF' | sudo tee -a /etc/modules-load.d/modules.conf
nf_conntrack
br_netfilter
vxlan
EOF
cat << 'EOF' | sudo tee -a /etc/sysctl.d/99-kubernetes.conf
net.bridge.bridge-nf-call-iptables  = 1
net.ipv4.ip_forward                 = 1
net.bridge.bridge-nf-call-ip6tables = 1
EOF
sudo sysctl --system

node確認

kubectl get node
kubectl get node
^TNAME   STATUS   ROLES                  AGE     VERSION
pi1    Ready    control-plane,master   5h8m    v1.22.5+k3s1
pi4    Ready    <none>                 4h49m   v1.22.5+k3s1
pi2    Ready    <none>                 4h50m   v1.22.5+k3s1
pi3    Ready    <none>                 4h49m   v1.22.5+k3s1

helm install

manually

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

snap package:

sudo snap install helm --classic
apiVersion: apps/v1 # for versions before 1.9.0 use apps/v1beta2
kind: Deployment
metadata:
name: nginx-deployment
spec:
selector:
matchLabels:
app: nginx
replicas: 4 # tells deployment to run 2 pods matching the template
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80

kubernetesを試しに動かしてみる

kubernetes apply -f 3.nginx.yaml

wget pi1
wget pi2 
wget pi3
wget pi4

--2022-01-22 04:16:51--  http://pi1/
pi1 (pi1) をDNSに問いあわせています... 192.168.10.190
pi1 (pi1)|192.168.10.190|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 404 Not Found
2022-01-22 04:16:51 エラー 404: Not Found。

--2022-01-22 04:16:51--  http://pi2/
pi2 (pi2) をDNSに問いあわせています... 192.168.10.191
pi2 (pi2)|192.168.10.191|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 404 Not Found
2022-01-22 04:16:51 エラー 404: Not Found。

--2022-01-22 04:16:51--  http://pi3/
pi3 (pi3) をDNSに問いあわせています... 192.168.10.192
pi3 (pi3)|192.168.10.192|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 404 Not Found
2022-01-22 04:16:51 エラー 404: Not Found。

--2022-01-22 04:16:51--  http://pi4/
pi4 (pi4) をDNSに問いあわせています... 192.168.10.193
pi4 (pi4)|192.168.10.193|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 404 Not Found
2022-01-22 04:16:51 エラー 404: Not Found。

よさそう

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment