文章中如果有图看不到,可以点这里去 csdn 看看。从那边导过来的,文章太多,没法一篇篇修改好。

【容器】Kubernetes 常用命令总结

1. 集群管理命令

1.1 集群信息查看

# 查看集群信息
kubectl cluster-info

# 查看集群详细状态
kubectl get componentstatuses

# 查看集群版本
kubectl version

# 查看集群资源使用情况
kubectl top nodes
kubectl top pods

# 查看集群事件
kubectl get events --all-namespaces --sort-by='.lastTimestamp'

1.2 节点管理

# 查看所有节点
kubectl get nodes
kubectl get nodes -o wide

# 查看节点详细信息
kubectl describe node <node-name>

# 标记节点
kubectl label nodes <node-name> <key>=<value>

# 驱逐节点(维护前)
kubectl drain <node-name> --ignore-daemonsets --delete-local-data

# 恢复节点
kubectl uncordon <node-name>

# 查看节点资源
kubectl describe nodes | grep -A 10 -B 10 "Allocated resources"

2. 命名空间管理

# 查看所有命名空间
kubectl get namespaces
kubectl get ns

# 创建命名空间
kubectl create namespace <namespace-name>

# 切换到指定命名空间
kubectl config set-context --current --namespace=<namespace-name>

# 查看当前命名空间
kubectl config view --minify | grep namespace

# 删除命名空间
kubectl delete namespace <namespace-name>

# 查看指定命名空间的资源
kubectl get all -n <namespace-name>

3. Pod 管理命令

3.1 基本 Pod 操作

# 查看所有 Pod
kubectl get pods --all-namespaces
kubectl get pods -A

# 查看指定命名空间的 Pod
kubectl get pods -n <namespace>

# 查看 Pod 详细信息
kubectl describe pod <pod-name> -n <namespace>

# 查看 Pod 日志
kubectl logs <pod-name> -n <namespace>

# 实时查看日志
kubectl logs -f <pod-name> -n <namespace>

# 查看前一个容器的日志(用于崩溃的 Pod)
kubectl logs -p <pod-name> -n <namespace>

# 进入 Pod 容器
kubectl exec -it <pod-name> -n <namespace> -- /bin/bash

# 在 Pod 中执行命令
kubectl exec <pod-name> -n <namespace> -- <command>

# 删除 Pod
kubectl delete pod <pod-name> -n <namespace>

# 强制删除 Pod
kubectl delete pod <pod-name> -n <namespace> --grace-period=0 --force

3.2 Pod 调试和诊断

# 查看 Pod 事件
kubectl describe pod <pod-name> | grep -A 10 -B 10 Events

# 查看 Pod 资源限制
kubectl describe pod <pod-name> | grep -A 5 -B 5 "Limits\|Requests"

# 端口转发到本地
kubectl port-forward <pod-name> <local-port>:<pod-port> -n <namespace>

# 复制文件到 Pod
kubectl cp <local-file> <namespace>/<pod-name>:<path-in-pod>

# 从 Pod 复制文件到本地
kubectl cp <namespace>/<pod-name>:<path-in-pod> <local-file>

4. Deployment 管理命令

4.1 Deployment 基本操作

# 查看所有 Deployment
kubectl get deployments --all-namespaces

# 创建 Deployment
kubectl create deployment <deployment-name> --image=<image> -n <namespace>

# 应用 YAML 文件创建/更新 Deployment
kubectl apply -f deployment.yaml

# 查看 Deployment 状态
kubectl get deployment <deployment-name> -n <namespace>

# 查看 Deployment 详细信息
kubectl describe deployment <deployment-name> -n <namespace>

# 扩容 Deployment
kubectl scale deployment <deployment-name> --replicas=3 -n <namespace>

# 自动扩容
kubectl autoscale deployment <deployment-name> --min=2 --max=10 --cpu-percent=80

# 更新 Deployment 镜像
kubectl set image deployment/<deployment-name> <container-name>=<new-image> -n <namespace>

# 回滚 Deployment
kubectl rollout undo deployment/<deployment-name> -n <namespace>

