【云原生|K8s系列第4篇】:实战查看Pod和工作节点

这篇具有很好参考价值的文章主要介绍了【云原生|K8s系列第4篇】:实战查看Pod和工作节点。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

k8s 查看节点,云原生,云原生,kubernetes,docker,K8s实战,K8s入门教学

本期文章是K8s系列第4篇,主要是实战查看pod和工作节点。通过本期文章:我们将学习了解Kubernetes中的Pod和工作节点,并且对已经部署的应用故障排除。

在前期的文章中,已经介绍了一些云原生入门的知识及简单实战,感兴趣的同学可以去我的云原生专栏中学习,任意门:云原生学习专栏

前言:学习目标

本篇文章,学习目标是:

  • 了解 Kubernetes Pod。
  • 了解 Kubernetes 工作节点。
  • 对已部署的应用故障排除。

1、学习Kubernetes Pods

在前面的实战中我们创建 Deployment 时, Kubernetes 添加了一个 Pod 来托管我们的应用实例。

Pod 是 Kubernetes 抽象出来的,表示一组一个或多个应用程序容器(如 Docker),以及这些容器的一些共享资源。

这些资源包括:

  • 共享存储,当作卷
  • 网络,作为唯一的集群 IP 地址
  • 有关每个容器如何运行的信息,例如容器镜像版本或要使用的特定端口。

Pod 为特定于应用程序的“逻辑主机”建模,并且可以包含相对紧耦合的不同应用容器。例如,Pod 可能既包含带有 Node.js 应用的容器,也包含另一个不同的容器,用于提供 Node.js 网络服务器要发布的数据。Pod 中的容器共享 IP 地址和端口,始终位于同一位置并且共同调度,并在同一工作节点上的共享上下文中运行。

Pod是 Kubernetes 平台上的原子单元。 在 Kubernetes 上创建 Deployment 时,该 Deployment 会在其中创建包含容器的 Pod (而不是直接创建容器)。每个 Pod 都与调度它的工作节点绑定,并保持在那里直到终止(根据重启策略)或删除。 如果工作节点发生故障,则会在集群中的其他可用工作节点上调度相同的 Pod。

k8s 查看节点,云原生,云原生,kubernetes,docker,K8s实战,K8s入门教学

2、工作节点

一个 pod 总是运行在工作节点。工作节点是 Kubernetes 中的参与计算的机器,可以是虚拟机或物理计算机,这个具体取决于集群。每个工作节点由主节点管理。工作节点可以有多个 pod ,Kubernetes 主节点会自动处理在集群中的工作节点上调度 pod 。 主节点的自动调度考量了每个工作节点上的可用资源。

每个 Kubernetes 工作节点至少运行:

  • Kubelet,负责 Kubernetes 主节点和工作节点之间通信的过程; 它管理 Pod 和机器上运行的容器。
  • 容器运行时(如 Docker)负责从仓库中提取容器镜像,解压缩容器以及运行应用程序。

2.1 工作节点图片概览

k8s 查看节点,云原生,云原生,kubernetes,docker,K8s实战,K8s入门教学

3、使用kubectl进行故障排除

在之前的实战中我们使用了 Kubectl 命令行界面。 接下来的实战中我们将继续使用它来获取有关已部署的应用程序及其环境的信息。 最常见的操作可以使用以下 kubectl 命令完成:

kubectl get - 列出资源
kubectl describe - 显示有关资源的详细信息
kubectl logs - 打印 pod 和其中容器的日志
kubectl exec - 在 pod 中的容器上执行命令

4、实战查看Pod和工作节点

4.1 检查应用配置

我们先验证一下我们在前一个场景中部署的应用程序是否正在运行。使用kubectl get命令并查找现有的Pods:

$ kubectl get pods
NAME                                  READY   STATUS    RESTARTS   AGE
kubernetes-bootcamp-fb5c67579-bvltk   1/1     Running   0          50s
$

接下来,使用kubectl describe pods命令来查看Pod中有哪些容器以及用来构建这些容器的图像:

$ kubectl describe pods
Name:         kubernetes-bootcamp-fb5c67579-bvltk
Namespace:    default
Priority:     0
Node:         minikube/10.0.0.69
Start Time:   Thu, 21 Jul 2022 16:45:17 +0000
Labels:       app=kubernetes-bootcamp
              pod-template-hash=fb5c67579
Annotations:  <none>
Status:       Running
IP:           172.18.0.6
IPs:
  IP:           172.18.0.6
