k8s常用命令


1. 獲取信息

# 查看k8s健康狀態
kubectl get cs

# 獲取所有命名空間
kubectl get ns

# k8s獲取節點信息
kubectl get nodes

# 列出服務
kubectl get services
kubectl get svc

# 列出replicationcontrollers
kubectl get replicationcontrollers
kubectl get rc

# 列出ReplicaSet
kubectl get rs

# 列出Deployment
kubectl get deploy

# 列出DaemonSet
kubectl get ds

# 列出ingress
kubectl get ingresses

# 列出job
kubectl get jobs

# 獲取replicationController詳細信息
# kubectl describe rc rc名
kubectl describe rc kubia

# 獲取ReplicaSet詳細信息
# kubectl describe rs ReplicaSet名
kubectl describe rs kubia

# 獲取節點更多信息
# kubectl describe node 節點名
kubectl describe node node1

# 獲取pod詳細信息
# kubectl describe pod pod名稱
kubectl describe pod kubia-manual

# 查看現有pod的yaml描述文件
# kubectl get pod pod名稱 -o yaml
kubectl get pod kubia-manual -o yaml

# 查看現有pod的json描述文件
# kubectl get pod pod名稱 -o json
kubectl get pod kubia-manual -o json

# 獲取pod日志
# kubectl logs pod名稱
kubectl logs kubia-manual

# 獲取崩潰容器的應用日志
# kubectl logs pod名稱 --previous
kubectl logs mypod --previous

# 獲取多容器pod的日志時指定容器名稱
# kubectl logs pod名稱 -c 容器名
kubectl logs kubia-manual -c kubia

# 列出pod
kubectl get pods

# 列出包含已完成的pod
kubectl get pods -A
kubectl get pods --show-all

# 獲取指定命名空間的pod
# kubectl get pods --namespace 命名空間名
kubectl get pods --namespace kube-system
kubectl get pods -n kube-system

# 列出pod時顯示pod IP和pod的節點
kubectl get pods -o wide

# 列出pod時顯示標簽
kubectl get pods --show-labels

# 列出工作節點時顯示標簽
kubectl get nodes --show-labels

# 列出pod時顯示選擇的標簽
# kubectl get pods -L 標簽1,標簽2
kubectl get pods -L creation_method,env

# 根據標簽選擇器列出pod子集
# kubectl get pods -l  標簽鍵=標簽值
kubectl get pods -l  env=debug,app=pc

# 根據標簽選擇工作節點
# kubectl get nodes -l 標簽鍵=標簽值
kubectl get nodes -l cpu=fastest

# 列出包含env標簽的所有pod
kubectl get pods -l env

# 列出不包含env標簽的所有pod
kubectl get pods -l '!env'

# 列出標簽env其值是debug或pro的pods
kubectl get pods -l "env in (debug,prod)"

# 列出標簽env其值不是debug或pro的pods
kubectl get pods -l "env notin (debug,prod)"

# 獲取deployment的更新歷史
# kubectl rollout history deployment deployment名
kubectl rollout history deployment myapp-deploy

# 在運行的容器中遠程執行命令(--表示k8s命令結束)
kubectl exec kubia(容器名) -- curl -s http://www.baidu.com

# 查看容器中的變量
kubectl exec kubia(容器名) env

# 在pod中運行shell
kubectl exec -it kubia(容器名) bash

# 獲取服務的endpoint(服務的ip地址和端口號列表)
kubectl get endpoints kubia(服務名)

2. 創建操作

# 使用yaml文件創建pod,ReplicationController,ReplicaSet
# kubectl create -f yaml文件
kubectl create -f kubia-manual.yaml

# 使用yaml文件創建pod,ReplicationController,ReplicaSet,指定命名空間
# kubectl create -f yaml文件 -n 自定義命名空間名
kubectl create -f kubia-manual.yaml -n custom-namespace

# 創建自定義命名空間
# kubectl create namespace 自定義命名空間名
kubectl create namespace custom-namespace

