アズタケの開発日誌

備忘録を兼ねて作ってしまいました。さて、今回は何日坊主になるか・・・

Raspberry Pi 3 でIngressを使用したKubernetesを構築してみた

どうも、新年あけましておめでとうございます。アズタケです。

開発サイクルの効率化のためにKubernetesを使用しようとしたわけですが、
Raspberry Pi 3 でクラスタを構築した時にハマったので備忘録として書いておきます。

基本的な構築は
qiita.com
をそのまま行いました。

ただその時の利用用途的にIngressが必要だったわけですが、これをARM上でやるのにかなり苦労してました。数日間ほど。

では今回構築するKubernetesは、v1.9.1でnginx-ingress-controllerは0.9.0を使用します。
これは0.9-beta.12でarm64(arm自体は書いてないみたいだけどリポジトリ見た感じarmもここで対応してるっぽい?)に対応したためです。
別の参考にしようとした記事
Setup Kubernetes on a Raspberry Pi Cluster easily the official way! · Docker Pirates ARMed with explosive stuff
ではTraefikを使用していたためTraefikを使用しようとしましたが、nginx-ingress-controllerが使えるようなのでどうせなのでそちらを使用。

まずは今回は実験目的として、masterノードでもPodがスケジュールされるようにします。

$ kubectl taint nodes --all node-role.kubernetes.io/master-

そしたら以下を実行します(備忘録目的なので特に説明などはしない)。

$ kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/namespace.yaml
$ kubectl apply -f <(curl -s https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/default-backend.yaml |sed 's/defaultbackend/defaultbackend-arm/g')
$ kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/configmap.yaml
$ kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/tcp-services-configmap.yaml
$ kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/udp-services-configmap.yaml
$ kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/rbac.yaml
$ kubectl apply -f <(curl -s https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/with-rbac.yaml |sed 's/nginx-ingress-controller:0.9.0/nginx-ingress-controller-arm:0.9.0/g')

実行し、特にエラーが無ければ以下のようにRunningになっているはずです。

pi@rpsv1:~/deploy $ kubectl get pod -n ingress-nginx
NAME                                        READY     STATUS    RESTARTS   AGE
default-http-backend-748668bf6b-zkkh9       1/1       Running   0          1h
nginx-ingress-controller-85745fb774-7bwt9   1/1       Running   0          1h

構築が終わったのでASP.NET Coreやら色々動かそうと思いますが、また何かハマったら記事にするかも。