Controlled By:  ReplicaSet/kubernetes-bootcamp-fb5c67579
Containers:
  kubernetes-bootcamp:
    Container ID:   docker://9ce0902c08eb2b6444e4738f55a8989238f530c06e7b2651df0ae76e415ae505
    Image:          gcr.io/google-samples/kubernetes-bootcamp:v1
    Image ID:       docker-pullable://jocatalin/kubernetes-

可以看到关于Pod容器的详细信息:IP地址、使用的端口和与Pod生命周期相关的事件列表。
k8s 查看节点,云原生,云原生,kubernetes,docker,K8s实战,K8s入门教学

4.2 在终端中显示应用程序

回想一下,Pods运行在一个隔离的、私有的网络中——所以我们需要代理访问它们,这样我们就可以调试它们并与它们交互。为此,将使用kubectl proxy命令在第二个终端窗口中运行代理。点击下面的命令,自动打开一个新的终端并运行代理:

echo -e "\n\n\n\e[92mStarting Proxy. After starting it will not output a response. Please click the first Terminal Tab\n"; kubectl proxy

现在我们将再次获得Pod名称,并通过代理直接查询该Pod。获取Pod名称并将其存储在POD_NAME环境变量中:

$ export POD_NAME=$(kubectl get pods -o go-template --template '{{range .items}}{{.metadata.name}}{{"\n"}}{{end}}')
$ echo Name of the Pod: $POD_NAME
Name of the Pod: kubernetes-bootcamp-fb5c67579-756vw

如果想要查看应用程序的输出,可以运行一个curl请求。url即到Pod的API的路由。

$ curl http://localhost:8001/api/v1/namespaces/default/pods/$POD_NAME/proxy/
Hello Kubernetes bootcamp! | Running on: kubernetes-bootcamp-fb5c67579-756vw | v=1
$ 

4.3 查看容器日志

应用程序通常发送到STDOUT的任何内容都将成为Pod内容器的日志。

我们可以使用kubectl logs命令检索这些日志。注意此时并不需要指定容器名,因为在pod中只有一个容器。

$ kubectl logs $POD_NAME
Kubernetes Bootcamp App Started At: 2022-07-21T16:54:19.927Z | Running On:  kubernetes-bootcamp-fb5c67579-756vw 

Running On: kubernetes-bootcamp-fb5c67579-756vw | Total Requests: 1 | App Uptime: 142.394 seconds | Log Time: 2022-07-21T16:56:42.321Z
Running On: kubernetes-bootcamp-fb5c67579-756vw | Total Requests: 2 | App Uptime: 257.708 seconds | Log Time: 2022-07-21T16:58:37.635Z
$ 

4.4 在容器上执行命令

一旦Pod启动并运行,我们就可以直接在容器上执行命令。为此,我们使用exec命令并使用Pod的名称作为参数。先列出环境变量:

kubectl exec $POD_NAME——env

k8s 查看节点,云原生,云原生,kubernetes,docker,K8s实战,K8s入门教学

再次值得一提的是,容器本身的名称可以省略,因为在Pod中只有一个容器。

接下来让我们在Pod的容器中启动一个bash会话:

kubectl exec -ti $POD_NAME——bash

我们现在在容器上有一个开放的控制台,我们可以在其中运行我们的NodeJS应用程序。应用程序的源代码在server.js文件中:

 cat server.js

k8s 查看节点,云原生,云原生,kubernetes,docker,K8s实战,K8s入门教学

通过运行curl命令来检查应用程序是否启动:

root@kubernetes-bootcamp-fb5c67579-756vw:/# curl localhost:8080
Hello Kubernetes bootcamp! | Running on: kubernetes-bootcamp-fb5c67579-756vw | v=1

这里我们使用localhost,是因为我们在NodeJS Pod中执行命令。

接着关闭容器连接即可,exit。

学习总结

1、Pod 是一组一个或多个应用程序容器(例如 Docker),包括共享存储(卷), IP 地址和有关如何运行它们的信息。
2、如果它们紧耦合并且需要共享磁盘等资源,这些容器应在一个 Pod 中编排。
3、工作节点是 Kubernetes 中的负责计算的机器,可能是VM或物理计算机,具体取决于集群。多个 Pod 可以在一个工作节点上运行。文章来源地址https://www.toymoban.com/news/detail-793974.html

