RaspberryPiを使って自宅サーバを作ってみた話 - k8s kubeadmを使用した高可用性クラスターの作成(haproxy編)


はじめに

RaspberryPiを使用して自宅サーバを作っていたのですが、勉強のためにk8sを構築しようと思いました。
ただ普通に作るのはとても面白くないので、後学のためにマスターをマルチ構成にしたk8sを作ります。

本内容は
準備編」「haproxy編」「master編」「worker編
の4部構成となります。

今回は「haproxy編」です。

haproxy構築

[ 作業対象:k8s-proxy ]

ホスト名を記載して名前解決させます。

# vi /etc/hosts
192.168.13.10 k8s-proxy
192.168.13.20 k8s-master1
192.168.13.21 k8s-master2
192.168.13.22 k8s-master3
192.168.13.30 k8s-worker1
192.168.13.31 k8s-worker2
192.168.13.32 k8s-worker3

kube-apiserver用のLB作成します。

# apt install haproxy

haproxyの設定をします。

# mv /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg.org

# vi /etc/haproxy/haproxy.cfg
global
    log         127.0.0.1 local2 info
    chroot      /var/lib/haproxy
    pidfile     /var/run/haproxy.pid
    maxconn     256
    user        haproxy
    group       haproxy
    daemon

defaults
    mode               tcp
    log                global
    option             tcplog
    timeout connect    10s
    timeout client     30s
    timeout server     30s

frontend  http-in
    bind *:80
    mode  http
    stats enable
    stats auth admin:adminpassword
    stats hide-version
    stats show-node
    stats refresh 60s
    stats uri /haproxy?stats

frontend k8s
    bind *:6443
    mode               tcp
    default_backend    k8s_backend

backend k8s_backend
    balance            roundrobin
    server             k8s-master1 192.168.13.20:6443 check
    server             k8s-master2 192.168.13.21:6443 check
    server             k8s-master3 192.168.13.22:6443 check 

haproxyを起動します。
起動後の「backend 'k8s_backend' has no server available!」がでているが、
まだ何も作っていないので無視して問題ありません。

# systemctl enable haproxy
Synchronizing state of haproxy.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable haproxy

# systemctl start haproxy

# systemctl status haproxy
● haproxy.service - HAProxy Load Balancer
     Loaded: loaded (/lib/systemd/system/haproxy.service; enabled; vendor preset: enabled)
     Active: active (running) since Wed 2020-08-12 11:52:21 UTC; 7s ago
       Docs: man:haproxy(1)
             file:/usr/share/doc/haproxy/configuration.txt.gz
    Process: 1873 ExecStartPre=/usr/sbin/haproxy -f $CONFIG -c -q $EXTRAOPTS (code=exited, status=0/SUCCESS)
   Main PID: 1881 (haproxy)
      Tasks: 5 (limit: 972)
     Memory: 2.5M
     CGroup: /system.slice/haproxy.service
             ├─1881 /usr/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid -S /run/haproxy-master.sock
             └─1883 /usr/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid -S /run/haproxy-master.sock

Aug 12 11:52:21 ras-proxy systemd[1]: Starting HAProxy Load Balancer...
Aug 12 11:52:21 ras-proxy haproxy[1881]: [NOTICE] 224/115221 (1881) : New worker #1 (1883) forked
Aug 12 11:52:21 ras-proxy systemd[1]: Started HAProxy Load Balancer.
Aug 12 11:52:23 ras-proxy haproxy[1883]: [WARNING] 224/115223 (1883) : Server k8s_backend/k8s-master1 is DOWN, reason: Layer4 timeout, check duration: 2001ms. 2 active and 0 backup servers left. 0 sessions active, 0 requeued, 0 remaining in queue.
Aug 12 11:52:23 ras-proxy haproxy[1883]: [WARNING] 224/115223 (1883) : Server k8s_backend/k8s-master2 is DOWN, reason: Layer4 timeout, check duration: 2001ms. 1 active and 0 backup servers left. 0 sessions active, 0 requeued, 0 remaining in queue.
Aug 12 11:52:24 ras-proxy haproxy[1883]: [WARNING] 224/115224 (1883) : Server k8s_backend/k8s-master3 is DOWN, reason: Layer4 timeout, check duration: 2001ms. 0 active and 0 backup servers left. 0 sessions active, 0 requeued, 0 remaining in queue.
Aug 12 11:52:24 ras-proxy haproxy[1883]: [ALERT] 224/115224 (1883) : backend 'k8s_backend' has no server available!

次回

k8sのMaser構築について触れていきます。