Overview
kubectl is the command-line tool for Kubernetes, used to interact with the cluster. This skill covers the most commonly used commands in daily operations.
Cluster Information
# 集群信息
kubectl cluster-info
kubectl version
# 节点信息
kubectl get nodes
kubectl describe node <node-name>
Context Switching
kubectl config get-contexts kubectl config use-context
## 资源查看
### 常用资源
```bash
# Pod
kubectl get pods
kubectl get pods -o wide
kubectl get pods -A # 所有命名空间
# Deployment
kubectl get deployments
kubectl get deploy -o yaml
# Service
kubectl get services
kubectl get svc
# 所有资源
kubectl get all
kubectl get all -n <namespace>
Output Formats
kubectl get pods -o wide # 详细信息
kubectl get pods -o yaml # YAML 格式
kubectl get pods -o json # JSON 格式
kubectl get pods -o jsonpath='{.items[*].metadata.name}'
Resource Operations
Create and Delete
# 从文件创建
kubectl apply -f manifest.yaml
kubectl create -f manifest.yaml
# 删除资源
kubectl delete -f manifest.yaml
kubectl delete pod <pod-name>
kubectl delete pod <pod-name> --force --grace-period=0
Edit and Update
# 编辑资源
kubectl edit deployment <name>
# 打补丁
kubectl patch deployment <name> -p '{"spec":{"replicas":3}}'
# 扩缩容
kubectl scale deployment <name> --replicas=5
Pod Debugging
# 查看日志
kubectl logs <pod-name>
kubectl logs <pod-name> -c <container>
kubectl logs <pod-name> -f # 实时跟踪
kubectl logs <pod-name> --previous # 上一个容器
# 进入容器
kubectl exec -it <pod-name> -- /bin/bash
kubectl exec -it <pod-name> -c <container> -- sh
# 端口转发
kubectl port-forward <pod-name> 8080:80
kubectl port-forward svc/<service> 8080:80
Common Scenarios
Scenario 1: Quickly Troubleshoot Pod Issues
# 1. 查看 Pod 状态
kubectl get pod <name> -o wide
# 2. 查看事件
kubectl describe pod <name> | grep -A 20 Events
# 3. 查看日志
kubectl logs <name> --tail=100
Scenario 2: Rolling Update
# 更新镜像
kubectl set image deployment/<name> container=image:tag
# 查看更新状态
kubectl rollout status deployment/<name>
# 回滚
kubectl rollout undo deployment/<name>
kubectl rollout history deployment/<name>
Shortcut Aliases
# 推荐添加到 ~/.bashrc 或 ~/.zshrc
alias k='kubectl'
alias kgp='kubectl get pods'
alias kgs='kubectl get svc'
alias kgd='kubectl get deploy'
alias kd='kubectl describe'
alias kl='kubectl logs'
alias ke='kubectl exec -it'
Troubleshooting
| Status | Possible Cause | Troubleshooting Command |
|---|---|---|
| Pending | Insufficient resources/scheduling issue | kubectl describe pod |
| CrashLoopBackOff | Application crash | kubectl logs --previous |
| ImagePullBackOff | Image pull failure | kubectl describe pod |
| OOMKilled | Memory limit exceeded | Check resources.limits |