iT邦幫忙

0

Kubernetes - Explore Your App

  • 分享至 

  • xImage
  •  

Viewing Pods and Nodes

學習重點

  • Pods
  • Nodes
  • 對已部署的app進行故障排除

Pod

當創建部署時,pod會託管你的app。而Pod是一種抽象層,描述了一個群組內的app container,以及共享的資源,包含

  • Shared storage, as Volumes
  • Networking, as a unique cluster IP address
  • Information about how to run each container, such as the container image version or specific ports to use

此外pod是k8s中的最小單位,當你創建部署時,會產生帶有container的pod,而不是直接創建container,而pod會與調度他的node綁定,直到終止或是被刪除,在node故障的情形下,pod會被轉移到其他可用的node上進行調度

Node

pod總是會運行在node中,而node是k8s中的工作機器,那可能是一台虛擬機、實體機器,具體會取決於cluster
每個node都是藉由control plane管理,而一個node可以具有多個pod
k8s control plane會在集群中跨node自動管理,並自動調用且評估每個node上的可用資源

而每個node至少會運行

  • Kubelet, a process responsible for communication between the Kubernetes control plane and the Node; it manages the Pods and the containers running on a machine.
  • A container runtime (like Docker) responsible for pulling the container image from a registry, unpacking the container, and running the application.

使用kubectl進行故障排除

kubectl有以下常見的操作

  • kubectl get - list resources
  • kubectl describe - show detailed information about a resource
  • kubectl logs - print the logs from a container in a pod
  • kubectl exec - execute a command on a container in a pod

Interactive Tutorial - Exploring Your App

  • 取得pods列表,在此次練習中模擬延續你在之前所建立的資源
kubectl get pods

找不到的話等一下,或是重載

  • 接著查看pod裡面有哪些container,用哪些image建立container等...資訊
kubectl describe pods

describe可以查看:pods/node/deployments

  • 依照之前的教學,建立proxy跟export pod name,並呼叫API,依序點擊教學上的指令就會自動執行
$ export POD_NAME=$(kubectl get pods -o go-template --template '{{range .items}}{{.metadata.name}}{{"\n"}}{{end}}')

$ echo Name of the Pod: $POD_NAME

$ curl http://localhost:8001/api/v1/namespaces/default/pods/$POD_NAME/proxy/
  • app可能都會藉由STDOUT輸出log,可以使用指令查看log
kubectl logs $POD_NAME

注意:這裡不需要指定container name,因為在教學的pod內只有一個container

  • 當pod運行後,就可以在container上執行命令,接著用pod name做為參數列出環境參數
kubectl exec $POD_NAME -- env
  • 然後在教學中如前面一樣,在pod中只有一個container,所以可以省略container,然後在pod的container內啟動一個bash
kubectl exec -ti $POD_NAME -- bash
  • 接著在container上開出了一個bash console,用cat指令印出JS程式碼
cat server.js
  • 最後因為我們在container上,可以直接確認app狀態,如果這段執行失敗請確認你有在container上開啟bash
curl localhost:8080
  • 離開
exit

參考


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言