1.kubectl describe
查看资源的详细信息,根据事件信息获取当前资源的状态,从而给出解决方案。
[root@master231 pod]# kubectl get pods
NAME READY STATUS RESTARTS AGE
image-resources-stress-04 0/1 Pending 0 2m13s
[root@master231 pod]#
三种查看方式:
[root@master231 pod]# kubectl describe -f 06-pods-resources.yaml
[root@master231 pod]# kubectl describe pod image-resources-stress-04
[root@master231 pod]# kubectl describe pod/image-resources-stress-04
...
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Warning FailedScheduling 24s (x3 over 2m32s) default-scheduler 0/3 nodes are available: 1 node(s) had taint {node-role.kubernetes.io/master: }, that the pod didn't tolerate, 2 Insufficient memory.
[root@master231 pod]#
[root@master231 pod]# kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
image-resources-stress-04 0/1 Pending 0 23s <none> work232 <none> <none>
[root@master231 pod]#
[root@master231 pod]# kubectl describe pod image-resources-stress-04
Name: image-resources-stress-04
Namespace: default
Priority: 0
# 观察当前的Node字段名称,和"kubectl get nodes "的NAME是否相同。
Node: work232/
Labels: <none>
Annotations: <none>
Status: Pending
....
# 如下所示,没有发现时间,此时可能是调度的节点不存在,请对比Node名称是否正确。
Events: <none>
[root@master231 pod]#
[root@master231 pod]# kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
image-resources-stress-04 0/1 Pending 0 27s <none> work232 <none> <none>
[root@master231 pod]#
[root@master231 pod]#
[root@master231 pod]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
master231 Ready control-plane,master 26h v1.23.17
worker232 Ready <none> 26h v1.23.17
worker233 Ready <none> 26h v1.23.17
[root@master231 pod]#
2.kubectl logs
kubectl logs <pod-name> -c <container-name>
将`<pod-name>`替换为要查看其日志的Pod的实际名称,并选择性地将`<container-name>`替换为要查看其日志的特定容器的名称(如果Pod中有多个容器)。
假设有一个名为`my-pod`的Pod,其中包含一个名为`my-container`的容器,可以使用以下命令查看该容器的日志:
kubectl logs my-pod -c my-container
3.kubectl exec
[root@master231 pod]#kubectl exec --help
连接到指定容器查看
[root@master231 pod]# kubectl get pods
NAME READY STATUS RESTARTS AGE
linux-web 1/1 Running 0 102s
linux-wp 2/2 Running 0 50s
[root@master231 pod]#
[root@master231 pod]# kubectl exec -it linux-web -- sh # 当一个Pod内只有一个容器时,无需使用-c选项。
[root@master231 pod]# kubectl exec -it linux-wp -c wp -- bash # 当Pod内有多个容器时,可以使用-c选项连接到指定的容器。若不指定,默认连接到第一个容器。
4.kubectl get
kubectl get命令用于获取Kubernetes集群中的资源信息。通过该命令,可以列出各种资源的状态、名称、标签和其他详细信息。要使用kubectl get命令,需要指定要获取的资源类型。
1. 列出所有Pods:
kubectl get pods
2. 列出所有Services:
kubectl get services
3. 列出所有Deployments:
kubectl get deployments
4. 列出所有Nodes:
kubectl get nodes
还可以通过添加选项来进一步筛选和查看资源。例如使用`-n`选项指定命名空间,或使用`-l`选项按标签进行过滤。
5.kubectl cp
kubectl cp命令用于在本地计算机和Kubernetes Pod之间复制文件或目录。这个命令很有用,可以轻松地从Pod中复制文件到本地计算机,或者将本地文件复制到Pod中。
以下是kubectl cp命令的基本语法:
kubectl cp <source> <destination>
- `<source>` 是源路径,可以是本地文件或目录,也可以是Pod中的文件或目录。
- `<destination>` 是目标路径,指定要将文件或目录复制到哪里,同样可以是本地文件或目录,也可以是Pod中的文件或目录。
1. 从Pod中复制文件到本地计算机:
kubectl cp <namespace>/<pod-name>:<path/to/file> <local/destination/path>
2. 将本地文件复制到Pod中:
kubectl cp <local/source/path> <namespace>/<pod-name>:<path/inside/pod>