k3s
Raspberry Piでkubernetesのクラスタを作っている人もいるくらいなので、そろそろkubernetesを初めてみようと思う。 まずは、簡単そうなk3sをやってみる。
準備
Ubuntu Server 18.04 LTSを普通にインストール。
k3sのインストール
ドキュメントに書いてある通りに、以下を実行する。
curl -sfL https://get.k3s.io | sh -
インストールは終わり。
構築する構成
シンプル?に Ingress(http/tcp) -> Service(http/tcp) -> Pod(http/tcp)の構成にしようと思う。
Pod
Podというかdeploymentを作る。そうするとイメージが Podとしてデプロイされる。 とりあえずnginxをデプロイ。
# 作ったら sudo kubectl create deployment webserver --image nginx # できたのを確認 sudo kubectl get pod NAME READY STATUS RESTARTS AGE webserver-d698d7bd6-rjht6 1/1 Running 0 14m
Service
Podを束ねる?サービスをPodから作る。
# 作ったら sudo kubectl expose pod webserver-d698d7bd6-rjht6 --port=80 --target-port=80 --name=webserver # できたのを確認 sudo kubectl get service NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.43.0.1 <none> 443/TCP 9m15s webserver ClusterIP 10.43.69.55 <none> 80/TCP 3s
Ingress
k3sの外から入ってくる部分を作る。外部からのアクセスをServiceに渡す感じ。 これはコマンドではできないっぽい。
Ingressのファイルを作る。
cat <<'EOF' > ingress.yml apiVersion: networking.k8s.io/v1beta1 kind: Ingress metadata: name: webserver-ingress spec: rules: - http: paths: - path: / backend: serviceName: webserver servicePort: 80 EOF
# 定義を読み込ませる sudo kubectl apply -f ingress.yml # できたのを確認 sudo kubectl describe ingress webserver-ingress Name: webserver-ingress Namespace: default Address: 192.168.1.16 Default backend: default-http-backend:80 (<none>) Rules: Host Path Backends ---- ---- -------- * / webserver:80 (10.42.0.8:80)
動作確認
curlでアクセスするとNginxの最初から入っているHTMLが返ってくるはず。
curl 192.168.1.16