k0sでKubernetes環境をVirtualbox/Vagrantに構築する
k0sという軽量Kubernetesディストリビューションがあるようです。
自前のWebアプリを安価にk8sクラスタで運用できると嬉しいなぁということでまずはローカル環境で試してみます。
この記事のゴール
Kubernetes環境でNginxを立て、ホストからNginxのデフォルトページアクセスできる
参考にした記事
https://www.creationline.com/lab/47938 https://www.niandc.co.jp/sol/tech/date20201124_1935.php
k0sのインストール
この記事(k0sインストール)を参考にインストールしていきます。 https://www.creationline.com/lab/47938
- 記事では、private_networkが
192.168.56.101
となっていますが、以下のエラーが出てしまったので、192.168.35.101
に変更しました。
The IP address configured for the host-only network is not within the allowed ranges. Please update the address used to be within the allowed ranges and run the command again. Address: 192.168.56.101 Ranges: 192.168.35.0/24
この環境では、/usr/local/bin
のパスがsudo経由では通っていないので、パスを通すか毎度 /usr/local/bin/k0s
と入力します。
マニフェストを用意・適用する
DeploymentとServiceを用意します。
nginx.yaml
apiVersion: apps/v1 kind: Deployment metadata: name: nginx spec: replicas: 3 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx ports: - containerPort: 80 --- apiVersion: v1 kind: Service metadata: name: nginx spec: selector: app: nginx ports: - port: 80 targetPort: 80 nodePort: 30007 type: NodePort
以下のコマンドでapplyします。
sudo /usr/local/bin/k0s kubectl apply -f nginx.yaml
正しくapplyされていそうか確認
[vagrant@node1 ~]$ sudo /usr/local/bin/k0s kubectl get all NAME READY STATUS RESTARTS AGE pod/nginx-7848d4b86f-cnrff 1/1 Running 0 3m48s pod/nginx-7848d4b86f-nj6qm 1/1 Running 0 3m48s pod/nginx-7848d4b86f-t9zhw 1/1 Running 0 3m48s NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 78m service/nginx NodePort 10.98.152.172 <none> 80:30007/TCP 3m48s NAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/nginx 3/3 3 3 3m48s NAME DESIRED CURRENT READY AGE replicaset.apps/nginx-7848d4b86f 3 3 3 3m48s
ホストからNginxのデフォルトページへアクセス
VMのIPは192.168.35.101で、NodePortのIPは30007で固定しているため、以下のURLでアクセスします。
curl http://192.168.35.101:30007/
デフォルトページっぽいものが返ってくればOK
まとめ
Kubernetes環境をさくっと立てられて便利でした! 次回は外部からkubectlを実行できるようにしていく予定です!