到了这里,关于【云原生|K8s系列第4篇】:实战查看Pod和工作节点的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【云原生|K8s系列第1篇】:K8s的基础概念、组件架构及实战安装

    首先,K8s并不是一个传统意义上的 PaaS平台即服务的工具,它充分给使用者提供了很多很多选择的空间。 不限制支持的应用程序类型,K8s并不插手应用程序框架, 也不限制支持的语言 (如 Java, Python, Ruby 等),只要应用符合 12 因素即可。也就是说,只需要应用可以在容器中运行

    2024年02月03日
    浏览(76)
  • 【云原生 | Kubernetes 系列】K8s 实战 管理 Secret 详解

    Secret 是一种包含少量敏感信息例如密码、令牌或密钥的对象。 这样的信息可能会被放在 Pod 规约中或者镜像中。 用户可以创建 Secret,同时系统也创建了一些 Secret。 一个 Secret 可以包含 Pod 访问数据库所需的用户凭证。 例如,由用户名和密码组成的数据库连接字符串。 你可

    2024年02月02日
    浏览(65)
  • 【云原生 | Kubernetes 系列】K8s 实战 如何给应用注入数据

    前面我们已经一起学习了很多的东西了,本篇文章,我们将一起学习,如何给应用注入数据,当然,本篇文章不会讲解全部知识点,而是带领大家,一起学习如何对我们的项目进行相关的配置和设置。 创建 Pod 时,可以为其下的容器设置启动时要执行的命令及其参数。如果要

    2024年02月02日
    浏览(69)
  • k8s节点pod驱逐、污点标记

    一、设置污点,禁止pod被调度到节点上 kubectl cordon k8s-node-145  设置完成后,可以看到该节点附带了 SchedulingDisabled 的标记 二、驱逐节点上运行的pod到其他节点 kubectl drain --ignore-daemonsets --delete-emptydir-data k8s-node-145  显示被驱逐的 pod  三、去除污点,允许 pod 调度到节点上

    2024年02月11日
    浏览(47)
  • k8s 查看加入主节点命令 k8s重新查看加入节点命令 k8s输入删除,重新查看加入命令 kuberadm查看加入节点命令

    1. 使用kuberadm 安装成功后,clear清除了屏幕数据,加入命令无法查看,使用如下, 重新查看node如何加入主节点命令 :  2. 画圈的全部是,都复制 ,在node节点 输入命令即可如下:    输入命令后的结果:  3. 总结: 安装成功后,先复制下 加入主节点的命令

    2024年02月11日
    浏览(58)
  • k8s 查看 pod 网段

    查看当前k8s集群中 pod 和 service 网段信息          

    2024年02月16日
    浏览(37)
  • 【k8s】K8S中的cordon、uncordon和drain 冻结节点、驱离pod

    Kubernetes(K8s)中使用Kubectl 命令行工具管理 Kubernetes 集群。 kubectl 在 $HOME/.kube 目录中查找一个名为 config 的配置文件。 可以通过设置 KUBECONFIG 环境变量或设置 --kubeconfig 参数来指定其它 kubeconfig 文件。本文主要介绍Kubernetes(K8s)中kubectl cordon, drain, uncordon 常用命令。 1、Kubectl语法

    2024年03月22日
    浏览(75)
  • 【云原生】k8s的pod基础(上)

    pod是kubernetes中最小的资源管理组件 ,Pod也是最小化运行容器化应用的资源对象。一 个Pod代表着集群中运行的一个进程 。kubernetes中其他大多数组件都是用绕着Pod来进行支撑和扩展Pod功能的,例如,用于管理pod运行的StatefulSet和Deploment等控制器对象,用于暴露pod应用的service和

    2024年02月11日
    浏览(44)
  • k8s快速查看pod对应的容器

    环境: centos 7.6 k8s 1.20 我们知道,在k8s中最小基本单位是pod,而一个pod里面可以封装一个或多个容器,而在宿主机上容器的名字并不是pod的名字,所以,下面的方式可以快速的查看一个pod里面对应宿主机哪些容器:

    2024年02月07日
    浏览(48)
  • 【Kubernetes】K8s 查看 Pod 的状态

    NAME :Pod 的名称。 READY :代表 Pod 里面有几个容器,前面是启动的,后面是总数, 1 / 1 1/1 1/1 。 STATUS :就是当前 Pod 状态,最常见的就是 Running 正在运行,最期望的状态,只要不是 Running 的就说明有问题,就算是 Running 的就不一定没有问题。 状态 说明 Pending 挂起 在执行创建

    2024年01月15日
    浏览(96)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包