本文記錄k8s實踐時使用的命令。
強烈建議安裝命令補齊,可以查詢到各種命令名稱、資源名稱,減少操作。
預設空間有 default 和 kube-system。
似乎很多獲取資訊類的命令都可加-o json
或-o wide
或-o yaml
。等繼續驗證。
多副本一般平均分配,如2節點,2個rc,各乙個,但通過擴容、縮容後,可能會2個rc跑1個節點,如果刪除1個rc,重新啟動的rc,會分配另一節點,始終還是平均。此為不做配置情況下的結論。
yaml 檔案中的冒號:
後需乙個空格,否則語法錯誤。
記錄在實踐中的一些疑問。
如果pod過多,如何過濾?即指定某乙個型別或關鍵字,暫時不考慮命令空間。
只在master主機,如何檢視從主機上的映象?可能從主機存在多個映象版本,要查詢。
不同的k8s版本,apiversion與相應的資源怎麼對應起來?
exec 時,執行busybox容器的cd命令出錯,但如ls、date等正常,不知何故。
執行如下命令安裝 bash-completion:
# apt install bash-completion
source /usr/share/bash-completion/bash_completion
source <(kubectl completion bash)
注:實踐發現,經常性出現不能補齊的情況,於執行source的2條命令即可。
示例:
# kubectl get n // 輸入n,按2次tab鍵,輸出:
namespaces nodes
networkpolicies.networking.k8s.io
kubectl 命令可匹配一些縮寫,如獲取節點命令,如下均等效:
kubectl get no
kubectl get node
kubectl get nodes
可通過get輸出yaml格式,新增--export
,重定向到檔案中,再修改。此可得乙個yaml模板。
# kubectl get pod mysql-ds-m4rh8 -o yaml --export
檢視集群資訊:
# kubectl cluster-info
檢視元件狀態:
kubectl get componentstatuses
重啟pod或重新建立,可刪除配置檔案,再建立,也可直接刪除出錯的pod,k8s會自動重建。(適用於deployment、ds、rs等)
初始化集群:
kubeadm init
加入集群:
kubeadm join 《伺服器ip埠》 --token --discovery-token-ca-cert-hash 檢視加入集群命令:
kubeadm token create --print-join-command
刪除 pod:
kubectl delete pod 直接用kubectl delte pod *** 無法真正刪除pod,要刪除deployment,先檢視:
kubectl get deployment
再刪除:
kubectl delete deployment ***
如果資源由yaml建立,執行kubectl delete -f
可刪除。如果不是,則要指定資源物件,如pod、rc、pvc,等等。可以直接用--all
刪除所有的資源。
強制刪除pod:
kubectl delete pod get可針對不同資源物件獲取不同的資訊。其形式:
kubectl get 《物件名》 《資源名》 《選項》
選項有:
--show-labels: 顯示標籤(較多資源時,用於過濾)
--all-namespaces: 所有命名空間,也可用--all-namespaces=true,簡寫為-a
-n kube-system: 指定kube-system命名空間
-o wide -o yaml -o json:以不同格式輸出,也可寫為 -owide -oyam -ojson
檢視節點狀態:
kubectl get nodes
顯示node節點的標籤資訊
kubectl get node --show-labels
檢視pod列表
kubectl get pod
顯示pod節點的標籤資訊
kubectl get pod --show-labels
根據指定標籤匹配到具體的pod
檢視服務的詳細資訊,顯示了服務名稱,型別,集群ip,埠,時間等資訊
kubectl get svc
獲取所有資源資訊:
kubectl get all
檢視命名空間
kubectl get ns
檢視所有pod所屬的命名空間
kubectl get pod --all-namespaces
檢視所有pod所屬的命名空間並且檢視都在哪些節點上執行
kubectl get pod --all-namespaces -o wide
檢視指定命名空間的 pod:
# kubectl get pods -n kube-system
檢視某個pod日誌:
kubectl describe pod ***
kubectl exec mypod date # 預設第乙個容器(如果有多個的話)
kubectl exec mypod -c ruby-container date # 指定pod,指定容器
kubectl exec mypod -i -t -- ls -t /usr
如果使用run,需要指定映象,如:
新執行並進入busybox容器,退出後刪除
kubectl run -it --image latelee/busybox dns-test --restart=never --rm /bin/sh
kubectl edit cm coredns -n kube-system
# 獲取節點的標籤
kubectl get nodes --show-labels
# 新增節點的標籤
kubectl label nodes edge-node ntype=hello
# 刪除節點的標籤
kubectl label nodes edge-node ntype-
k8s最佳實踐
通過下面兩種方式可以減小構建映象大小 small base images 有些base映象有非常齊全的工具鏈,考慮考慮是否需要這些工具鏈,還是只需要精簡映象版映象並補充所需的工具 builder pattern 對於一些go c語言專案,使用docker提供的builder pattern,先構建乙...
k8s 命令 重啟 k8s基本命令
kubernetes 常用命令 通過yaml檔案建立 kubectl create f yaml 不建議使用,無法更新,必須先delete 通過yaml檔案刪除 kubectl delete f yaml 檢視kube system namespace下面的pod svc deployment 等等...
k8s常用命令常用k8s命令
獲取列出乙個或多個資源的資訊。列出所有執行的pod資訊。列出pod以及執行pod節點資訊。以json格式輸出乙個pod資訊。列出所有replication controllers和service資訊。列出所有不同的資源物件。獲取列出乙個或多個資源的資訊。列出所有執行的pod資訊。列出pod以及執行p...