Kubernetes (K8s) 容器管理常用命令
基础配置
查看集群信息
# 查看集群信息
kubectl cluster-info
# 查看节点信息
kubectl get nodes
# 查看节点详细信息
kubectl describe node <node_name>
# 查看集群配置
kubectl config view
切换上下文
# 查看当前上下文
kubectl config current-context
# 查看所有上下文
kubectl config get-contexts
# 切换上下文
kubectl config use-context <context_name>
Pod 管理
查看 Pod
# 查看所有 Pod
kubectl get pods
# 查看所有命名空间的 Pod
kubectl get pods --all-namespaces
# 查看指定命名空间的 Pod
kubectl get pods -n <namespace>
# 查看 Pod 详细信息
kubectl describe pod <pod_name>
# 查看 Pod 日志
kubectl logs <pod_name>
# 实时查看 Pod 日志
kubectl logs -f <pod_name>
# 查看多个 Pod 的日志
kubectl logs -f <pod_name1> <pod_name2>
创建和删除 Pod
# 通过 YAML 文件创建 Pod
kubectl create -f <pod.yaml>
# 通过 YAML 文件应用配置(创建或更新)
kubectl apply -f <pod.yaml>
# 删除 Pod
kubectl delete pod <pod_name>
# 强制删除 Pod
kubectl delete pod <pod_name> --force --grace-period=0
# 删除指定命名空间的 Pod
kubectl delete pod <pod_name> -n <namespace>
进入 Pod
# 进入 Pod 容器
kubectl exec -it <pod_name> -- /bin/bash
# 进入 Pod 指定容器(多容器 Pod)
kubectl exec -it <pod_name> -c <container_name> -- /bin/bash
# 在 Pod 中执行命令
kubectl exec <pod_name> -- <command>
Deployment 管理
查看 Deployment
# 查看 Deployment
kubectl get deployments
# 查看 Deployment 详细信息
kubectl describe deployment <deployment_name>
# 查看 Deployment 的 ReplicaSet
kubectl get rs
创建和更新 Deployment
# 创建 Deployment
kubectl create deployment <deployment_name> --image=<image_name>
# 应用 Deployment 配置
kubectl apply -f <deployment.yaml>
# 更新 Deployment 镜像
kubectl set image deployment/<deployment_name> <container_name>=<new_image>
# 扩展 Deployment
kubectl scale deployment <deployment_name> --replicas=<number>
# 滚动更新 Deployment
kubectl rollout restart deployment/<deployment_name>
查看更新状态
# 查看更新状态
kubectl rollout status deployment/<deployment_name>
# 查看更新历史
kubectl rollout history deployment/<deployment_name>
# 回滚到上一个版本
kubectl rollout undo deployment/<deployment_name>
# 回滚到指定版本
kubectl rollout undo deployment/<deployment_name> --to-revision=<revision_number>
Service 管理
查看 Service
# 查看 Service
kubectl get services
# 查看 Service 详细信息
kubectl describe service <service_name>
# 查看 Service 端点
kubectl get endpoints <service_name>
创建 Service
# 创建 Service
kubectl create service <service_type> <service_name> --tcp=<port>
# 应用 Service 配置
kubectl apply -f <service.yaml>
# 为 Deployment 创建 Service
kubectl expose deployment <deployment_name> --port=<port> --target-port=<target_port>
ConfigMap 和 Secret
ConfigMap 管理
# 查看 ConfigMap
kubectl get configmap
# 查看 ConfigMap 详细信息
kubectl describe configmap <configmap_name>
# 创建 ConfigMap
kubectl create configmap <configmap_name> --from-file=<file_path>
# 从字面值创建 ConfigMap
kubectl create configmap <configmap_name> --from-literal=<key>=<value>
# 应用 ConfigMap 配置
kubectl apply -f <configmap.yaml>
# 删除 ConfigMap
kubectl delete configmap <configmap_name>
Secret 管理
# 查看 Secret
kubectl get secrets
# 查看 Secret 详细信息
kubectl describe secret <secret_name>
# 创建 Secret
kubectl create secret generic <secret_name> --from-file=<file_path>
# 从字面值创建 Secret
kubectl create secret generic <secret_name> --from-literal=<key>=<value>
# 应用 Secret 配置
kubectl apply -f <secret.yaml>
# 删除 Secret
kubectl delete secret <secret_name>
命名空间管理
查看命名空间
# 查看所有命名空间
kubectl get namespaces
# 查看命名空间详细信息
kubectl describe namespace <namespace_name>
创建和删除命名空间
# 创建命名空间
kubectl create namespace <namespace_name>
# 应用命名空间配置
kubectl apply -f <namespace.yaml>
# 删除命名空间
kubectl delete namespace <namespace_name>
切换到命名空间
# 设置默认命名空间
kubectl config set-context --current --namespace=<namespace_name>
资源管理
查看资源
# 查看所有资源
kubectl get all
# 查看指定命名空间的所有资源
kubectl get all -n <namespace>
# 查看资源使用情况
kubectl top nodes
# 查看 Pod 资源使用情况
kubectl top pods
# 查看指定命名空间的 Pod 资源使用情况
kubectl top pods -n <namespace>
资源限制
# 查看资源配额
kubectl get quota
# 查看资源配额详细信息
kubectl describe quota <quota_name>
# 查看限制范围
kubectl get limitrange
# 查看限制范围详细信息
kubectl describe limitrange <limitrange_name>
调试和故障排查
查看事件
# 查看所有事件
kubectl get events
# 查看指定命名空间的事件
kubectl get events -n <namespace>
# 实时查看事件
kubectl get events --watch
查看组件状态
# 查看所有组件状态
kubectl get componentstatuses
# 查看集群组件健康状态
kubectl get cs
端口转发
# 转发 Pod 端口到本地
kubectl port-forward <pod_name> <local_port>:<pod_port>
# 转发 Service 端口到本地
kubectl port-forward service/<service_name> <local_port>:<service_port>
# 转发 Deployment 端口到本地
kubectl port-forward deployment/<deployment_name> <local_port>:<container_port>
标签和选择器
标签管理
# 查看标签
kubectl get pods --show-labels
# 添加标签
kubectl label pod <pod_name> <key>=<value>
# 删除标签
kubectl label pod <pod_name> <key>-
# 更新标签
kubectl label pod <pod_name> <key>=<value> --overwrite
使用选择器
# 使用标签选择器
kubectl get pods -l <key>=<value>
# 使用多个标签选择器
kubectl get pods -l <key1>=<value1>,<key2>=<value2>
# 使用表达式选择器
kubectl get pods -l '<key> in (<value1>,<value2>)'
常用技巧
YAML 文件操作
# 使用 YAML 格式输出
kubectl get pod <pod_name> -o yaml
# 使用 JSON 格式输出
kubectl get pod <pod_name> -o json
# 导出资源配置
kubectl get pod <pod_name> -o yaml > pod.yaml
# 编辑资源
kubectl edit pod <pod_name>
# 编辑 Deployment
kubectl edit deployment <deployment_name>
批量操作
# 删除所有 Pod
kubectl delete pods --all
# 删除指定命名空间的所有 Pod
kubectl delete pods --all -n <namespace>
# 删除所有 Deployment
kubectl delete deployments --all
# 删除所有 Service
kubectl delete services --all
补丁操作
# 使用 JSON 补丁
kubectl patch pod <pod_name> -p '{"spec":{"containers":[{"name":"<container_name>","image":"<new_image>"}]}}'
# 使用策略合并补丁
kubectl patch pod <pod_name> --type='merge' -p '{"metadata":{"labels":{"new-label":"value"}}}'
执行命令
# 在所有 Pod 中执行命令
kubectl get pods -o name | xargs -I {} kubectl exec {} -- <command>
# 在指定标签的 Pod 中执行命令
kubectl get pods -l <key>=<value> -o name | xargs -I {} kubectl exec {} -- <command>
Helm 管理(可选)
基础操作
# 安装 Helm Chart
helm install <release_name> <chart_name>
# 列出已安装的 Helm Release
helm list
# 升级 Helm Release
helm upgrade <release_name> <chart_name>
# 卸载 Helm Release
helm uninstall <release_name>
# 查看 Helm Release 状态
helm status <release_name>