Help us understand the problem. What is going on with this article?

Kubernetesの中にLinuxデスクトップ環境を作る

Kubernetesの中にLinuxデスクトップ環境を作る

せっかくのアドベントカレンダー。ここはちょっと変わったことを試してみようと思い、Linuxデスクトップ環境を動かしてみることにしました。
普段私はWindowsがインストールされたノートパソコンを使って作業をしているのですが、たまにLinux環境が欲しくなることがあります。
そんな時は普段はVMを作ったり、VPSを利用したりするわけですが、ふと「Kubernetesでもできるのでは?」と思い立ちました。

調査

思い立ったが吉日です。早速調べてみました。
要はDockerでLinuxデスクトップを構築している事例があれば良いわけです。
そういった試みは案外すぐに見つかりました。

https://github.com/fcwu/docker-ubuntu-vnc-desktop
これがまさにDockerを使ってLinuxのデスクトップ環境を作るというプロジェクトでした。

しかも都合が良いことに、このコンテナイメージはHTML5で動くVNCサーバを同梱しており、Webブラウザを通じてDockerで作成したLinuxデスクトップ環境にアクセスができるのです。

image.png

Kubernetesで動かしてみる

Dockerで動いているのだから、Kubernetesでも簡単に動くだろう。ということでマニフェストをちょちょいと書きます。

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    run: desktop
  name: desktop
spec:
  replicas: 1
  selector:
    matchLabels:
      run: desktop
  template:
    metadata:
      labels:
        run: desktop
    spec:
      containers:
      - image: dorowu/ubuntu-desktop-lxde-vnc
        name: desktop

で、デプロイして、とりあえずkubectl port-forwardで接続してみます。

$ kubectl get pods
NAME                       READY   STATUS    RESTARTS   AGE
desktop-646999d485-nrnbf   1/1     Running   0          67m

$ kubectl port-forward desktop-646999d485-nrnbf 80

で、http://localhost にブラウザでアクセスします。

image.png

特に問題なく動作しました。
もっと動作が遅いかな、と思っていたのですが、思いのほか快適に動作しています。

活用法を考えてみる

さて、ここまで勢いで来てしまいましたが、これ役に立つんでしょうか?
ちょっと無理やり活用方法を考えてみることにします。

Kubernetes内のデバッグ
このLinuxデスクトップ環境はKubernetesの上で動いているので、ここから疎通テストなどをすることで、Podのテストなどができます。
まぁGUIである必要はないのですが、もしかしたら初心者にはとっつきやすいかもしれません。

image.png

当然ポートフォワードせずにブラウザからwebサービスの動作を確認することも可能です。(ブラウザ内ブラウザ!)

image.png

手軽なLinux環境

私のように手元のマシンがWindowsやmacOSの場合は、手軽にLinux環境を試すという目的でも利用できそうです。
特にGUIのアプリケーションを試してみたい場合は、VMよりも手軽に利用でき、さらにほかに人にも同じ環境を試してもらうことが簡単にできます。

プレゼン資料の共有
この方法で作ったLinux環境はWebブラウザからアクセスすることができます。
しかも複数人でアクセスしても同じデスクトップを見ることができるので、人に作業を見せるということができます。

image.png
↑2窓で内容が同期している図です。

これを応用すると発表中のプレゼン資料をスマートフォンなど手元で見てもらうこともできそうです。
ただし、この場合誰もがGUIを操作できてしまうので、いたずらされるかもしれないというのがネックですが・・(VNCクライアントの設定を頑張ればView Onlyというのはできそうでした)

Linuxアプリケーション as a Service

今SaaSといえば当然Webアプリケーションを指しますが、この方法を使うとLinuxアプリケーションを提供することができます。

image.png
↑ Blenderも動いてびっくりした図

image.png
↑ ゲームも動くよ!(速度に問題あり・・)

Google SpreadsheetのようにLibreOffice Calcを利用することができるわけです。
なんだか一周回って帰ってきた感がありますが、選択肢が増えることは良いことです。そういえばWebOSなんてものもありましたね。

まとめ

活用法を無理やり考えてみましたが、まぁ正直なところ微妙なものしかありませんでした。
しかし、こういう知識の積み重ねが、何かのタイミングで役に立つ!といったこともあるかもしれません。
アドベントカレンダーは強制的にトピックを考えて調査をする良い機会なので、こういう「誰得?」的な調査を頑張ってみるのもたまには面白いものだな、と思いました。

inajob
電子工作、JavaScript、Kubernetes 興味があることは何でも! https://twitter.com/ina_ani
http://d.hatena.ne.jp/inajob/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした