昨天已經介紹了如何使用 Ohara 提供的 shell script 安裝 Kubernetes 平台了,今天主要會介紹有關於 Kubernetes 的環境要如何設定,才能順利的在 Ohara 上執行,另外也會介紹 Kubernetes 常用到的指令,可以幫助我們對於 Container 發生問題時進行 Debug 的動作,找出 Ohara 的 cluster 出問題的原因。
安裝完 Kubernetes 的環境之後,我們第一件要做的事,就是要檢查 Kubernetes 的 API proxy server 是否有啟動,使用以下的指令:
[root@node1 ~]# lsof -i:8080
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
kubectl 31036 root 3u IPv4 134327 0t0 TCP k8s-centos-host1:webcache (LISTEN)
如果找不到 lsof 指令,可以使用以下的指令來安裝:
# yum install -y lsof
如果輸入 lsof 指令之後沒有顯示回傳的內容,就代表 kubernetes 的 API proxy server 沒有打開,需要輸入以下的指令來啟動:
# nohup kubectl proxy --accept-hosts=^*$ --address=10.100.0.126 --port=8080 > /dev/null 2>&1 &
--address 後面的 IP 位址代長 kubernetes master 的 host IP
另外也可以開啟 Browser 輸入 kubernetes API proxy server 的 URL,確認 Kubernetes API proxy server 是有成功被啟動的,URL 如下。
http://10.100.0.126:8080/api/v1/nodes
10.100.0.126 的 IP 位址代表是啟動 Kubernetes API proxy server 的 host IP。畫面如下:
可以看到 Kubernetes Node 相關的資訊。當 API Proxy server 啟動完成之後,另外要在 Kubernetes 的環境上註冊一個服務,主要的目的是用來解析 DNS 的名稱,像是 Zookeeper Cluster、Broker Cluster 和 Worker Cluster 的內部 container 溝通都會使用指定 container 的 hostname 方式,因此需要使用 DNS 的方式來解析 hostname 的 Container IP。
在 kubernetes 的 master 上輸入以下的指令:
# cd ohara/kubernetes
# kubectl create –f dns-service.yaml
使用以下指令來確認 service 是否有被註冊成功:
[root@node1 ~]# kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
default ClusterIP None <none> 1234/TCP 21s
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 34m
可以看到 service 已經成功被註冊了。
以下介紹在 ohara 開發時,常會使用到的 Kubernetes 指令:
用來顯示目前在 kubernetes 的環境上,有哪些的 pod。目前 Ohara 的設計是一個 pod 裡面只會有一個 container
也是用來顯示目前在 kubernetes 的環境上,有哪些的 pod。差別在於連 kubernetes 系統使用的 pod 都會列出來
主要用來查看 pod 目前的執行狀態,在哪些的 nodes 上執行 container、使用哪一個 Docker Image、環境變數、port …等等較細節的資訊
顯示 pod 執行的 container 的 log 相關資訊,主要用於 Debug。如果 pod 裡面有多個 container 需要再加上 -c 參數,指定 container name
顯示目前 Kubernetes 的 node 相關資訊
用於刪除在 kubernetes 環境上執行的 pod
刪除所有目前正在執行的 pod
今天已經把 Kubrnetes 環境設定好了並且也介紹了幾個常使用的指令,明天會繼續介紹 Ohara 要如何使用 Kubernetes 的環境建立 zookeeper cluster、 broker cluster 和 Worker Cluster。