Kubernetes(通常简称为 k8s)是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。以下是一些常用的 Kubernetes 命令:
-
获取集群状态
kubectl cluster-info
-
获取集群中运行的 Pod 列表
kubectl get pods
-
获取特定命名空间下的 Pod 列表
kubectl get pods -n
-
获取特定资源的详细信息
kubectl describe <资源类型> <资源名称> 如: kubectl describe deployments <deployment-name> kubectl -n <命名空间> describe pod <pod-name>
-
创建资源
kubectl create -f <文件名>
-
删除资源
kubectl delete <资源类型> <资源名称>
-
扩展资源
kubectl scale --replicas=3 <资源类型> <资源名称>
-
获取资源的 YAML 或 JSON 定义
kubectl get <资源类型> <资源名称> -o yaml
-
查看 Pod 的日志
kubectl logs <Pod名称>
-
进入容器内部
kubectl exec -it <Pod名称> -- /bin/sh
-
查看集群中节点的状态
kubectl get nodes
-
查看集群中部署的状态
kubectl get deployments
-
查看集群中服务的状态
kubectl get services
-
查看集群中的命名空间
kubectl get namespaces
-
将本地文件中的配置应用到集群中
kubectl apply -f <文件名>
-
查看集群的版本信息
kubectl version
-
查看集群的资源配额
kubectl describe quota
-
查看集群的资源限制
kubectl describe limitrange
-
查看集群的网络策略
kubectl get networkpolicies
-
查看集群的存储类
kubectl get storageclass
延申:
一、集群管理相关命令
1、查看当前k8s上指定命令空间所有pod的镜像版本
kubectl get pods -n <namespace - name> -o=jsonpath='{range .items[*]}{"Pod: "}{.metadata.name}{"\n"}{"Container Images: "}{range .spec.containers[*]}{.image}{"\n"}{end}{"\n"}{end}'
- 管理命名空间(Namespace)
kubectl get namespaces
:查看集群中的所有命名空间。kubectl create namespace <namespace - name>
:创建一个新的命名空间。kubectl delete namespace <namespace - name>
:删除指定的命名空间(注意:需要先删除该命名空间下的所有资源)。
二、Pod管理命令
-
创建和查看Pod
kubectl run <pod - name> --image=<image - name>
:创建一个基于指定镜像的Pod。例如,kubectl run nginx - pod --image = nginx
创建一个名为nginx - pod
的Pod,使用nginx
镜像。kubectl describe pods <pod - name>
:详细查看指定Pod的信息,包括Pod的状态变化、容器的启动日志、IP地址等。
-
删除Pod
kubectl delete pods <pod - name>
:删除指定的Pod。
-
Pod的日志查看
kubectl logs <pod - name>
:查看指定Pod中容器的日志。如果Pod中有多个容器,可以使用kubectl logs <pod - name> - c <container - name>
来查看特定容器的日志。
三、Deployment管理命令
- 创建和查看Deployment
kubectl create deployment <deployment - name> --image=<image - name>
:创建一个新的Deployment,例如kubectl create deployment my - app - deployment --image = my - app:latest
。kubectl get deployments
:查看当前命名空间下的所有Deployment,显示Deployment的名称、可用副本数、期望副本数、更新状态等信息。kubectl describe deployments <deployment - name>
:详细查看指定Deployment的信息。
- 扩缩容Deployment
kubectl scale deployment <deployment - name> --replicas=<number>
:调整指定Deployment的副本数量,例如kubectl scale deployment my - app - deployment --replicas = 5
将my - app - deployment
的副本数设置为5。
- 更新Deployment
kubectl set image deployment/<deployment - name> <container - name>=<new - image - name>
:更新指定Deployment中容器的镜像,例如kubectl set image deployment/my - app - deployment my - app - container = my - app:new - version
。
四、Service管理命令
- 创建和查看Service
kubectl expose deployment <deployment - name> --type=<service - type> --port=<port - number>
:创建一个Service来暴露指定的Deployment。常见的service - type
有ClusterIP
(默认,集群内部可访问)、NodePort
(通过节点的端口在集群外部可访问)、LoadBalancer
(通常用于云环境下,外部负载均衡器来访问服务)。例如,kubectl expose deployment my - app - deployment --type = NodePort --port = 80
。kubectl get services
:查看当前命名空间下的所有Service,显示Service的名称、类型、集群IP、端口等信息。kubectl describe services <service - name>
:详细查看指定Service的信息。
- 删除Service
kubectl delete services <service - name>
:删除指定的Service。
这些命令是 Kubernetes 操作的基础,通过它们可以进行大部分的日常管理工作。记得在使用这些命令之前,确保你已经配置好了 kubectl
命令行工具,并且已经连接到了 Kubernetes 集群。