K8s高頻命令
- 獲取資源信息,如獲取 Pod、Service、Deployment等資源狀態信息
kubectl get
- 創建資源如創建Pod、Service、Deployment等資源
kubectl create
- 刪除資源,如刪除Pod、Service、Deployment等資源
kubectl delete
- 應用配置文件,如引用Deployment的配置文件如,test.yml
kubectl apply
- 查看資源詳細的信息,如查看Pod、Service、Deployment等資源的詳細信息和狀態
kubectl describe
- 在容器內部執行,如Pod內部執行命令或范文容器內部的終端
kubectl exec
- 將集群內的服務端轉發到本地,用于 本地訪問集群內的服務
kubectl port-forward
- 查看Pod的日志信息,如查看容器標準輸出和錯誤標準輸出
?kubectl logs
- 調整資源的副本數,如調整Deployment的副本數
kubectl scale
- 控制應用的滾動更新,如進行版本升級或回滾
kubectl rollout
- 獲取Pod的信息時,常常忘記加s,導致無法獲取到Pod的狀態信息
kubectl logs
- 調整資源的副本數,如調整Deployment的副本數
kubectl scale
- 控制應用的滾動更新,如進行版本升級或回滾
kubectl rollout
具體實現
## kubectl get pods -o wide
-o output
用于指定輸出格式,如yaml,json,wide,name等。## kubectl get pods -l app-myapp
-l --selector
根據標簽選擇器來過濾結果## kubectl apply -f my-resource.yaml
-f --filename
從文件中加載資源清單。可以指定多個文件。## kubectl apply -k ./path/to/kustomization
-k --kustomize
從Kustomization目錄加載資源。## kubectl --context dev get pods
--context
指定要使用的上下文## kubectl --as admin get pods
--as
指定要使用的用戶## kubectl --as-group=system:developers get pods
--as-group
指定要使用的用戶組。## kubectl --cluster=cluster1 get pods
--cluster
指定要使用的集群## kubectl --server=https://api.example.com get pods
--server
指定API服務器的地址## kubectl --certificate-authority=/path/to/ca.crt get pods
--certficate-authority
指定CA證書的路徑## kubectl --client-certificate=/path/to/client.crt get pods
--client-certificate
指定客戶端證書## kubectl --client-key=/path/to/client.key get pods
--client-key
指定客戶端私鑰的路徑。## kubectl --insecure-skip-tls-verify=true get pods
--insecure-skip-tls-verfy
跳過TLS證書驗證## kubectl get pods --timeout=30s
--timeout
指定API請求的超時時間## kubectl get pods --request-timeout=30s
--request-timeout
指定API請求的超時時間(與 --timeout 類似)## kubectl get pods --watch
--watch
觀察資源的變化## kubectl get pods --watch-only
--watch
觀察資源的變化## kubectl get pods --watch-only
--watch-only
僅觀察資源的變化而不顯示初始狀態## kubectl get pods --all-namespaces
--all-namespaces
操作所有命名空間## kubectl delete pods --all
--all
對于某些命令,可以懸著所有資源## kubectl get pods --field-serlector=status.phase=Runimg
--field-selector
根據字段選擇器來過濾結果## kubectl --kubeconfig=/path/to/kubeconfig get pods
--kubecofnig
指定kubeconfig文件的位置
具體事務分析
K8s的pod健康檢查機制
K8s的Pod健康檢查機制用于確保容器在運行時保持健康狀態。如果一個容器不健康,K8s可以拆去措施來恢復服務,例如重啟容器或嗲調度新的Pod。K8s提供了兩種主要類型的健康檢查:Livensess Probe 和 Readiness Probe,以及減少使用的Statup Probe
Liveness Probe(存活探針)
目標:確定容器是否正在運行。如果存活探針失敗,Kubernetes將重啟該容器。
目的:防止容器陷入死鎖或無響應狀態,確保應用始終處于工作狀態。
使用場景:存活探針適合那些可能進入非響應狀態但仍保持運行的應用程序。例如,Web內存可能會又內存泄露或其他問題變得不能響應HTTP請求,這時存貨探針可以幫助檢查這種情況并觸發自動修復措施。
配置:
livenessProbe:httpGet:path: /healthzport: 8080httpHeaders:- name: X-Custom-Headervalue: AwesomeinitialDelaySeconds: 3periodSeconds: 10
就緒探針(Readiness Probes)
目標:判斷容器是否準備好接收流量
目的:避免將流浪發送到尚未準備好的Pod上,知道它完全啟動并可以處理請求。
使用場景:剛初始化化服務,比如數據庫連接池、緩存預熱等。在寫在服務真正準備好之前,不應該接收任何實際流量。
配置:
readinessProbe:exec:command:- cat- /tmp/healthyinitialDelaySeconds: 5periodSeconds: 10
啟動探針(Startup Probes)
目標:用于確認容器中的應用以及啟動完畢。
目的:對于啟動時間較長的應用,提供一個額外的寬限期,在此期間不會執行存活或就緒檢查,以允許應用完成其初始化過程。
使用場景:是為了解決某些服務在啟動階段需要更多時間的問題,如大型應用部署或復雜的數據加載任務。
配置:
startupProbe:tcpSocket:port: 9999failureThreshold: 30periodSeconds: 10
httpGet、exec 和 tcpSocket 分別代表了三種不同的檢查方法。initalDelaySeconds指定了首次健康檢查前等待的時間;periodSeconds 是健康檢查的頻率;其他參數則更具業務需求鏡像調整。請注意,所有時間單位均為秒