# 查看 Deployment 回滚历史
kubectl rollout history deployment/<deployment-name> -n <namespace>

# 回滚到特定版本
kubectl rollout undo deployment/<deployment-name> --to-revision=2 -n <namespace>

# 查看滚动更新状态
kubectl rollout status deployment/<deployment-name> -n <namespace>

# 暂停/恢复 Deployment 更新
kubectl rollout pause deployment/<deployment-name> -n <namespace>
kubectl rollout resume deployment/<deployment-name> -n <namespace>

5. Service 管理命令

# 查看所有 Service
kubectl get services --all-namespaces
kubectl get svc -A

# 创建 Service
kubectl expose deployment <deployment-name> --port=80 --target-port=8080 -n <namespace>

# 查看 Service 详细信息
kubectl describe service <service-name> -n <namespace>

# 查看 Service 的 Endpoints
kubectl get endpoints <service-name> -n <namespace>

# 删除 Service
kubectl delete service <service-name> -n <namespace>

6. Ingress 管理命令

# 查看所有 Ingress
kubectl get ingress --all-namespaces

# 查看 Ingress 详细信息
kubectl describe ingress <ingress-name> -n <namespace>

# 查看 Ingress 类
kubectl get ingressclasses

7. ConfigMap 和 Secret 管理

7.1 ConfigMap 操作

# 查看 ConfigMap
kubectl get configmaps -n <namespace>

# 从文件创建 ConfigMap
kubectl create configmap <config-name> --from-file=<file-path> -n <namespace>

# 从字面量创建 ConfigMap
kubectl create configmap <config-name> --from-literal=key=value -n <namespace>

# 查看 ConfigMap 内容
kubectl get configmap <config-name> -o yaml -n <namespace>

# 编辑 ConfigMap
kubectl edit configmap <config-name> -n <namespace>

7.2 Secret 操作

# 查看 Secret
kubectl get secrets -n <namespace>

# 创建 Secret
kubectl create secret generic <secret-name> --from-literal=username=admin --from-literal=password=secret -n <namespace>

# 从文件创建 Secret
kubectl create secret generic <secret-name> --from-file=./username.txt --from-file=./password.txt -n <namespace>

# 查看 Secret 内容(Base64 解码)
kubectl get secret <secret-name> -o json -n <namespace> | jq '.data | map_values(@base64d)'

# 编码字符串为 Base64(用于创建 Secret)
echo -n "password" | base64

8. 存储管理命令

8.1 PersistentVolume 和 PersistentVolumeClaim

# 查看 PV
kubectl get pv

# 查看 PVC
kubectl get pvc -n <namespace>

# 查看存储类
kubectl get storageclass
kubectl get sc

9. 资源管理和限制

# 查看资源配额
kubectl get resourcequotas -n <namespace>

# 查看限制范围
kubectl get limitranges -n <namespace>

# 设置资源限制
kubectl set resources deployment/<deployment-name> -c=<container-name> --limits=cpu=200m,memory=512Mi --requests=cpu=100m,memory=256Mi

10. 故障排查和调试命令

10.1 高级诊断

# 查看 Pod 详细状态(包括节点分配信息)
kubectl get pods -o wide -n <namespace>

# 查看 Pod 事件序列
kubectl get events --field-selector involvedObject.name=<pod-name> -n <namespace>

# 检查 API 资源
kubectl api-resources

# 检查 API 版本
kubectl api-versions

# 查看 kubeconfig
kubectl config view

# 查看当前上下文
kubectl config current-context

# 切换上下文
kubectl config use-context <context-name>

10.2 网络诊断

# 临时启动一个调试 Pod
kubectl run debug-pod --image=busybox --rm -it --restart=Never -- nslookup <service-name>

# 测试网络连通性
kubectl run network-test --image=appropriate/curl --rm -it --restart=Never -- curl http://<service>.<namespace>.svc.cluster.local

# 查看网络策略
kubectl get networkpolicies -n <namespace>

11. 批量操作和脚本命令

# 批量删除失败的 Pod
kubectl delete pods --field-selector=status.phase=Failed -n <namespace>

