あることを試すために、kubernetes 環境を手軽に作る
方式はいろいろあるが、今回は microk8s にて試す。
- On DigitalOcean Instance
- Ubuntu 18.04.2 LTS
リソース | スペック |
---|---|
Core | 4 |
Memory | 8GB |
SSD | 160GB |
Setup
$ sudo snap install microk8s --classic
2019-08-07T22:52:29Z INFO Waiting for restart...
microk8s v1.15.2 from Canonical✓ installed
- インストールは1,2分で完了
root@mk8s:~# kubectl get node -o wide
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
mk8s Ready <none> 29m v1.15.2 157.230.42.196 <none> Ubuntu 18.04.2 LTS 4.15.0-52-generic containerd://1.2.5
# snap info microk8s
name: microk8s
summary: Kubernetes for workstations and appliances
publisher: Canonical*
contact: https://github.com/ubuntu/microk8s
license: unset
description: |
MicroK8s is a small, fast, secure, single node Kubernetes that installs on
just about any Linux box. Use it for offline development, prototyping,
testing, or use it on a VM as a small, cheap, reliable k8s for CI/CD. It's
also a great k8s for appliances - develop your IoT apps for k8s and deploy
them to MicroK8s on your boxes.
(略)
# microk8s.status
microk8s is running
addons:
knative: disabled
jaeger: disabled
fluentd: disabled
gpu: disabled
storage: disabled
registry: disabled
rbac: disabled
ingress: disabled
dns: disabled
metrics-server: disabled
linkerd: disabled
prometheus: disabled
istio: disabled
dashboard: disabled
microk8s.kubectl config view --raw > $HOME/.kube/config
- アドオンで立ち上げられるサービスがいくつかあるよう。結構いろいろある。とりあえず、dns,dashboardあげてみる
# microk8s.enable dashboard
Applying manifest
secret/kubernetes-dashboard-certs created
serviceaccount/kubernetes-dashboard created
role.rbac.authorization.k8s.io/kubernetes-dashboard-minimal created
rolebinding.rbac.authorization.k8s.io/kubernetes-dashboard-minimal created
deployment.apps/kubernetes-dashboard created
service/kubernetes-dashboard created
service/monitoring-grafana created
service/monitoring-influxdb created
service/heapster created
deployment.extensions/monitoring-influxdb-grafana-v4 created
serviceaccount/heapster created
clusterrolebinding.rbac.authorization.k8s.io/heapster created
configmap/heapster-config created
configmap/eventer-config created
deployment.extensions/heapster-v1.5.2 created
If RBAC is not enabled access the dashboard using the default token retrieved with:
token=$(microk8s.kubectl -n kube-system get secret | grep default-token | cut -d " " -f1)
microk8s.kubectl -n kube-system describe secret $token
In an RBAC enabled setup (microk8s.enable RBAC) you need to create a user with restricted
permissions as shown in https://github.com/kubernetes/dashboard/wiki/Creating-sample-user
# microk8s.kubectl get pod -n kube-system
NAME READY STATUS RESTARTS AGE
heapster-v1.5.2-844b564688-vq9s9 4/4 Running 0 4m19s
kubernetes-dashboard-7d75c474bb-n7crm 1/1 Running 0 5m24s
monitoring-influxdb-grafana-v4-6b6954958c-pp6xt 2/2 Running 0 5m23s
こんな感じ。マニフェストがapplyされているわけ。
毎度、microk8s.kubectlと打つのはかったるいので、エイリアス
# snap alias microk8s.kubectl kubectl
Added:
- microk8s.kubectl as kubectl
おまけ
すべての Add-ons を enable にしてみた
- あげるときはいっぺんじゃなくて1つずつがよさそう
- 機能がかぶるやつものあるので結構無理やり
- GPU add-on はGPUでないので無理だった
- knative のステータスは enabled にならなかった
- CrashLoopBackOff な Pod がいくつか
- 母艦の Memory は 8GB じゃたらなかったので、16GB(6Core)でやりなおした
- 終わってみたらだいたい、11GB 消費してた
- Install した直後は 500MB 程度の Memory 使用量
- microk8s.reset でリセットするのもやたら時間がかかる(このスペックのインスタンスで15分~20分くらい)
- しかも最後ハングった
- それぞれの add-on でできあがった namespace が消えてない
- microk8s.stop / start でもだめ
- snap remove してから install してやって復活
結論としては、「使うやつだけ enabled にしましょう」。