在上一篇(用acs-engine在azure透過VMSS建立出kubernetes (k8s) 自動延展的cluster - 上篇)介紹了如何使用acs-engine這個工具產生出了可以在azure上面部署的ARM template,并且成功部署上了Azure。
在這篇將會延續上篇建立出來的vm,并且透過工具對建立出來的k8s cluster做操作,并且看看azure和k8s怎麽的深度結合。
準備工作
在這篇將會使用到k8s的command line工具kubectl。
不同的作業系統有不同的安裝方式,詳細可以參考官網:https://kubernetes.io/docs/tasks/tools/install-kubectl/#install-kubectl>
以Windows來説,建議可以透過chocolate來安裝,比較省事:
choco install kubernetes-cli
安裝好了之後,記得重開powershell,然後直接輸入kubectl
,會看到kubectl的help畫面。
對k8s cluster做操作
接下來就要對建立出來的cluster做操作,有兩種方式可以對k8s的cluster做操作:
- ssh進入master做操作
- 在local設定k8s config遠端操作
ssh進入master做操作
第一種操作方式是ssh進入到master那臺機器,首先要有master的網址,這個可以從azure portal看到dns的名稱。
只需要找到master這個vm,裡面的DNS Name即可:
之後就可以透過ssh的指令進入:
ssh azureuser@{dnsName}
記得把{dnsName}
調整成爲剛剛查到的dns名稱
進入了之後,就可以用kubectl
來做操作,所以舉例來説:
kubectl get nodes
在local設定k8s config遠端操作
上面的操作方式是遠端進去,但是還有一種是在local操作但是指令是發到遠端,我個人比較喜歡這種模式。
要做到遠端操作需要取得k8s的config設定檔案,可以在local透過以下指令取得:
scp azureuser@{dnsName}:.kube/config .
$env:KUBECONFIG = "./config"
kubectl get nodes
記得要調整{dnsName}以符合你的master dns名稱。
執行完了之後,會看到和上面ssh進入master之後get nodes一樣的内容。
架設簡單nginx服務
有了cluster建立出來并且還可以操作之後,接下來來測試部署一個簡單的nginx服務。
首先,可以下這個指令:
kubectl run nginx --image nginx
kubectl expose deployment nginx --port=80
這個啓動nginx的一個pod,然後把80 port開放出來。
kubectl get pods
接下來要調整k8s的service讓我們外網也能夠連綫的到。
執行以下指令來調整service:
kubectl edit svc/nginx
把ClusterIP改成LoadBalancer。
可以呼叫:
kubectl get services
看到目前service的内部及外部ip
最後使用那個外部ip,在外網也可以看到nginx的服務。
透過vmss自動對node做scaling
到目前爲止我們看了如何建立出pod并且能夠把service和azure的loadbalancer接上了,還有一個深度整合的地方,那就是自動做scaling。
由於建立的node是使用vmss,因此可以使用vmss的auto scaling做到依照例如cpu超過多少等指標來自動scaling。
也可以手動調整instance數,舉例來説,如果我把我的instance改成了2:
稍等一下再用kubectl get nodes
,會看到node變成了2臺。
當然手動做的了,自動也做的了,這個部分和一般的vmss auto scaling沒有什麽兩樣
結語
透過了上篇(用acs-engine在azure透過VMSS建立出kubernetes (k8s) 自動延展的cluster - 下篇)以及這一篇的介紹,希望對於如何在azure上面建立k8s可以自動擴展node的cluster有了更清楚的瞭解,并且透過這篇可以看到k8s和azure的深度整合。
k8s會暫時不往下寫了,如果有興趣的朋友,或者想知道更多可以隨時透過部落格或者其他social media聯繫我。