iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 13
0
Software Development

用30天介紹 open source 專案 Ohara 系列 第 13

Day 13 Ohara 的 Cluster 在 Kubernetes 平台上執行 (二)

  • 分享至 

  • xImage
  •  

昨天已經介紹了如何使用 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。畫面如下:
https://ithelp.ithome.com.tw/upload/images/20190928/20103456TknnsDSQoz.png

可以看到 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 指令:

  • kubectl get pods

用來顯示目前在 kubernetes 的環境上,有哪些的 pod。目前 Ohara 的設計是一個 pod 裡面只會有一個 container

  • kubectl get pods –all-namespaces

也是用來顯示目前在 kubernetes 的環境上,有哪些的 pod。差別在於連 kubernetes 系統使用的 pod 都會列出來

  • Kubectl describe pod ${podName}

主要用來查看 pod 目前的執行狀態,在哪些的 nodes 上執行 container、使用哪一個 Docker Image、環境變數、port …等等較細節的資訊

  • Kubectl logs ${podName}

顯示 pod 執行的 container 的 log 相關資訊,主要用於 Debug。如果 pod 裡面有多個 container 需要再加上 -c 參數,指定 container name

  • kubectl get nodes

顯示目前 Kubernetes 的 node 相關資訊

  • kubectl delete pod ${podName}

用於刪除在 kubernetes 環境上執行的 pod

  • Kubectl delete pods –all

刪除所有目前正在執行的 pod

今天已經把 Kubrnetes 環境設定好了並且也介紹了幾個常使用的指令,明天會繼續介紹 Ohara 要如何使用 Kubernetes 的環境建立 zookeeper cluster、 broker cluster 和 Worker Cluster。


上一篇
Day 12 Ohara 的 Cluster 在 Kubernetes 平台上執行 (一)
下一篇
Day 14 Ohara 的 Cluster 在 Kubernetes 平台上執行(三)
系列文
用30天介紹 open source 專案 Ohara 30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言