July 18th, 2016
miniKube 單機版的 Kubernetes
miniKube 是 Google 發布可以在單機上面跑 Kubernetes 的工具,安裝跟使用都相當簡單.由於會在本地跑一個 VM ,所以也不用擔心會被 Google Cloud 不小心付費的問題.
安裝
curl -Lo minikube https://storage.googleapis.com/minikube/releases/v0.6.0/minikube-darwin-amd64 && chmod +x minikube && sudo mv minikube /usr/local/bin/
啟動
minikube start
連接進該 VM
minikube ssh
打開並且顯示 minikube 的 dashboard
minikube dashboard
接下來,安裝 Kubernetes
安裝 Google Cloud SDK
curl https://sdk.cloud.google.com | bash
安裝好之後,會有 gcloud
, gsutil
但是還需要安裝 kubectl
透過 Google Cloud SDK 安裝 Kubernetes
gcloud components install kubectl
簡單 Tutorial
# Startup miniKube
minikube start
# Create a deployment
kubectl run hello-minikube --image=gcr.io/google_containers/echoserver:1.4 --port=8080
# Expose it
kubectl expose deployment hello-minikube --type=NodePort
# Check pod
kubectl get pod
# Scale
kubectl scale deployment hello-minikube --replicas=4
# Direct link to hello-minikube
curl $(minikube service hello-minikube --url)
How to Rolling Update on Kubernetes
kubectl edit deployment hello-minikube
Update your service version and apply it (save it back).
You can also update this file via minikube dashboard
- Edit “deployment”
- Update “spec”->”spec”-> “image” version.
Kubernetes 與 Docker Swarm Mode 差異
- Kubernetes 的 Pods 就是 Docker Swarm 的 Service
- 對於 Rolling Update:
- Kubernetes : 先起來新的 Pod 是新的版本,然後關閉舊的 Pod. 也就是原先有 3 個 Pod ,為了要 Rolling Update 於是產生另外 3 個新的 Pod .等到穩定後,把舊的 3 個 Pod 關閉.
- Docker Swarm: 透過 Load Balancer 把沒有用的先換成新的.
- 對於 Routing Mesh :
- Kubernetes : 並沒有這個功能,因為對外需要透過 Expose
- Docker Swarm : 每個 Node 都具有 Routing Mesh ,也就是都可以連接到 Service