概要
少々無謀ですが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が立ち上がりません.
インストールと確認
参考文献を見ながら進めます.
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