Posted at

Docker Desktop for MacでKnativeを動かす

More than 1 year has passed since last update.


概要

少々無謀ですが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