本文主要介紹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...