184
128

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 3 years have passed since last update.

KubernetesAdvent Calendar 2019

Day 16

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

Last updated at Posted at 2019-12-15

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なんてものもありましたね。

まとめ

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

184
128
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
184
128

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?