Kubernetes 常用命令
來(lái)源于:http://www.reibang.com/p/48188b4858b0
一衩辟、查看系統(tǒng)資源信息
- 獲取集群組件地址忙芒,展示集群信息
kubectl cluster-info
- 顯示控制平面組件的健康狀態(tài)
kubectl get componentstatus
- 展示支持的API resources
kubectl api-resources
- 查看支持的API versions
kubectl api-versions
二、命令優(yōu)化
-
快速切換到不同的名稱(chēng)空間拗慨,可以設(shè)置別名如下
alias kcd='kubectl config set-context $(kubectl config current context) --namespace'
然后值纱,可以使用
kcd some-namespace
在名稱(chēng)空間進(jìn)行切換 創(chuàng)建別名,在
~/.bashrc
或類(lèi)似的文件中添加alias k=kubectl
缤灵,就可以使用短別名了-
kubectl配置tab補(bǔ)全
首先安裝包bashcompletion
來(lái)啟用bash中的tab命令補(bǔ)全apt install bashcompletion source <(kubectl completion bash)
此時(shí)枣抱,tab命令行補(bǔ)全只在使用完整的kubectl命令時(shí)才會(huì)有作用确徙,要讓短命令起到作用,可以進(jìn)行修改
source <(kubectl completion bash | sed s/kubectl/k/g)
同時(shí)蹦误,將
source <(kubectl completion bash | sed s/kubectl/k/g)
添加到~/.bashrc
或類(lèi)似的文件中
三芝薇、資源創(chuàng)建類(lèi)
1. 首次創(chuàng)建
-
使用
kubectl run
快速啟動(dòng)Pod應(yīng)用kubectl run nginx --image=nginx:latest --port=80
-
創(chuàng)建deploymet
kubectl create deployment nginx --image=nginx=nginx:latest
-
暴露服務(wù)
kubectl expose deployment nginx --port=80
-
使用
kubectl explain
查看API對(duì)象字段利诺,在創(chuàng)建manifest時(shí)非常有用kubectl explain pod kubectl explain pod.spec
四. 運(yùn)維管理
1. 升降級(jí)
-
更新image
kubectl set image deployment/nginx nginx=nginx:latest --record=true
確保在所有的升級(jí)操作時(shí)使用了
--record=true
選項(xiàng),這個(gè)選項(xiàng)會(huì)記錄歷史版本號(hào)剩燥, 在之后的操作中非常有用。 -
查看部署狀態(tài)
kubectl rollout status deployment nginx
-
顯示deployment的滾動(dòng)升級(jí)歷史
kubectl rollout history deployment nginx
-
回滾上一個(gè)版本
kubectl rollout undo deployment nginx
-
回滾到指定版本
kubectl rollout undo deployment nginx --to-revision=3
2. 異常調(diào)試
-
查看pod信息立倍,主要關(guān)注
READY
灭红、STATUS
字段kubectl get pod
-
查看pod日志,主要檢查業(yè)務(wù)輸出日志
kubectl logs -f <pod_name> -c <container_name>
-
查看描述信息
kubectl describe pod <pod_name>
-
在運(yùn)行的容器中執(zhí)行啟動(dòng)一個(gè)shell
kubectl exec -it <pod_name> -c <container_name> -- sh
-
通過(guò)端口轉(zhuǎn)發(fā)連接到pod口注,在驗(yàn)證業(yè)務(wù)端口是否正常工作時(shí)非常有用
kubectl port-forward <pod_name> <local_port>:<pod_port>
3. 在多集群或多命名空間下使用kubectl
-
添加或修改一個(gè)集群
kubectl config set-cluster my-other-cluster --server=https://k8s.example.com:6443 --certificate-authority=path/to/the/cafile
這會(huì)添加一個(gè)API服務(wù)器地址位于
https://k8s.example.com:6443
变擒,名為my-other-cluster
的集群。 -
添加或修改用戶憑據(jù)
kubectl config set-credentials foo --username=foo --password=pass
-
若要使用基于token的認(rèn)證方式寝志,可使用如下命令
kubectl config set-credentials foo --token=mysecrettokenXFDJIQ1234
-
將集群和用戶憑據(jù)聯(lián)系到一起
以下命令用于創(chuàng)建新的上下文娇斑,并將集群與創(chuàng)建的用戶聯(lián)系在一起kubectl config set-context some-context --cluster=my-other-cluster --user=foo --namespace=bar
-
獲取當(dāng)前上下文的名稱(chēng)
kubectl config current-context
-
修改指定上下文默認(rèn)的命名空間
kubectl config set-context minikube --namespace=another-namespace
-
切換上下文到my-other-context
kubectl config use-context my-other-context
-
列出kubeconfig文件中定義的所有上下文
kubectl config get-contexts
-
列出kubeconfig文件中定義的集群
kubectl config get-clusters
-
刪除kubeconfig文件中定義的上下文和集群
kubectl config delete-context my-unused-context kubectl config delete-cluster my-old-cluster