目录
1. 集群状态相关的指令
2. Pod相关指令
3. 资源管理相关指令
4. 名称空间相关指令
5. Deployment 管理
6. Service 管理
7. Ingress 管理(如有配置 Ingress)
8. 配置管理
1. 集群状态相关的指令
查看集群信息
kubectl cluster-info
# 该命令显示 Kubernetes 控制平面及相关服务的 URL 地址。
查看所有节点状态
kubectl get nodes
# 该命令显示集群中所有节点的状态,包括 Ready、NotReady 等。
查看节点详细信息
kubectl describe node <node-name>
# 该命令显示指定节点的详细信息,如资源使用情况、标签、污点等。
查看控制平面组件状态
kubectl get componentstatuses
# 该命令显示 etcd、scheduler、controller-manager 等控制平面组件的健康状态。
查看节点的资源使用情况
kubectl top nodes
# 该命令显示每个节点的 CPU 和内存使用情况。
查看 Pod 的资源使用情况
kubectl top pods -n <namespace>
查看集群事件
kubectl get events -A
# 该命令显示集群中的事件日志,可以帮助诊断问题
查看当前上下文和配置
kubectl config view
# 该命令显示当前 kubectl 配置文件的内容,包括上下文、集群和用户信息。
设置集群上下文
kubectl config use-context <context-name>
检查 DNS 服务是否正常
kubectl run --rm -i --tty busybox --image=busybox --restart=Never -- nslookup kubernetes.default
# 该命令启动一个临时的 Pod 并测试 DNS 解析是否正常。
2. Pod相关指令
Pod 是最小的部署单元
查看所有命名空间中的 Pod
kubectl get pods -A
查看当前命名空间中的 Pod
kubectl get pods
查看指定命名空间中的 Pod
kubectl get pods -n <namespace>
查看 Pod 的详细信息
kubectl describe pod <pod-name> -n <namespace>
通过 YAML 文件创建 Pod
kubectl apply -f <pod.yaml>
删除 Pod
kubectl delete pod <pod-name> -n <namespace>
强制删除 Pod
kubectl delete pod <pod-name> --grace-period=0 --force -n <namespace>
# 该命令会立即删除 Pod,而不等待其优雅终止。
查看 Pod 日志
kubectl logs <pod-name> -n <namespace>
查看特定容器的日志
kubectl logs <pod-name> -c <container-name> -n <namespace>
查看 Pod 的事件日志
kubectl describe pod <pod-name> -n <namespace>
# 这个命令的输出中会包含与 Pod 相关的事件,如创建、调度失败、容器重启等信息
进入 Pod 内部执行命令
kubectl exec -it <pod-name> -n <namespace> -- /bin/sh
查看 Pod 的资源使用情况
kubectl top pod <pod-name> -n <namespace>
# 该命令显示 Pod 的 CPU 和内存使用情况
列出 Pod 的 IP 地址
kubectl get pods -o wide -n <namespace>
# 该命令显示 Pod 的详细信息,包括 IP 地址、节点名称等
查看 Pod 的所有者
kubectl get pods <pod-name> -n <namespace> -o jsonpath='{.metadata.ownerReferences[0].name}'
3. 资源管理相关指令
查看资源(Pod、Deployment、Service 等)
kubectl get <resource> -n <namespace>
创建资源
kubectl apply -f <resource.yaml>
# 通过 YAML 文件创建资源。
删除资源
kubectl delete <resource> <resource-name> -n <namespace>
更新资源
kubectl apply -f <resource.yaml>
# 使用更新后的 YAML 文件重新应用配置。
查看资源详细信息
kubectl describe <resource> <resource-name> -n <namespace>
列出所有资源类型
kubectl api-resources
4. 名称空间相关指令
在 Kubernetes 中,名称空间(Namespace)用于在同一个物理集群中划分逻辑分区,以便在不同的环境中隔离资源。
列出所有名称空间
kubectl get namespaces
# 显示集群中的所有名称空间及其状态
查看名称空间详细信息
kubectl describe namespace <namespace-name>
# 显示指定名称空间的详细信息,包括资源配额、限制等
创建新名称空间
kubectl create namespace <namespace-name>
通过 YAML 文件创建名称空间
创建一个名为 namespace.yaml
的文件
apiVersion: v1
kind: Namespace
metadata:name: my-namespace
然后执行:
kubectl apply -f namespace.yaml
删除名称空间
kubectl delete namespace <namespace-name>
# 注意:删除名称空间会删除该名称空间内的所有资源。
设置当前上下文的默认名称空间】
kubectl config set-context --current --namespace=<namespace-name>
# 该命令将当前上下文中的默认名称空间设置为指定的名称空间。
查看特定名称空间中的资源
kubectl get <resource> -n <namespace>
在特定名称空间中创建资源
kubectl create -f <resource.yaml> -n <namespace>
删除特定名称空间中的资源
kubectl delete <resource> <resource-name> -n <namespace>
5. Deployment 管理
查看所有 Deployment
kubectl get deployments -n <namespace>
查看特定 Deployment 的详细信息
kubectl describe deployment <deployment-name> -n <namespace>
创建或更新 Deployment
kubectl apply -f <deployment.yaml>
# 通过 YAML 文件创建或更新 Deployment。
删除 Deployment
kubectl delete deployment <deployment-name> -n <namespace>
扩展 Deployment(调整副本数量)
kubectl scale deployment <deployment-name> --replicas=<number> -n <namespace>
滚动更新 Deployment
kubectl rollout restart deployment <deployment-name> -n <namespace>
回滚 Deployment
kubectl rollout undo deployment <deployment-name> -n <namespace>
# 将 Deployment 回滚到上一个版本
查看 Deployment 的滚动更新状态
kubectl rollout status deployment <deployment-name> -n <namespace>
# 检查 Deployment 的更新进度和状态
6. Service 管理
查看所有 Service
kubectl get services -n <namespace>
查看特定 Service 的详细信息
kubectl describe service <service-name> -n <namespace>
创建 Service
kubectl expose deployment <deployment-name> --port=<port> --target-port=<target-port> --type=<type> -n <namespace>
--port
指定 Service 暴露的端口。--target-port
指定 Pod 内部容器的端口。--type
指定 Service 类型,例如ClusterIP
、NodePort
、LoadBalancer
删除 Service
kubectl delete service <service-name> -n <namespace>
7. Ingress 管理(如有配置 Ingress)
查看所有 Ingress 资源
kubectl get ingress -n <namespace>
查看特定 Ingress 的详细信息
kubectl describe ingress <ingress-name> -n <namespace>
创建或更新 Ingress
kubectl apply -f <ingress.yaml>
删除 Ingress
kubectl delete ingress <ingress-name> -n <namespace>
8. 配置管理
创建 ConfigMap
kubectl create configmap <configmap-name> --from-literal=<key>=<value> -n <namespace>
或者从文件创建
kubectl create configmap <configmap-name> --from-file=<file-path> -n <namespace>
查看 ConfigMap
kubectl get configmaps -n <namespace>
查看 ConfigMap 详细信息
kubectl describe configmap <configmap-name> -n <namespace>
删除 ConfigMap
kubectl delete configmap <configmap-name> -n <namespace>
创建 Secret
kubectl create secret generic <secret-name> --from-literal=<key>=<value> -n <namespace>
或者从文件创建
kubectl create secret generic <secret-name> --from-file=<file-path> -n <namespace>
查看 Secret
kubectl get secrets -n <namespace>
查看 Secret 详细信息
kubectl describe secret <secret-name> -n <namespace>
删除 Secret
kubectl delete secret <secret-name> -n <namespace>