iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 9
0
自我挑戰組

自我學習Docker的30天奇幻旅程系列 第 9

Day9 深入淺出Kubernetes(二)

昨天在將我們的應用程序部屬的時候,其實K8s默默幫我們做了許多事情,就讓我們來介紹部屬完之後發生了甚麼事。

Pods Overview

當我們要部屬應用程序時就會創建用來承載的Pod,Pod會綁定在K8s安排的節點上保持到其被終止或刪除。每個Pod可以當作是一個具有Volumes並共享namespace的Docker,能夠擁有Volumes運行的配置以及唯一的cluster IP位址,Pod更可以透過共享同個IP位址及端口達成一個Pod包含多個容器的情況。如圖(一)為部屬完應用程序後的Pod結構。

圖(一) Pods結構

Nodes Overview

Node昨天提到過是一個個單獨的VM用來運行應用程序,而一個Node中可以擁有多個Pod。在運行上會由Master來處理連接在其身上的所有Node調度Pod的方法。如圖(二)為部屬完應用程序後的包含各個Pod的Node結構。

圖(二) Node結構

如何觀察以及排查錯誤

在將我們的應用程序部屬的時候,是不是都不知道應用程序的狀態是如何呢?K8s有提供了幾種觀察的方式可以用來故障排除。我們將會使用以下幾種指命來觀察及排查錯誤

  • kubectl get

    顯示資源,包含名稱、當前狀態、重啟狀態、壽命等

  • kubectl describe

    顯示資源的詳細資訊

  • kubectl logs

    映出Pod的log

  • kubectl exec

    在Pod中的container執行命令

kubectl get

kubectl get pods

執行完的輸出

NAME                                   READY   STATUS    RESTARTS   AGE
kubernetes-bootcamp-57978f5f5d-bhq2s   1/1     Running   0          59m

kubectl describe

kubectl describe pods

執行完的輸出

NAME                                   READY   STATUS    RESTARTS   AGE
kubernetes-bootcamp-57978f5f5d-bhq2s   1/1     Running   0          59m
PS C:\Users\liang> kubectl describe pods
Name:         kubernetes-bootcamp-57978f5f5d-bhq2s
Namespace:    default
Priority:     0
Node:         minikube/172.17.0.3
Start Time:   Tue, 22 Sep 2020 21:56:17 +0800
Labels:       app=kubernetes-bootcamp
              pod-template-hash=57978f5f5d
Annotations:  <none>
Status:       Running
IP:           172.18.0.2
IPs:
  IP:           172.18.0.2
Controlled By:  ReplicaSet/kubernetes-bootcamp-57978f5f5d
Containers:
  kubernetes-bootcamp:
    Container ID:   
...(太長省略)

kubectl logs

kubectl logs kubernetes-bootcamp-57978f5f5d-bhq2s

可以透過訪問API映出LOG

PS ~User> kubectl exec -ti kubernetes-bootcamp-57978f5f5d-bhq2s bash
# 進入container執行命令
root@kubernetes-bootcamp-57978f5f5d-bhq2s:/# curl localhost:8080
# 訪問localhost:8080

執行完的輸出

Kubernetes Bootcamp App Started At: 2020-09-22T13:57:45.802Z | Running On:  kubernetes-bootcamp-57978f5f5d-bhq2s

Running On: kubernetes-bootcamp-57978f5f5d-bhq2s | Total Requests: 1 | App Uptime: 4596.365 seconds | Log Time: 2020-09-22T15:14:22.167Z

kubectl exec

kubectl exec kubernetes-bootcamp-57978f5f5d-bhq2s env

執行完的輸出

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=kubernetes-bootcamp-57978f5f5d-bhq2s
KUBERNETES_PORT_443_TCP=tcp://10.96.0.1:443
KUBERNETES_PORT_443_TCP_PROTO=tcp
KUBERNETES_PORT_443_TCP_PORT=443
KUBERNETES_PORT_443_TCP_ADDR=10.96.0.1
KUBERNETES_SERVICE_HOST=10.96.0.1
KUBERNETES_SERVICE_PORT=443
KUBERNETES_SERVICE_PORT_HTTPS=443
KUBERNETES_PORT=tcp://10.96.0.1:443
NPM_CONFIG_LOGLEVEL=info
NODE_VERSION=6.3.1
HOME=/root

總結:

原本是打算在今天學習並撰寫部屬後的架構及概念、觀察及排查錯誤的方法以及K8s Services的概念還有expose APP的方法,一方面是擔心篇幅過長,另一方面就是只來得及把前兩個打成文章。/images/emoticon/emoticon82.gif
因此,明天的目標就是學習K8s Services的概念還有expose APP的方法。

參考文獻:
Kubernetes官方文件


上一篇
Day8 深入淺出Kubernetes(一)
下一篇
Day10 深入淺出Kubernetes(三)
系列文
自我學習Docker的30天奇幻旅程24
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言