LoginSignup
5
4

More than 5 years have passed since last update.

Docker Desktop for MacでKnativeを動かす

Posted at

概要

少々無謀ですがDocker Desktop上でKnativeを動かしてみましたので,履歴として紹介します.なお,サンプルを動作させたところまでですので,過剰な期待はなさらないでください.また,動作させたサービスが落ちることもありました.

環境

以下の環境で試しました.メモリ8GBだとギリギリです.

項目 利用した環境
本体 MacBook Pro(13-inch, 2017)
CPU 2.3GHz Core i5
メモリ 8GB
Docker Docker Desktop for Mac (Docker CE 18.06.0-ce-mac69, edge)
Kubernetes Kubernetes v1.10.3 (上記に含まれているもの)

Kubernetesの設定は,CPUsを4に,Memoryを6GiBにしました.これ未満ではサンプルのサービスを起動する際にPODが立ち上がりません.

image.png

インストールと確認

参考文献を見ながら進めます.

Istioのインストール

まずはIstioをインストールします.
コマンドを打ち終わってからPODが起動するまで1分ほどお待ち下さい.

$ curl -L https://raw.githubusercontent.com/knative/serving/v0.1.0/third_party/istio-0.8.0/istio.yaml \
  | sed 's/LoadBalancer/NodePort/' \
  | kubectl apply -f -
$ kubectl label namespace default istio-injection=enabled

Knative Servingのインストール

Knativeをインストールします.
こちらもコマンド入力後,1分ほどお待ち下さい.

$ curl -L https://github.com/knative/serving/releases/download/v0.1.0/release-lite.yaml \
  | sed 's/LoadBalancer/NodePort/' \
  | kubectl apply -f -

services.yamlの作成と起動

動作確認のためのサンプルサービスのためのservices.yamlを作成します.
ここでは,参考文献に従ってhelloworld-goを使用します.

apiVersion: serving.knative.dev/v1alpha1 # Current version of Knative
kind: Service
metadata:
  name: helloworld-go # The name of the app
  namespace: default # The namespace the app will use
spec:
  runLatest:
    configuration:
      revisionTemplate:
        spec:
          container:
            image: gcr.io/knative-samples/helloworld-go # The URL to the image of the app
            env:
            - name: TARGET # The environment variable printed out by the sample app
              value: "Go Sample v1"

上記をapplyします.
PODが起動するまで30秒ほどお待ち下さい.

$ kubectl apply -f service.yaml

PODの起動を確認

下記のようにPODの起動を確認しましょう.
CPUやメモリが不足していると,SERVICESは作られるのですがPODが作られません.
なお,ここで表示されるPODの名称は,次で使います.

$ kubectl get pods
NAME                                              READY     STATUS    RESTARTS   AGE
helloworld-go-00001-deployment-5b5f5f877b-l4xb4   3/3       Running   0          13s

port-forwardの設定

先程調べたPODの名称を使って,PORT FORWARDの設定を行います.

$ kubectl port-forward helloworld-go-00001-deployment-5b5f5f877b-l4xb4 8080:8080

curlでアクセス

ここまでできたらcurlコマンドでアクセスしてみましょう.
下記のように表示されればOKです.
または,Webブラウザでhttp://localhost:8080/にアクセスしてみてください.

$ curl -v localhost:8080
* Rebuilt URL to: localhost:8080/
*   Trying ::1...
* TCP_NODELAY set
* Connected to localhost (::1) port 8080 (#0)
> GET / HTTP/1.1
> Host: localhost:8080
> User-Agent: curl/7.54.0
> Accept: */*
>
< HTTP/1.1 200 OK
< Date: Wed, 01 Aug 2018 12:56:18 GMT
< Content-Length: 27
< Content-Type: text/plain; charset=utf-8
<
Hello World: Go Sample v1!
• Connection #0 to host localhost left intact

まとめ

とりあえずDocker DesktopでもKnativeを動かせることが分かりました.
試し終わったら,helloworld-goやKnative,Istioのコンテナを止めたいのですが,kubectl delete中に無反応になってしまうこともありました.お気をつけください.

参考文献

https://github.com/knative/docs/blob/master/install/Knative-with-Minikube.md
https://github.com/knative/docs/blob/master/install/getting-started-knative-app.md

5
4
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
5
4