FuFu KK8s
  • K~K8s index
  • Kubernetes 的基礎世界
  • Why container is not Docker
  • Startup Local Kubernetes via Minikube
  • K8s Master node Component 介紹
  • NameSpace、Deployments 概念說明
  • 常見的 kubectl 指令
  • 回顧第一次部署,淺談 Pod、Deployment
  • 回顧第一次部署,淺談 Service
  • 今日來介紹 Pod 靜態文件~ Manifest
  • Pod 的健康檢查方式
  • Pod 的健康檢查方式 Part-2
  • Pod 的資源請求、上限
  • Pod 資料,如何持久化存放、讀取
  • Pod 副本管理~ 描述 ReplicaSet 控制器
  • Pod 副本管理~ 實作篇
  • 淺談 DaemonSet,及相對 ReplicaSet 的差異
  • 來說說 Label
  • 從 Label 再回頭談 Service
  • Service 續集之 Cluster IP、Kube-proxy、LoadBalancer
  • 從 Service 發現 K8s 網路層全貌
  • Container Data Persistent
  • 發現、初談 StatefulSet
  • 再談 StatefulSet
  • 認識 ConfigMap
  • 第一次使用 Play with Kubernetes
  • 手工 Installing kubeadm
  • 手工 Installing CRI-O、kubeadm init
  • 繼上篇,排查 kubelet、kubeadm init 問題
  • Installing a pod network add-on
  • K8s add Nodes(join)
  • 驗證自建的 K8s
  • 筆記
    • kubectl get 筆記
    • kubectl 部署筆記
    • kubectl describe nodes
  • 實務記憶篇
    • 整理下記憶
    • 有哪些 Kubernetes 雲端服務
    • 如何從本機連線至 GKE Pod
    • GCP Memorystore 服務介紹
    • 如何連線至 GCP Memorystore
    • GCP Cloud SQL 服務介紹
    • 如何連線至 Cloud SQL
    • 關於 GCP VPC 網路
    • HELM 工具用途
    • 臨時題目:查修 prometheus
    • 繼續離題:繼續查修Prometheus
    • 臨時題目:限定 Pod 訪問外網時,固定 public ip
    • K8s 監控數據來源 Prometheus
    • 監控要告警啊 AlertManager
    • 監控要有圖表啊 Grafana
    • Grafana收集Kubernetes系統資訊
    • 系統 Log 資料
    • 系統 Log 資料收集至 EFK
    • 關於 EFK 角色
    • 系統 Log 資料 - fluent-bit 串接
    • 開放網站對外存取
    • 網站提供 https 安全連線服務 - 憑證管理
    • 網站提供 https 安全連線服務 - 憑證與Ingress整合
    • 網站提供 https 安全連線服務 - Istio 範例
    • 需要額外的 非http 連線
    • Istio 初略介紹
    • Istio 整合 Certmanager DNS01
    • 番外篇:Istio 如何限制訪問來源
    • 番外篇:如何擴充 PV PVC storage size
    • 番外篇:如何利用 Binlog 還原資料庫
  • Helm 實務學習心得
    • Helm requirements 見解
    • 同環境,一次部署多個相同App
  • Python
    • 11-1 Firebase 資料庫簡介
Powered by GitBook
On this page
  • Kubectl 與 物件觀念
  • 檢視 K8s API 物件
  • 新增、更新、移除 K8s 物件
  • 標注與註解物件
  • 查看物件 api-resources
  • 除錯指令

常見的 kubectl 指令

PreviousNameSpace、Deployments 概念說明Next回顧第一次部署,淺談 Pod、Deployment

Last updated 6 years ago

Kubectl 與 物件觀念

  1. K8s 所有資源都是 RESTful API 格式組成的,每個資源皆稱呼為物件 object。

  2. 每個物件都有唯一的 http 路徑,例如:

  3. 一個 pod 名稱是:my-pod 。

  4. 此 pod 物件位於 namespace:default 空間中。

檢視 K8s API 物件

  • 要取得特定資源,kubectl 指令方式是 kubectl get <資源名稱> <物件名稱>

  • 預設下,kubectl get 僅輸出簡單明瞭之單行資訊

  • 如要檢視稍多資訊,可透過 -o wide 旗標,在該行中取得稍多資訊。

  • 如要檢視完整資訊,可透過 kubectl get pods my-pod -o json | -o yaml 取得。

  • 如要檢視完整資訊,另一方式指令 kubectl describe <資源名稱> <物件名稱> 。

  • 如要移除首行資訊,可搭配使用 --no-headers 旗標。

  • 如要只提取特定欄位,可搭配使用 -o jsonpath --template={.status.podIP} 。

新增、更新、移除 K8s 物件

  • K8s API 物件都可用 JSON or YAML 格式檔案進行定義。

  • 檔案可以是 apiserver 回應的查詢結果,也可傳送至 apiserver 執行一次請求。

  • 建立物件指令:kubectl apply -f http.yaml

  • 如果 http.yaml 物件重新修改過,可以重複執行上述指令。

  • 也可線上編輯物件,但非常不建議這麼做,這牽涉到團隊協同合作情境。

  • 線上編輯指令:kubectl edit <資源名稱> <物件名稱>

  • 刪除物件指令:kubectl delete -f http.yaml

  • 也可以是:kubectl delete <資源名稱> <物件名稱>

  • 刪除指令只要一送出,該物件即刻刪除,K8s 系統並不會額外提醒刪除動作。

標注與註解物件

  • K8s 物件是可以透過 annotate、label 兩指令進行標注與註解。

  • 新增標注方式:kubectl label pods my-pod color=green

  • 移除標注方式:kubectl label pods my-pod -color

  • 觀察標注?

查看物件 api-resources

$ $ kubectl api-resources
NAME                              SHORTNAMES   APIGROUP                       NAMESPACED   KIND
bindings                                                                      true         Binding
componentstatuses                 cs                                          false        ComponentStatus
configmaps                        cm                                          true         ConfigMap
endpoints                         ep                                          true         Endpoints
events                            ev                                          true         Event
limitranges                       limits                                      true         LimitRange
namespaces                        ns                                          false        Namespace
nodes                             no                                          false        Node
persistentvolumeclaims            pvc                                         true         PersistentVolumeClaim
persistentvolumes                 pv                                          false        PersistentVolume
pods                              po                                          true         Pod
podtemplates                                                                  true         PodTemplate
replicationcontrollers            rc                                          true         ReplicationController
resourcequotas                    quota                                       true         ResourceQuota
secrets                                                                       true         Secret
serviceaccounts                   sa                                          true         ServiceAccount
services                          svc                                         true         Service

除錯指令

Log 不得少,不然怎麼除錯呢?

  • 查看 log 方式:kubectl log my-pod

  • 如果一個 pod 中有多個 container,可以使用-c另行指定 container。

  • 上述指令執行,如同 Linuxtail指令即刻跳出輸出,如要讓 log 不斷輸出,可以加上-f命令。

  • 想進入 container bash 環境進行除錯, 可以執行指令:kubectl exec -it my-pod --bash

  • 想複製 pod container 中的檔案,可以執行指令 kubectl cp <pod-name>:/path/abc.txt ~/abc.txt

  • 反過來也可複製到 container 中:kubectl cp ~/xyz.txt <pod-name>:/path/xyz.txt

參考書籍: Kubernetes 建置與執行 書中 P.38~42 內容

https://you.k8s.com/api/v1/namespace/default/pods/my-pod