基础资源操作
命令 | 语法 | 解析 | 示例 |
---|---|---|---|
获取资源 | kubectl get <资源类型> | 列出集群资源信息 ● -o wide :显示详细信息● -A :所有命名空间 | kubectl get pods kubectl get nodes -o wide kubectl get svc -n kube-system |
资源详情 | kubectl describe <资源类型>/<名称> | 显示资源完整配置 ● 包含事件、状态、IP等关键信息 | kubectl describe pod/nginx kubectl describe node/node01 |
创建资源 | kubectl create -f <文件> | 通过YAML/JSON创建资源 ● 支持标准输入( -f - ) | kubectl create -f deploy.yaml cat pod.json | kubectl create -f - |
删除资源 | kubectl delete -f <文件> kubectl delete <资源类型> <名称> | 删除指定资源 ● -l :按标签删除● --all :删除所有 | kubectl delete pod nginx kubectl delete -l app=nginx |
部署管理
命令 | 语法 | 解析 | 示例 |
---|---|---|---|
暴露服务 | kubectl expose <资源类型>/<名称> --port=<端口> --type=<类型> | 创建Service暴露应用 ● 类型:ClusterIP/NodePort/LoadBalancer | kubectl expose deploy/nginx --port=80 --type=NodePort |
扩缩容 | kubectl scale --replicas=<数量> <资源类型>/<名称> | 调整副本数量 ● --current-replicas :当前副本数验证 | kubectl scale --replicas=5 deploy/nginx |
自动伸缩 | kubectl autoscale <资源类型>/<名称> --min=<最小值> --max=<最大值> --cpu-percent=<百分比> | 基于CPU使用率自动扩缩 ● 需安装metrics-server | kubectl autoscale deploy/nginx --min=2 --max=10 --cpu-percent=80 |
滚动更新 | kubectl rollout <子命令> deploy/<名称> | 部署版本管理 ● history :查看历史● undo :回滚版本● status :查看状态 | kubectl rollout undo deploy/nginx kubectl rollout history deploy/nginx |
容器操作
命令 | 语法 | 解析 | 示例 |
---|---|---|---|
进入容器 | kubectl exec -it <pod名称> -- <命令> | 在容器内执行命令 ● -c :指定容器● -- :分隔kubectl与容器命令 | kubectl exec -it nginx -- bash kubectl exec nginx -c sidecar -- ls / |
查看日志 | kubectl logs <pod名称> | 查看容器日志 ● -f :实时跟踪● --tail=100 :最后100行● --since=1h :最近1小时日志 | kubectl logs -f nginx kubectl logs nginx --since=30m |
文件传输 | kubectl cp <pod名称>:<容器路径> <本地路径> kubectl cp <本地路径> <pod名称>:<容器路径> | 容器与主机文件互传 | kubectl cp nginx:/etc/nginx.conf ./ kubectl cp config.ini nginx:/app/ |
配置管理
命令 | 语法 | 解析 | 示例 |
---|---|---|---|
声明式更新 | kubectl apply -f <文件> | 应用配置变更 ● 自动计算差异并更新 | kubectl apply -f updated-config.yaml |
编辑配置 | kubectl edit <资源类型>/<名称> | 直接编辑资源配置 ● 保存后自动生效 | kubectl edit deploy/nginx |
打标签 | kubectl label <资源类型>/<名称> <键>=<值> | 添加/更新标签 ● --overwrite :强制覆盖● <键>- :删除标签 | kubectl label pods nginx env=prod kubectl label node node01 disk- |
添加注释 | kubectl annotate <资源类型>/<名称> <键>=<值> | 添加注释信息 ● 常用于记录变更原因 | kubectl annotate deploy/nginx release="v2.3" |
集群管理
命令 | 语法 | 解析 | 示例 |
---|---|---|---|
资源监控 | kubectl top nodes kubectl top pods | 查看资源使用率 ● 需安装metrics-server | kubectl top nodes kubectl top pods -A |
节点维护 | kubectl cordon <节点> kubectl drain <节点> kubectl uncordon <节点> | 节点维护三部曲: 1. 标记不可调度 2. 安全驱逐Pod 3. 恢复调度 | kubectl cordon node02 kubectl drain node02 --ignore-daemonsets kubectl uncordon node02 |
设置污点 | kubectl taint nodes <节点> <键>=<值>:<效果> | 节点调度限制 ● 效果:NoSchedule/PreferNoSchedule/NoExecute | kubectl taint nodes gpu-node gpu=true:NoSchedule |
诊断调试
命令 | 语法 | 解析 | 示例 |
---|---|---|---|
端口转发 | kubectl port-forward <pod名称> <本地端口>:<容器端口> | 将本地端口映射到Pod ● 无需Service直接访问 | kubectl port-forward nginx 8080:80 |
API代理 | kubectl proxy | 创建API服务器代理 ● 默认端口8001 | kubectl proxy & curl http://localhost:8001/api/v1/pods |
权限验证 | kubectl auth can-i <操作> <资源> | 检查当前用户权限 | kubectl auth can-i delete pods kubectl auth can-i create deployments |
高级操作
命令 | 语法 | 解析 | 示例 |
---|---|---|---|
配置热更新 | kubectl patch <资源类型>/<名称> -p '{"<字段>":<值>}' | 局部更新资源配置 | kubectl patch deploy/nginx -p '{"spec":{"replicas":3}}' |
配置转换 | kubectl convert -f <文件> -o <格式> | 配置格式转换 ● 支持不同API版本 | kubectl convert -f old.yaml -o yaml |
资源替换 | kubectl replace -f <文件> | 强制替换资源 ● --force :先删除后重建 | kubectl replace --force -f new-deploy.yaml |
实用工具
命令 | 语法 | 解析 | 示例 |
---|---|---|---|
上下文管理 | kubectl config use-context <上下文> kubectl config current-context | 切换集群上下文 ● 多集群管理核心命令 | kubectl config use-context prod-cluster |
版本信息 | kubectl version | 查看客户端/服务端版本 ● --short :简洁输出 | kubectl version --short |
API版本 | kubectl api-versions | 列出支持的API版本 | kubectl api-versions |
命令补全 | source <(kubectl completion bash) | 启用命令自动补全 ● 支持bash/zsh | echo 'source <(kubectl completion bash)' >> ~/.bashrc |
使用技巧速查
-
安全操作预览:
kubectl apply -f change.yaml --dry-run=client # 测试配置不实际执行 kubectl diff -f change.yaml # 显示具体变更内容
-
复杂筛选:
# 联合筛选示例 kubectl get pods -l 'env in (prod,staging),app=nginx' kubectl get pods --field-selector=status.phase=Running
-
批量操作:
# 跨命名空间重启Deployment kubectl rollout restart deploy -n namespace1 kubectl rollout restart deploy -n namespace2
注意事项:
- 生产环境操作前务必使用
--dry-run
验证- 删除操作建议先
kubectl get
确认资源名称- 节点维护时
drain
需配合--ignore-daemonsets