# 暴露一個service
# kubectl expose deployment deploy名 --port=暴露端口號
kubectl expose deployment redis --port=6379

3. 修改相關操作

# 給現有pod追加標簽
# kubectl label pod pod名 標簽鍵=標簽值
kubectl label pod kubia-manual creation_method=manual

# 覆蓋現有pod的標簽
# kubectl label pod pod名 標簽鍵=標簽值 --overwrite
kubectl label pod kubia-manual-v2 env=debug --overwrite

# 給工作節點設置標簽
# kubectl label node 工作節點名 標簽key=標簽value
kubectl label node node1 cpu=fast

# 給工作節點覆蓋標簽
# kubectl label node 工作節點名 標簽key=標簽value --overwrite
kubectl label node node1 cpu=fastest --overwrite

# 編輯replicationController(原有的pod不會發生變化,新創建的pod會變化)
# kubectl edit rc rc名
kubectl edit rc kubia

# 水平設置replicationcontrollers的副本數
# kubectl scale rc rc名 --replicas=5
kubectl scale rc kubia --replicas=5

# 給namespace打標簽
kubectl label namespace bookinfo-application istio-injection=enabled



4. 刪除操作

# 刪除pod
# kubectl delete -f yaml配置文件
kubectl delete -f pod-demo.yaml

# 刪除pod
# kubectl delete pod pod名
kubectl delete pod kubia-manual

# 刪除當前命名空間下的所有pod
kubectl delete pod --all

# 根據標簽刪除pod
# kubectl delete pod -l 標簽key=標簽value
kubectl delete pod -l env=debug

# 通過刪除命名空間刪除相關的pod
# kubectl delete ns 命名空間名
kubectl delete ns custom-namespace

# 刪除命名空間下的所有資源
kubectl delete all --all

# 刪除replicationController(會刪除rc包含的Pod)
# kubectl delete rc rc名
kubectl delete rc kubia

# 刪除replicationSet(會刪除rs包含的Pod)
# kubectl delete rs rs名
kubectl delete rs kubia

# 僅刪除replicationController(不會刪除rc包含的Pod)
# kubectl delete rc rc名 --cascade=false
kubectl delete rc kubia --cascade=false

# 刪除replicationSet(不會刪除rs包含的Pod)
# kubectl delete rs rs名 --cascade=false
kubectl delete rs kubia --cascade=false

5. Deployment更新流程

#修改yaml配置文件,實現對rs,rc,pod,deployment的修改
# kubectl apply -f 配置文件名
kubectl apply -f kubia.yaml

# 1. 修改deployment的鏡像
# kubectl set image deployment deploy名 容器名=鏡像版本
kubectl set image deployment myapp-deploy myapp=ikubernetes/myapp:v3

# 2. 暫停deployment操作
# kubectl rollout pause deployment deploy名
kubectl rollout pause deployment myapp-deploy

# 修改deployment中pod的一個鏡像,暫停deployment操作
kubectl set image deployment myapp-deploy myapp=ikubernetes/myapp:v3 && kubectl rollout pause deployment myapp-deploy

# 3. 監視deploy的更新過程
# kubectl rollout status deployment deploy名
kubectl rollout status deployment myapp-deploy

# 4. 在觀察deployment更新完的一個沒有問題的情況下,繼續deployment的更新
# kubectl rollout resume deployment deploy名
kubectl rollout resume deployment myapp-deploy

# 5. 查看當前更新完的deployment的rs多個版本,並查看當前處於哪個版本
kubectl get rs -o wide

# 5.5 查看deployment的歷史版本
# kubectl rollout history deployment deploy名
kubectl rollout history deployment myapp-deploy

# 6. 當發現鏡像有問題可以回滾版本到上一個版本
# kubectl rollout undo deployment/deploy名
kubectl rollout undo deployment/myapp-deploy

# 6. 當發現鏡像有問題可以回滾版本,回滾到指定版本(用5.5查看需要回滾的版本號)
#  kubectl rollout undo deployment/deploy名 --to-revision=版本號
kubectl rollout undo deployment/myapp-deploy --to-revision=3


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM