当前位置:   article > 正文

02_k8s入门----k8s查看pods/nodes_k8s查看pod在哪个node上

k8s查看pod在哪个node上

CSDN话题挑战赛第2期
参赛话题:云原生技术栈分享

k8s入门----k8s查看pods/nodes

目标:

  • 了解 kubernetes pods(容器组)
  • 了解kubernetes nodes(节点)
  • 排查故障

kubernetes pods

在部署第一个应用程序中创建Deployment后,k8s创建了一个pod(容器组)来放置应用程序实例(container容器)。

pods概述

在这里插入图片描述

pod容器组是一个k8s中一个抽象的概念,用于存放一组 container(可包含一个或多个 container 容器,即图上正方体),以及这些container(容器)的一些共享资源。这些资源包括:

  • 共享存储,称为卷(Volumes),即图上紫色圆柱
  • 网络,每个pod(容器组)在集群中有个唯一的ip,pod(容器组)中的container(容器)共享该ip地址
  • container(容器)的基本信息,例如容器的镜像版本,对外暴露的端口等

例如,pod可能即包含带有node.js应用程序的container容器,也包含另一个非node.js的container容器,用于提供node.js webserver 要发布的数据。 pod中的容器共享ip地址和端口空间(同一pod中的不同container端口不能相互冲突),始终同一位置并共同调度,并在同一节点上的共享上下文中运行。(同一个pod内的容器可以使用localhost+端口互相访问)。

pod(容器组)是k8s集群上的最基本的单元。当我们在k8s 上创建Deployment 时,会在集群上创建包含容器的pod(而不是直接创建容器)。每个pod都与运行它的worker节点(node)绑定,并保持在那里知道终止或呗删除。如果节点(node)发生故障,则会在集群中的其他可用节点(node)上运行相同的pod(从同样的镜像创建container,使用相同的配置,ip地址不同,pod名字不同)。

  • pod 是一组容器(可包含一个或多个应用程序容器),以及共享存储(卷volumes)、ip 地址和有关如何运行容器的信息。
  • 如果多个容器紧密耦合并且需要共享磁盘等资源,则他们应该被部署在同一个pod(容器组)中。

node(节点)

下图显示一个node(节点)上含有4个pod(容器组)

在这里插入图片描述

pod(容器组)总是在node(节点)上运行。node(节点)是kubernetes集群中的计算机。可以是物理机或虚拟机。每个node(节点)都由master管理。一个node(节点)上可以呀多个pod(容器组),kubernetes master会根据每一个node(节点)上的可用资源情况,自动调度pod(容器组)到最佳的node(节点)上。

每个kubernetes node(节点)至少运行:

  • kubelet, 负责master节点和worker节点之间通信的进程;管理pod(容器组)和pod(容器组)内运行的Container(容器)。
  • 容器运行环境(如docker)负责下载镜像、创建和运行容器等。

实战:障碍排除

部署第一个应用程序 中,我们使用了 kubectl 命令行界面部署了 nginx 并且查看了 Deployment 和 Pod。kubectl 还有如下四个常用命令,在我们排查问题时可以提供帮助:

  • kubectl get - 显示资源列表

    #kubectl get 资源类型
    
    #获取类型为Deployment的资源列表
    kubectl get deployment
    
    #获取类型为pod的资源列表
    kubectl get pods
    
    #获取类型为node的资源
    kubectl get node 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    名称空间

    在命令后增加 -A或 --all-namespaces 可查看所有名称空间中的对象,使用参数 -n 可查看指定名称空间的对象。例如:

    #查看所有名称空间的Deployment
    kubectl get deployments -A
    kubectl get deployments --all-namespaces
    #查看kub-system名称空间的 Deployment 
    kubectl get deployments -n kube-system 
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    并非所有对象都在名称空间中

  • kubectl describe - 显示有关资源的详细信息

    #kubectl describe 资源类型 资源名称
    # 查看名称为nginx-xxx的pod信息
     kubectl describe pod nginx-xxx
    #查看名称为nginx的Deployment的信息
    kubectl describe deployment nginx 
    
    • 1
    • 2
    • 3
    • 4
    • 5
  • kubectl logs - 查看pod中的容器的打印日志(类似于 docker logs)

#kubectl logs pod名称
#查看名称为nginx-xxxx的pod内的容器打印的日志
kubectl logs -f nginx-xxxx
  • 1
  • 2
  • 3
  • kubectl exec - 在pod中的容器环境内部执行命令(类似 docker exec)
#kubectl exec pod名称 操作命令
# 在名称为nginx-xxx的Pod中运行bash
kubectl exec -it nginx-xxx /bin/bash 
  • 1
  • 2
  • 3
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/162097?site
推荐阅读
相关标签
  

闽ICP备14008679号