我的k8s隨筆 命令實踐

2021-10-01 19:57:09 字數 3502 閱讀 9263

本文記錄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...