6
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

k8s素人がとりあえずk3sを触ってみる

Last updated at Posted at 2019-03-12

はじめに

k8s素人が調子に乗って(この記事読んで)、k3sを触ってみました。

上記以外にも、Qiitaでk3sをいじってる記事を参考にしながら動かしみてます。

まずは起動

準備

1台でもできるみたいですが、とりあえず、サーバを2台用意します。
1台はk3sサーバ、1台はエージェント用。

インストール

ここから最新版を持ってきます。
試したときは 0.1.0 だったんですが、気が付いたら 0.2.0 になってますね・・・

サーバ起動

k3sサーバ用のマシンにログインして、Quick startに書いてある通り、サーバを起動します。

# k3s server &

起動が落ち着いたら、エージェントから接続するときに使うトークンを確認しておきます。

# cat /var/lib/rancher/k3s/server/node-token

エージェント起動

エージェント用サーバにログインして、エージェントを起動します。

# k3s agent --server https://myserver:6443 --token ${NODE_TOKEN} &

${NODE_TOKE}部分は、サーバ起動で確認したトークンで置き換えます。

これで準備完了です。k8sはいろいろ大変と聞いてて手を付けてなかったんですが、ずいぶんあっさりしてますね。

アプリケーションのデプロイと公開

deploymentの作成

では、さっそくアプリケーションをデプロイしてみます。だいたいNginxが例としてでてくるので、それにならってみます(Nginx、F5に買収されたんですねぇ・・・)。

こんな感じの設定ファイルを作って、

deployment-nginx.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
   name: nginx-deployment
   labels:
     app: nginx
spec:
   replicas: 1
   selector:
     matchLabels:
       app: nginx
   template:
     metadata:
       labels:
         app: nginx
     spec:
       containers:
       - name: nginx
         image: nginx:latest
         ports:
         - containerPort: 80

デプロイ

いざデプロイ。

# k3s kubectl create -f deployment-nginx.yaml
deployment.apps/nginx-deployment created

できたようなので、確認してみます。

# k3s kubectl get deployment
NAME               READY   UP-TO-DATE   AVAILABLE   AGE
nginx-deployment   1/1     1            1           16s

アプリケーションのデバッグ

デプロイはできましたが、ちゃんと接続できるか確認してみます。
まずは、deploymentに紐づけられたpodを確認します。

# k3s kubectl get pods
NAME                               READY   STATUS    RESTARTS   AGE
nginx-deployment-6574bd76c-fc5sv   1/1     Running   0          7m12s

podに外部からアクセスできるように、port-forwardします。

# k3s kubectl port-forward nginx-deployment-6574bd76c-fc5sv 8080:80
Forwarding from 127.0.0.1:8080 -> 80
Forwarding from [::1]:8080 -> 80

別のコンソールから、8080番ポートにアクセスしてみると、

# curl http://localhost:8080
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
     body {
         width: 35em;
         margin: 0 auto;
         font-family: Tahoma, Verdana, Arial, sans-serif;
     }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>

port-forwardしているコンソールには、

Handling connection for 8080

と出て、アクセスできていることがわかります。

サービスとして公開

それでは、サーバ外からもアクセスできるようにしてみます。

# k3s kubectl expose -f deployment-nginx.yaml --external-ip=<サーバのIP>
service/nginx-deployment exposed

できたっぽいですね。

# k3s kubectl get svc
NAME               TYPE        CLUSTER-IP      EXTERNAL-IP     PORT(S)   AGE
kubernetes         ClusterIP   10.43.0.1       <none>          443/TCP   6d20h
nginx-deployment   ClusterIP   10.43.120.251   <サーバのIP>   80/TCP   26s

では、実際にアクセスしてみます。

Screenshot_2019-03-12 Welcome to nginx .png

行けました!

さいごに

食わず嫌いだったk8sですが、k3sのおかげでいろいろと遊べそうです。
てか、去年かった「入門 Kubernetes」がやっと役に立った・・・
#今度は「Kubernetes完全ガイド」買おう。→買った!

6
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?