常用的kubectl命令

2022-07-08 02:24:06 字數 2595 閱讀 7285

本文主要介紹kubernetes排查問題時經常用到的命令。這裡主要借助kubectl命令來實現。以下列出常用命令,後面會對每個命令進行詳細解釋,並舉例:

get獲取列出乙個或多個資源的資訊。(資源分為pod、instance、service等很多種)

describe輸出指定的乙個/多個資源的詳細資訊。(一般describe狀態有問題節點,如pending等)

logs輸出pod中乙個容器的日誌。(如果pod只包含乙個容器則可以省略容器名)

edit

編輯伺服器上定義的資源。(檔案預設輸出格式為yaml。要以json格式編輯,請指定「-o json」選項。)

rolling-update執行指定replicationcontroller的滾動更新。(不中斷業務的更新方式)

delete刪除乙個資源(可以是pod、instance等)

exec在容器內部執行命令

一、get

獲取所有namespace:

kubectl get ns
在指定的namespace下獲取資源:

kubectl -n  get pods
以yaml格式輸出資源:

kubectl -n  -o yaml
通用格式:

kubectl get  --all-namespaces
常用的資源型別()有:

-o支援的格式有

二、describe 

描述乙個資源:

kubectl -n  describe
三、logs

檢視日誌,--tail指定只看最後1000行:

kubectl -n  logs --tail=1000  | less
通過配置檔名建立乙個集群資源物件。

六、edit

kubectl -n  edit   -o yaml
七、rolling-update

執行指定replicationcontroller的滾動更新。該命令會建立乙個新的rc,等新pod完全起來後刪除乙個舊的pod,之後重複操作,直到替換掉所有的pod。

kubectl rolling-update  -f
八、delete

指定資源型別和名字刪除乙個資源:

kubectl -n  delete
批量刪除資源:

kubectl -n  delete  -l =
九、exec

exec主要作用是在容器內部執行命令(一般為檢視容器內部日誌),這裡以乙個小例子說明kubectl exec命令的作用。

場景描述:當我們用命令列,以root使用者身份登入機器,要修改hdfs某個目錄許可權。

此情況一般是不允許的,因為在hdfs中,最高許可權並不是root使用者,而是hdfs使用者,這個時候如果更改,會提示許可權不足。如下我們以root使用者登入機器,想修改hdfs的/tmp/jbw目錄許可權為777,發現此目錄並不屬於root組,沒許可權修改。

檢視/tmp/jbw目錄,發現其屬於hdfs組的hadoop使用者。

嘗試著用hdfs使用者去執行命令,發現本機上並沒有hdfs使用者,因為真正的hdfs使用者只存在於真實部署hdfs的容器內部。

但我們如果非要想改其許可權應該怎麼辦呢?那就用kubectl的exec命令,進入hdfs的任意乙個namenode容器內部去更改就好(前提是以容器化方式部署hdfs)。

1、獲取namenode的pod

kubectl get pods | grep namenode
結果如圖所示:

2、任選乙個pod進入(利用kubectl exec命令)

kubectl exec -it hadoop-hdfs-namenode-hdfs1-765788744-21mft bash
如下已經進入所選pod: 

若看到~,表示進入成功(因為當前目錄有所變化,若是在不放心df -h看一下檔案系統是否有變化也可)。

如果進入部署hdfs的容器pod內部(這裡是進入了部署namenode的乙個pod,理論上datenode也可以),這些pod裡當然就有hdfs使用者了,接下來以hdfs使用者執行相應修改目錄許可權命令即可。

sudo -u hdfs hadoop fs -chmod 777 /tmp/jbw
下圖即執行修改目錄許可權命令結果:

exit退出當前pod,再檢視一下hdfs上的/tmp/jbw目錄,就會發現,許可權已修改!如下圖所示:

常用kubectl命令總結

顯示pod的更多資訊 kubectl get pod o wide以yaml格式顯示pod的詳細資訊 kubectl get pod o yaml建立資源物件 根據yaml配置檔案一次性建立service和rc kubectl create f my service.yaml f my rc.yam...

常用kubectl命令總結

我們需要確認的是在rc配置檔案中定義的replicas數量,當我們執行上述命令的結果大於replicas的數量時,則我們執行的命令相當於擴容操作,反之相反,可以理解為我們填寫的數量是我們需要的pod數量。需要注意的是,當我們需要進行永久性擴容時,不要忘記修改rc配置檔案中的replicas數量。需要...

kubectl常用命令

檢視所有namespace kubectl get namespace 檢視預設的配置 kubectl config view 獲取集群裡的各種資源資訊,某些資源未指定namespace時,預設指定default 常見用法 kubectl get pods rc svc deployment nam...