# 删除所有 Evicted 状态的 Pod
kubectl get pods -n <namespace> | grep Evicted | awk '{print $1}' | xargs kubectl delete pod -n <namespace>

# 重启 Deployment(通过修改注解实现)
kubectl patch deployment <deployment-name> -p "{\"spec\":{\"template\":{\"metadata\":{\"annotations\":{\"date\":\"$(date +'%s')\"}}}}}" -n <namespace>

# 批量获取所有 Pod 的镜像
kubectl get pods -n <namespace> -o jsonpath="{.items[*].spec.containers[*].image}"

# 导出资源配置为 YAML
kubectl get deployment <deployment-name> -o yaml -n <namespace> > deployment.yaml

# 导出所有资源配置
kubectl get all -o yaml -n <namespace> > all-resources.yaml

12. 实用别名和快捷方式

# 添加到 ~/.bashrc 或 ~/.zshrc
alias k='kubectl'
alias kgp='kubectl get pods'
alias kgs='kubectl get services'
alias kgd='kubectl get deployments'
alias kgn='kubectl get nodes'
alias kaf='kubectl apply -f'
alias kdf='kubectl delete -f'
alias kd='kubectl describe'
alias ke='kubectl edit'
alias kl='kubectl logs'
alias kx='kubectl exec -it'

# 命名空间快捷方式
alias kgpa='kubectl get pods --all-namespaces'
alias kgsa='kubectl get services --all-namespaces'

# 设置默认命名空间
kubectl config set-context --current --namespace=default

13. 常用 YAML 模板生成命令

# 生成 Pod YAML 模板
kubectl run nginx --image=nginx --dry-run=client -o yaml > pod.yaml

# 生成 Deployment YAML 模板
kubectl create deployment nginx --image=nginx --dry-run=client -o yaml > deployment.yaml

# 生成 Service YAML 模板
kubectl create service clusterip nginx --tcp=80:80 --dry-run=client -o yaml > service.yaml

# 生成 ConfigMap YAML 模板
kubectl create configmap my-config --from-literal=key=value --dry-run=client -o yaml > configmap.yaml

14. 监控和日志相关命令

# 查看 Pod 资源使用情况
kubectl top pod <pod-name> -n <namespace>

# 查看节点资源使用情况
kubectl top node

# 查看多个 Pod 的日志
kubectl logs -f -l app=my-app -n <namespace>

# 查看指定时间段的日志
kubectl logs <pod-name> --since=1h -n <namespace>
kubectl logs <pod-name> --since-time="2023-01-01T00:00:00Z" -n <namespace>

# 查看日志并包含时间戳
kubectl logs <pod-name> --timestamps -n <namespace>

15. 安全相关命令

# 查看 ServiceAccount
kubectl get serviceaccounts -n <namespace>

# 查看 Role 和 RoleBinding
kubectl get roles,rolebindings -n <namespace>

# 查看 ClusterRole 和 ClusterRoleBinding
kubectl get clusterroles,clusterrolebindings

# 检查 Pod 的安全上下文
kubectl get pod <pod-name> -o jsonpath='{.spec.securityContext}' -n <namespace>

实用技巧和最佳实践

  1. 使用标签选择器
kubectl get pods -l app=nginx
kubectl delete pods -l app=nginx
  1. JSONPath 查询
kubectl get pods -o jsonpath='{.items[*].metadata.name}'
kubectl get nodes -o jsonpath='{range .items[*]}{.metadata.name}{"\t"}{.status.capacity.cpu}{"\n"}{end}'
  1. 自定义列输出
kubectl get pods -o custom-columns="NAME:.metadata.name,STATUS:.status.phase,NODE:.spec.nodeName"
  1. watch 实时监控
kubectl get pods -w
kubectl get deployments -w

这个总结涵盖了 Kubernetes 日常使用中的大部分命令,从基础操作到高级调试都有涉及。建议根据实际工作需求重点掌握相关部分的命令。

posted @ 2025-10-02 14:52  NeoLshu  阅读(0)  评论(0)    收藏  举报  来源