早速K0sを試してみた
投稿者:熊谷
こんにちは。昼も寒くて震えております。
さて、K8sの軽量版として、K0sがOSSとしてリリースされました。
今回はそのK0sをGoogle Cloud Platform上のGCEで動かしてみます。
K0sとは
K0sはKubernetes(K8s)クラスターを簡単に構築できるように必要な項目が事前構成された包括的なKubernetesディストリビューションです。
似たようにK8sの簡易版を構成できるminikubeもありますが、vboxやKVMの用意が必要だったりします。
また、同じように軽量なK8sとしてEdgeやIoT向けのK3sもあります。
環境準備
今回使用したOSはdebian-10-buster-v20201112です。(何も気にしないで選択していました)
その他のLinux OSでも、各種コマンドのインストール方法だけ読み替えれば実施できるかと思います。
GCEからのサーバ構築は非常に簡単なので、検証環境としてもおすすめです。
サーバが起動したあと、GCPコンソールで該当のサーバを探し、SSH コンソールを起動します。
(私は2つ立ち上げました)
まず環境の準備として、kubectlコマンドを導入します。詳しくはこちらを参照
# ダウンロードと配置
curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.19.0/bin/linux/amd64/kubectl
chmod +x ./kubectl
sudo mv ./kubectl /usr/local/bin/kubectl
#コマンド確認
kubectl version --client
そして肝心のK0sのダウンロードです。こちらはGithub参照です。
sudo sh -c "curl -sSLf get.k0s.sh | sh"
これだけです。非常に簡単。
K0sの起動
環境の準備が整ったところで、実際にK0sを起動していきます。
(Permissionで起こられるので、sudoで実施)
sudo k0s server --enable-worker
コンソールが流れていくので、先程開いた 別のSSHコンソールで作業をします。
(バックグラウンドで起動でも大丈だと思います)
稼働確認のため、kubectlコマンドを実施するのですが、予めadmin.confを変数に登録しておきます。
私の環境は検証したあとすぐサーバを削除するので、~/配下で作業していますが、適宜読み替えを実施してください。
sudo cp /var/lib/k0s/pki/admin.conf admin.conf
export KUBECONFIG=~/admin.conf
これで、kubectlをコンフィグ指定でしなくて良くなったので、K0sのNodeの起動を確認します。
kubectl get node
稼働確認で以下のコマンドを実施して、Nodeの起動を確認します。
NAME STATUS ROLES AGE VERSION
kumagai-k0s-tset Ready <none> 77m v1.19.3
立ち上がっていますね。
物足りないので、コンテナを起動
テキトウにNginxサーバを立てて、curlしてみます。ここからは普通のK8sと一緒です。
今回使用した、マニフェストファイル(testpods.yaml)は以下です。
apiVersion: apps/v1
kind: Deployment
metadata:
name: sample-deployment
spec:
replicas: 1
selector:
matchLabels:
app: sample-app
template:
metadata:
labels:
app: sample-app
spec:
containers:
- name: nginx-container
image: nginx:1.13
ports:
- containerPort: 80
作成したyamlをapplyします。
kubectl apply -f testpods.yaml
podが立っているか確認します。
kubectl get pod
次にServceを作ります。svc.yamlとして作成します。
apiVersion: v1
kind: Service
metadata:
name: sample-clusterip
spec:
type: ClusterIP
ports:
- name: "http-port"
protocol: "TCP"
port: 8080
targetPort: 80
selector:
app: sample-app
Servceを作成します。
kubectl apply -f svc.yaml
確認は以下のコマンドでできます。
kubectl get svc
ここで、出力される
sample-clusteripのCLUSTER-IPをコピーして、起動しているPodにcurlを実施します。
curl http://<CLUSTER-IP>:8080
NginxのHelloWorldが表示されるはずです。
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
~~以下略
まとめ
非常に簡単にk8s環境を構築できました。まだ本番利用できるかの評価はできてないのですが、
検証用途としては非常にライトなのではないでしょうか?
これを期に、K8sやGCPを触ってみてはいかがでしょうか?
弊社では、一緒にCloud Nativeの環境を作って行ける企業様を探しております。
ご興味があれば、下記リンクからお問い合わせください!