1. 程式人生 > >Kubernetes kubectl常用命令

Kubernetes kubectl常用命令

Kubernetes kubectl常用命令

[TOC]

1. 檢視資源物件

常用檢視資源物件(%rc%)有namespace(ns) pods service(svc) endpoints(ep) deployment(deploy) pvc ingresses(ing),括號內為最簡寫法。
kubectl get %rc%
顯示更多資訊,在後面接-o wide-ojson或者-o yaml,同時檢視多個資源物件用英文逗號隔開。
檢視資源物件全名,可通過kubectl rc,%rc%

2. 建立資源物件

建立時,注意檔案內是否有namespace,如果沒有,請在命令後面指定-n %namespace-name%


根據yaml配置檔案一次性建立資源物件
kubectl create -f service.yaml -f deployment.yaml
根據%directory%目錄下所有.yaml.yml.json檔案的定義進行建立操作
kubectl create -f %directory%

對資源進行配置,最常用功能。
kubectl apply -f service.yaml
kubectl apply -f %directory%

3. 編輯資源物件

編輯資源物件時,編輯器為vi,需要熟悉vi命令操作。
kubectl edit deploy %deployment-name%

如果平常是使用yaml檔案維護,注意下次修改時的配置。

4. 描述資源物件

顯示service的詳細資訊
kubectl describe svc %service-name%
顯示pod的詳細資訊,其中顯示的pod啟動過程事件可以幫助排錯。
kubectl describe pods/%pod-name%

5. 刪除資源物件

類似create命令用法
基於deployment.yaml定義的名稱刪除deployment
kubectl delete -f deployment.yaml
根據%directory%目錄下所有.yaml.yml.json檔案的定義進行建立刪除
kubectl delete -f %directory%


刪除所有包含某個labelpodservice
kubectl delete pods,svc -l name=%label-name%

6. 執行容器的命令

執行podls命令,預設是用pod中的第一個容器執行
kubectl exec -it %pod-name% -- ls
指定pod中某個容器執行ls命令
kubectl exec %pod-name% -c %container-name% ls
登入容器(容器中命令存在時)
kubectl exec -it %pod-name% /bin/sh
kubectl exec -it %pod-name% /bin/bash

7. 檢視容器日誌

檢視容器的全部日誌。pod中有多個容器時需要指定容器名
kubectl logs %pod-name% [%container-name%]
類似tail -f實時輸出日誌
kubectl logs -f %pod-name%
檢視最近多少時間以來日誌,並實時輸出,適用於日誌較多,執行較久的pod
kubectl logs -f %pod-name% --since 10m

一般配合kubectl describe pods/%pod-name%進行排錯。

8. pod的擴容與縮容

執行擴容縮容pod的操作,支援的資源物件有deployment statefulset daemonset
kubectl scale deploy %deployment-name% --replicas=2

擴容與縮容是相對於當前的replicas數。如果平常是使用yaml檔案維護,注意下次修改時的配置。

9. pod的滾動升級

執行滾動升級操作
kubectl rolling-update %deployment-name% -f deployment.yaml
可以使用kubeclt rolling-update %deployment-name% --image=example:v2.0直接指定映象名稱的方式直接升級。
還可以使用kubectl edit命令達到滾動升級目的。如果平常是使用yaml檔案維護,注意下次修改時的配置。

10. 埠轉發

在叢集節點外面連線叢集,避免大量埠管理,可以作為開發除錯常用功能。當前v1.12版本還未支援tcp keepalived連線,因此連線不活動容易中斷。
kubectl port-forward svc/%service-name% 本機埠:服務埠 …

其它技巧:
https://jimmysong.io/kubernetes-handbook/guide/kubectl-cheatsheet.html