Kubernetes 速查手册

kubectl命令中文参考
集群PodDeploymentServiceConfigMapSecret命名空间调试NodeRBAC

集群管理

集群kubectl cluster-info
查看集群信息
集群kubectl get nodes -o wide
查看所有节点状态
集群kubectl version --short
查看kubectl和集群版本
集群kubectl api-resources --namespaced=true
列出所有API资源类型
集群kubectl api-versions
列出可用API版本
集群kubectl config get-contexts
查看所有集群上下文
集群kubectl config use-context production
切换集群上下文
集群kubectl top nodes
查看节点资源使用
集群kubectl cordon node1
标记节点为不可调度
集群kubectl uncordon node1
取消节点不可调度标记
集群kubectl drain node1 --ignore-daemonsets --delete-emptydir-data
排空节点(驱逐Pod用于维护)

Pod 管理

Podkubectl get pods -o wide
列出所有Pod(含节点和IP信息)
Podkubectl get pods -n kube-system
查看指定命名空间的Pod
Podkubectl describe pod my-pod
查看Pod详细信息(含事件)
调试kubectl logs my-pod -f --tail 100
查看Pod日志(实时跟踪)
调试kubectl logs my-pod -c my-container
查看多容器Pod指定容器的日志
调试kubectl exec -it my-pod -- bash
进入Pod容器Shell
调试kubectl exec my-pod -- ls /app
在Pod中执行命令
Podkubectl delete pod my-pod
删除指定Pod
Podkubectl get pods --field-selector status.phase=Running
按字段过滤Pod
Podkubectl get pods -l app=nginx
按标签过滤Pod
Podkubectl cp my-pod:/app/logs.txt ./logs.txt
从Pod复制文件到本地
调试kubectl port-forward my-pod 8080:80
端口转发到本地
Podkubectl top pod --sort-by=memory
查看Pod资源使用并按内存排序
Podkubectl get pods --field-selector=status.phase!=Running
查看非运行状态的Pod
Deploymentkubectl rollout status deployment/myapp
查看Deployment滚动更新状态
Deploymentkubectl rollout history deployment/myapp
查看Deployment版本历史
Deploymentkubectl rollout undo deployment/myapp --to-revision=2
回滚到指定版本

Deployment 管理

Deploymentkubectl get deploy -o wide
列出所有Deployment
Deploymentkubectl describe deploy myapp
查看Deployment详情
Deploymentkubectl create deploy nginx --image=nginx:latest --replicas=3
快速创建Deployment
Deploymentkubectl scale deploy myapp --replicas=5
调整副本数
Deploymentkubectl set image deploy myapp nginx=nginx:1.25
更新容器镜像
Deploymentkubectl autoscale deploy myapp --min=2 --max=10 --cpu-percent=80
设置自动伸缩
Deploymentkubectl delete deploy myapp
删除Deployment
Deploymentkubectl apply -f deployment.yaml
通过YAML文件创建/更新资源
Deploymentkubectl delete -f deployment.yaml
通过YAML文件删除资源
集群kubectl get events --sort-by='.lastTimestamp'
查看集群事件

Service 与 Ingress

Servicekubectl get svc -o wide
列出所有Service
Servicekubectl describe svc my-svc
查看Service详情
Servicekubectl expose deploy myapp --port=80 --type=LoadBalancer
为Deployment创建Service
Servicekubectl delete svc my-svc
删除Service
Servicekubectl get ingress
列出所有Ingress
Servicekubectl describe ingress my-ingress
查看Ingress详情

ConfigMap & Secret

配置kubectl get configmap
列出所有ConfigMap
配置kubectl create configmap myconfig --from-literal=key1=value1
从字面值创建ConfigMap
配置kubectl create configmap myconfig --from-file=config.txt
从文件创建ConfigMap
配置kubectl get secret
列出所有Secret
配置kubectl create secret generic mysecret --from-literal=password=123456
创建通用Secret
配置kubectl create secret tls my-tls --cert=cert.pem --key=key.pem
创建TLS Secret
配置kubectl get secret mysecret -o jsonpath='{.data.password}' | base64 -d
解码Secret中的值

命名空间

集群kubectl get ns
列出所有命名空间
集群kubectl create ns my-namespace
创建命名空间
集群kubectl delete ns my-namespace
删除命名空间(连同其内所有资源)
集群kubectl config set-context --current --namespace=my-ns
设置当前默认命名空间
集群kubectl get all -n my-ns
查看命名空间下所有资源

调试与故障排查

调试kubectl logs my-pod --previous
查看上一次崩溃容器的日志
调试kubectl debug my-pod -it --image=busybox
创建调试容器附加到Pod
调试kubectl debug node/node1 -it --image=busybox
在Node上启动调试容器
调试kubectl get pod my-pod -o jsonpath='{.status.conditions}'
查看Pod状态条件
调试kubectl proxy --port=8001
启动API代理(可通过localhost访问集群API)
调试kubectl run debug --rm -it --image=busybox -- sh
集群kubectl wait --for=condition=Ready pod/my-pod --timeout=60s
等待资源达到指定条件

Node 管理

集群kubectl describe node node1
查看Node详细信息
集群kubectl label node node1 env=prod
给Node添加标签
集群kubectl taint nodes node1 key=value:NoSchedule
给Node添加污点(禁止调度)
集群kubectl top node node1
查看Node资源使用
Podkubectl get pods -o wide --field-selector spec.nodeName=node1
查看指定Node上的Pod

RBAC 与权限

配置kubectl get sa
列出ServiceAccount
配置kubectl get clusterrole
列出ClusterRole
配置kubectl get clusterrolebinding
列出ClusterRoleBinding
配置kubectl auth can-i create pods --as=system:serviceaccount:default:mysa
检查权限
← 首页