知识点:
# 等待镜像下载完成后,pod就会正常running了(这里介绍两个实用参数 -w代表持久监听当前namespace下的指定资源的变化;-o wide代表列出更为详细的信息,比如这里pod运行的node节点显示)
# 注: READY下面的含义是后面数字1代表这个pod里面期望的容器数量,前面的数字1代表服务正常运行就绪的容器数量
kubectl get pod -o wide -w 是一个 Kubernetes 命令,用于实时地(以流式方式)查看集群中所有 Pod 的详细信息。这个命令的各个部分可以分解如下:
kubectl: Kubernetes 的命令行工具,用于与 Kubernetes 集群进行交互。
get: 获取资源的命令。在这种情况下,它是用来获取 Pod 资源的。
pod: 指定要获取的资源类型是 Pod。
-o wide: 这是一个输出格式选项,wide 会显示比默认输出更详细的信息,包括每个 Pod 的 IP 地址、节点名等。
-w: 这是一个流式选项,它告诉 kubectl 以流式方式显示结果,这意味着它会持续监视 Pod 的状态,并在 Pod 的状态发生变化时更新显示。
总的来说,kubectl get pod -o wide -w 命令将显示集群中所有 Pod 的详细信息,并实时更新这些信息,以反映 Pod 状态的变化。这对于监视正在运行的应用程序或调试问题非常有用。
但我们在生产中是不建议直接用来创建pod
[root@master1 ~]#
一、实验环境:
master1\node1\node2恢复到单节点集群
定义pod: pod是指k8s最小的调度单元,k8s通过定义一个pod资源,在pod里运行容器,容器需要指定一个镜像这就可以运行一个具体的服务,一个pod可以封装一个或多个容器,可以把pod看作一个虚拟机,然后每隔容器相当于运行一个虚拟机的进程,pod是需要调度到k8s集群的工作节点来运行的,具体调度到哪个节点,需要调度器来实现的(具体node1或node2,是看master上的pod的心情,调度到哪个节点的)。
二、在node1和node2上传nginx的镜像:
[root@node1 ~]# ls
anaconda-ks.cfg calico.tar.gz nginx-1.27.4.tar.gz
busybox-1-28.tar.gz nginx-1.21.6.tar
[root@node1 ~]# ctr -n k8s.io images import nginx-1.21.6.tar (注意所有工作节点都需要)容器运行时导入nginx:1.21.6的镜像
unpacking docker.io/library/nginx:1.21.6 (sha256:94b808e393739b5363decf631a746d0 241083d40eb05f07200a6d1c0c16f54b8)...done
[root@node1 ~]#
[root@node2 ~]# ls
anaconda-ks.cfg busybox-1-28.tar.gz calico.tar.gz nginx-1.21.6.tar
[root@node2 ~]# ctr -n k8s.io images import nginx-1.21.6.tar (注意所有工作节点都需要)容器运行时导入nginx:1.21.6的镜像
unpacking docker.io/library/nginx:1.21.6 (sha256:94b808e393739b5363decf631a746d0 241083d40eb05f07200a6d1c0c16f54b8)...done
[root@node2 ~]#
三、master节点上使用nginx1.21.6的镜像运行nginx的容器
[root@master1 ~]# kubectl run nginx --image=docker.io/library/nginx:1.21.6 k8s运行nginx1.21.6的镜像生成nginx的容器
pod/nginx created
[root@master1 ~]# kubectl get pod 查看pod信息
NAME READY STATUS RESTARTS AGE
nginx 1/1 Running 0 35s 一个 状态正在运行
四、查看kubectl运行的帮助
[root@master1 ~]# kubectl run -h 查看kubectl运行的帮助
五、master1节点上查看pod的详细信息
[root@master1 ~]# kubectl get pod -o wide -w 动态查看pod的详细信息(ctrl +c 中断)
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
nginx 1/1 Running 0 65s 10.244.104.2 node2 <none> <none>
^C[root@master1 ~]# kubectl get pod -o wide 查看pod的详细信息
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NOD E READINESS GATES
nginx 1/1 Running 0 117s 10.244.104.2 node2 <none> <none>
六、master1访问nginx容器
[root@master1 ~]# curl 10.244.104.2 访问nginx容器
nginx的测试页面
^C
七、在10.244.104.2上创建“hello world 的测试页面”
[root@master1 ~]# kubectl exec -it nginx -- bash 进入nginx的容器里
root@nginx:/# echo "hello world!" > /usr/share/nginx/html/index.html 创建hello world的测试页面
root@nginx:/# exit 退出
exit
[root@master1 ~]# curl 10.244.104.2 访问容器
hello world!
[root@master1 ~]#
八、查看nginx的描述信息:
[root@master1 ~]# kubectl describe pod nginx 查看nginx pod的描述信息
Events: 查看故障信息,主要用于排错
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 34m default-scheduler Successfully assigned default/nginx to node2
Normal Pulled 34m kubelet Container image 使用nginx容器"docker.io/library/nginx:1.21.6" already present on machine
Normal Created 34m kubelet Created container nginx 创建nginx容器
Normal Started 34m kubelet Started container nginx 启动nginx容器
[root@master1 ~]#
九、删除nginx pod(在生产线上最危险的命令)
[root@master1 ~]# kubectl delete pod nginx 危险命令,pod一旦删除恢复不了!!!
删除nginx pod(在生产线上最危险的命令)
pod "nginx" deleted
[root@master1 ~]#
[root@master1 ~]# kubectl get pod
No resources found in default namespace.