通過kubectl命令可以操作和管理K8S資源,對于初學者可以在掌握K8S基礎命令的基礎上再去學習K8s的原理和架構(gòu),那么K8S常用的命令有哪些呢?
01
K8S命令概述
在學習K8s基礎命令前,了解和學習docker命令是很有必要的,kubectl和docker很多命令都有相通之處
docker ps #查看所有up狀態(tài)容器
docker ps -a#查看所有狀態(tài)的容器
docker inspect containerid#查看容器詳情
docker images #查看容器鏡像
docker start/stop/restart containerid #啟動/停止/重啟容器
docker exec -it containerid bash #進入容器
docker exec containerid bash -c 'uptime' #容器外執(zhí)行命令
docker rmi imageid #刪除鏡像
docker rm containerid #刪除容器
- K8S常用命令
02
K8S集群資源操作
- 集群資源查看
kubectl get cs #集群健康情況
kubectl version #K8S集群版本查看
kubectl get node #查看集群節(jié)點
kubectl get pods -o wide -A #查看所有命命空間pod
-n #后跟指定命名空間
--all-namespaces #等同于-A
kubect get deployments -A
kubectl get svc,ep -A #查看svc和endpoints
- 標簽查看
kubectl get pod --show-labels #查看pod標簽
kubectl get node --show-labels #查看node標簽
- 資源配置查看
查看配置
kubectl get deployments.apps nginxtest-xxx -oyaml #查看deployment資源
kubectl get pods nginxtest-xxx -oyaml #查看pod資源配置
- 資源限制
查看是否有資源限制
kubectl describe node 192.168.1.2
capacity代表減去系統(tǒng)預留的資源總量
Allocatable可分配給K8S資源的總量
pod資源限制,防止單個服務占用資源過高影響其他pod,達到limits數(shù)值后會oom重啟
kubectl get pods nginx-test -oyaml | grep -A 6 resources
resources:
limits:
cpu: "5"
memory: 5000Mi
requests:
cpu: 55m
memory: 100Mikubectl --help 多用help
03
K8S運維場景
- 副本擴容
通過副本擴容實現(xiàn)流量分攤,避免單個節(jié)點負載過高,建議資源中增加反親和性,達到不同副本調(diào)度到不同node
kubectl scale deployment nginx-test --replicas=2 #副本擴容
kubectl edit deployment nginx-test #直接編輯修改spec.replicas標簽擴容
- 進入pod
kubectl exec -it podname bash #或者sh
-n 指定名字空間
kubectl exec nginx-965048598-jt28d -n test uptime #不進入容器,只獲取命令輸出
- pod刪除操作
kubectl delete pods nginx-test-6fc6d8666b-mhl48 #常規(guī)刪除
kubectl delete pod -l app=test #基于標簽刪除,批量操作效率高
kubectl delete pods nginx-test -n dev --grace-period=0 --force #強制刪除,沒有terminationGracePeriodSeconds 30s的時間
還可以通過kubectl scale命令將副本縮為0的方式刪除pod
- pod污點
對于設置了污點的服務,普通pod無法調(diào)用到此節(jié)點,只有增加了Tolerations容忍配置才可以
[root@wpseco-node-1 log]# kubectl describe node 192.168.0.1 | grep Taints
Taints: <none>
kubectl taint node 192.168.0.1 test-access-node=:NoSchedule --overwrite=true #污點添加
kubectl taint node 192.168.0.1 test-access-node:NoSchedule- #污點刪除
其中[effect] 可取值:
NoSchedule :一定不能被調(diào)度(新來的不要來,在這的就別動了)
PreferNoSchedule:盡量不要調(diào)度(盡量不要來,除非沒辦法)
NoExecute:不僅不會調(diào)度,還會驅(qū)逐Node上已有的Pod
- pod文件拷貝
kubectl cp my_item.tar.gz redis-6c98cb5b5f-nxb59:/tmp/ #宿主機拷貝到容器內(nèi)
kubectl cp redis-6c98cb5b5f-nxb59:/tmp/start.sh ./start.sh #pod內(nèi)文件拷貝到宿主機
- 靜態(tài)pod
靜態(tài)pod 是由 kubelet 管理的,只在特定node上存在的pod;靜態(tài)pod總是由kubelet創(chuàng)建的,并且只在kubelet所在的Node上運行。靜態(tài)pod 不能通過 api-server來管理,無法和 RC,RS,Deployment或者 DaemonSet進行關(guān)聯(lián);并且 kubelet無法對靜態(tài)pod 進行健康檢查
靜態(tài)pod資源文件默認存放路徑/etc/kubernetes/manifests,也可以直接查看kubelet啟動參數(shù)staticPodPath: /etc/kubernetes/manifests配置確定
kubectl exec -it kafka-1-192.168.0.1 -c kafka sh #進入靜態(tài)pod
-c #po有多個容器要加-c指定
kubectl logs kafka-1-192.168.0.1 -c kafka
04
K8S問題定位
處理K8S環(huán)境問題,首先要了解pod的生命周期和pod的狀態(tài)
常見狀態(tài)原因文章來源:http://www.zghlxwxcb.cn/news/detail-562598.html
- ImagePullBackOff?鏡像拉取失敗,網(wǎng)絡不通,鏡像名稱有誤或者鏡像倉庫認證失敗都可能有這個報錯
- CrashLoopBackOff?探針檢測失敗,服務對網(wǎng)絡或者其他pod服務有依賴等,此外宿主機上的安全軟件可能也會導致容器無法正常啟動
- Pending?一般是調(diào)度失敗,pod沒有可調(diào)度的節(jié)點,常見原因:節(jié)點有污點,不滿足節(jié)點親和性,或者節(jié)點處于notready狀態(tài)
- Evicted?當節(jié)點內(nèi)存、磁盤或者cpu資源不足時,K8s 會按照 QoS 等級對節(jié)點上的某些 Pod 進行驅(qū)逐,釋放資源保證節(jié)點可用性,kubelet可以配置內(nèi)存,cpu和磁盤的驅(qū)逐閾值
- Terminating?pod刪除后超過terminationGracePeriodSeconds參數(shù)時間還處于Terminating狀態(tài)可能是存在節(jié)點故障,和master節(jié)點失聯(lián),可以檢查節(jié)點狀態(tài)或者嘗試重啟kubelet
- Completed?此狀態(tài)通常是job類的pod執(zhí)行完成了正常退出容器
- Init:Error?pod初始化失敗,可以查看init pod的日志定位
問題定位經(jīng)常需要使用如下命令文章來源地址http://www.zghlxwxcb.cn/news/detail-562598.html
kubectl logs -f podname
kubectl logs -f -l app=nginx-test #多副本情況下,可以看到所有pod日志
kubectl describe pods podname #pod啟動日志
kubectl describe node 192.168.0.1 #節(jié)點狀態(tài)日志
kubectl get events #查看集群事件
系統(tǒng)服務查看
systemctl status kubelet/docker/etcd
系統(tǒng)服務日志查看
journalctl -xeu kubelet/docker
--since指定時間
到了這里,關(guān)于k8s 基礎命令和常用命令等的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!