常用命令
部署
# 应用 manifest 去部署或修改资源
kubectl apply -f [manifest.yaml]
# 使用文本编辑器在线编辑 manifests
kubectl edit [resource_type] [resource_name/id] # Edit the manifest of a resource using a text editor
查看状态
# 通用查询命令
kubectl get [resource_type]
# Deployments
kubectl get deployments # 查询所有运行 Deployments
kubectl get deployment [deployment-name] # 查询指定的 Deployment
# Services
kubectl get services # 查询当前 Namespace 下所有 Service
kubectl get services --sort-by=.metadata.name # 按照 name 排序
kubectl get services --namespace [namespace] # 查询指定 Namespace 下所有 Service
# PVCs
kubectl get pvc # 查询当前 Namespace 下所有 PVC
# Pods
kubectl get pods # 查询当前 Namespace 下所有 Pod
kubectl get pods -o wide # 包含更多详细信息
kubectl get pods --namespace [namespace] # 查询指定 Namespace 下所有 Pod
# 查询每个 Pod 申请的 CPU、GPU、内存
# 注意:必须安装 jq 工具
kubectl get pods -o json | jq '.items[] | {name: .metadata.name, cpu: .spec.containers[].resources.requests.cpu, gpu: .spec.containers[].resources.requests."nvidia.com/gpu", memory: .spec.containers[].resources.requests.memory}'
查看详情和日志
# 通用查询详情命令
kubectl describe [resource_type] [resource_name/id]
# Pods
kubectl describe pods # 查询所有 Pod 详情
kubectl describe pod [pod_id] # 查询指定 Pod 详情
kubectl describe pod [pod_id] -o yaml # 以 YAML 格式输出指定 Pod 详情
# Logs
kubectl logs -f [pod_id] # 从头查看指定 Pod 的日志并监听变化
kubectl logs --tail 100 -f [pod_id] # 从最后 100 行查看指定 Pod 的日志并监听变化
删除资源
kubectl delete [resource_type] [resource_name/id]
kubectl delete pod [pod_id] # 删除一个 Pod,Deployment 会创建一个新的
kubectl delete deployment [deployment_name] # 删除 Deployment 不会自动再重新启动
调整 Deployment 的副本数
kubectl scale --replicas=[number] [resource_type]/[resource_name/id]
## 调整 Deployment 的副本数到 [number]
kubectl scale --replicas=[number] deployments/[deployment_name]
交互访问 Pod
kubectl exec -it [pod_id] /bin/bash # 在 Pod 中打开 bash shell