Kubernetes(k8s):精通 Pod 操作的关键命令

这篇具有很好参考价值的文章主要介绍了Kubernetes(k8s):精通 Pod 操作的关键命令。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


💖The Begin💖点点关注,收藏不迷路💖

Kubernetes 是一个强大的容器编排平台,其中的核心概念之一就是 Pod。Pod 是 Kubernetes 中最小的可部署单元,它由一个或多个容器组成,共享网络和存储资源。

在本篇博客中,我们将深入探讨 Kubernetes 集群中与 Pod 相关的一些重要命令,帮助更好地管理和调试的容器应用。

1、查看 Pod 列表

要查看集群中所有 Pod 的列表,可以使用以下命令:

kubectl get pods

此命令将列出当前命名空间中所有 Pod 的名称、状态、所在节点和创建时间等信息。

Kubernetes(k8s):精通 Pod 操作的关键命令,# Kubernetes,容器化与编排技术深度解析,kubernetes,容器,云原生,Pod 的关键命令,Kubernetes(k8s),运维

2、 查看 Pod 的详细信息

要查看特定 Pod 的详细信息,可以使用以下命令:

kubectl describe pod <pod_name>


kubectl describe pod nginx-deployment-544dc8b7c4-ds6b5

这将显示有关该 Pod 的更详细的信息,包括容器状态、事件、标签和注释等。

Kubernetes(k8s):精通 Pod 操作的关键命令,# Kubernetes,容器化与编排技术深度解析,kubernetes,容器,云原生,Pod 的关键命令,Kubernetes(k8s),运维

3、创建 Pod

可以使用 kubectl create --help 命令来查看关于 kubectl create 命令的帮助信息和可用选项。

 kubectl create --help

Kubernetes(k8s):精通 Pod 操作的关键命令,# Kubernetes,容器化与编排技术深度解析,kubernetes,容器,云原生,Pod 的关键命令,Kubernetes(k8s),运维

Kubernetes(k8s):精通 Pod 操作的关键命令,# Kubernetes,容器化与编排技术深度解析,kubernetes,容器,云原生,Pod 的关键命令,Kubernetes(k8s),运维

1、方式一

从 Kubernetes 版本 1.18 开始,kubectl create pod 命令已经不再建议使用,因为它创建的 Pod 缺少一些默认配置(如控制器)。

建议使用 kubectl run 或者编写 YAML 文件来创建 Pod。

如果想使用 kubectl 命令行直接创建一个简单的 Pod,可以使用 kubectl run 命令。例如:

kubectl run my-pod --image=nginx --restart=Never

这将创建一个名为 my-pod 的 Pod,使用 nginx 镜像, Never 表示当 Pod 终止后不会被自动重启。( --restart=Always 会自动重启容器)

Kubernetes(k8s):精通 Pod 操作的关键命令,# Kubernetes,容器化与编排技术深度解析,kubernetes,容器,云原生,Pod 的关键命令,Kubernetes(k8s),运维

2、方式二

创建 Deployment 时指定副本数量,使用 --replicas 标志。

kubectl create deployment my-nginx-deployment  --image=nginx --replicas=2

这将创建一个名为 my-nginx-deployment 的 Deployment,使用 nginx 镜像,并配置 Deployment 控制器以管理两个 Pod 副本。

Kubernetes(k8s):精通 Pod 操作的关键命令,# Kubernetes,容器化与编排技术深度解析,kubernetes,容器,云原生,Pod 的关键命令,Kubernetes(k8s),运维

4、删除 Pod

要删除一个 Pod,可以使用以下命令:

kubectl delete pod <pod_name>

kubectl delete pod my-nginx-deployment-56b7d44759-9sdr2

Kubernetes(k8s):精通 Pod 操作的关键命令,# Kubernetes,容器化与编排技术深度解析,kubernetes,容器,云原生,Pod 的关键命令,Kubernetes(k8s),运维
这将删除指定名称的 Pod,因为前面指定了副本数为2,删除后会自动重建。

Kubernetes(k8s):精通 Pod 操作的关键命令,# Kubernetes,容器化与编排技术深度解析,kubernetes,容器,云原生,Pod 的关键命令,Kubernetes(k8s),运维

5、获取 Pod 日志

要查看 Pod 的日志,可以使用以下命令:

kubectl logs <pod_name>

kubectl logs my-nginx-deployment-56b7d44759-mm7gw

此命令将打印出指定 Pod 的日志。

Kubernetes(k8s):精通 Pod 操作的关键命令,# Kubernetes,容器化与编排技术深度解析,kubernetes,容器,云原生,Pod 的关键命令,Kubernetes(k8s),运维

6、进入 Pod 执行命令

要在 Pod 内部执行命令,可以使用以下命令:

kubectl exec -it <pod_name> -- /bin/bash

kubectl exec -it my-nginx-deployment-56b7d44759-mm7gw -- /bin/bash

这将在指定的 Pod 内部启动一个交互式的 shell,允许执行命令进行调试或查看状态。

Kubernetes(k8s):精通 Pod 操作的关键命令,# Kubernetes,容器化与编排技术深度解析,kubernetes,容器,云原生,Pod 的关键命令,Kubernetes(k8s),运维

7、暂停和启动 Pod

从 Kubernetes 版本 1.20 开始,kubectl pause 和 kubectl unpause 命令已经不再推荐使用,并且在较新的版本中已被移除。

这是因为这两个命令不再被视为最佳实践,因为它们直接修改了 Pod 的状态,而且可能会引起一些不必要的混淆和意外行为。

相反,推荐的做法是使用更高级的控制器,如 Deployment、StatefulSet、DaemonSet 等,来管理 Pod 的生命周期。通过更新这些控制器的 Pod 模板来控制 Pod 的启动和停止,可以更加灵活地管理应用程序的部署和维护。

1.20 之前的低版本:

要暂停一个 Pod,可以使用以下命令:

kubectl pause pod <pod_name>

要继续一个暂停的 Pod,可以使用以下命令:

kubectl unpause pod <pod_name>

较新的版本(改变 Pod 副本数量):

在 Kubernetes 中,没有直接的 stop 命令来停止 Pod。通常,可以通过删除 Pod 、副本数量缩减来实现停止。

缩放 Deployment:如果您想停止一个 Deployment 下的所有 Pod,可以使用 kubectl scale 命令来将副本数量缩减为 0。例如:

kubectl scale --replicas=0 deployment/<deployment-name>

kubectl delete pod <pod-name>

如:将名为 my-nginx-deployment 的部署的副本数量缩减为 0,

kubectl scale --replicas=0 deployment/my-nginx-deployment

这将把名为 nginx 的部署中的所有 Pod 的副本数量缩减为 0,从而停止所有 my-nginx-deployment 的运行。

Kubernetes(k8s):精通 Pod 操作的关键命令,# Kubernetes,容器化与编排技术深度解析,kubernetes,容器,云原生,Pod 的关键命令,Kubernetes(k8s),运维

8、改变 Pod 副本数量

要改变 Deployment 或 ReplicaSet 中 Pod 的副本数量,可以使用以下命令:

1、语法
kubectl scale deployment <deployment_name> --replicas=<replica_count>

2、例子:将 nginx-deployment副本数从2增加至3个

kubectl scale deployment nginx-deployment --replicas=3

Kubernetes(k8s):精通 Pod 操作的关键命令,# Kubernetes,容器化与编排技术深度解析,kubernetes,容器,云原生,Pod 的关键命令,Kubernetes(k8s),运维

9、查看当前部署中使用的镜像版本

1、语法,<deployment_name> 为要查询的 Deployment 的实际名称
kubectl get deployment <deployment_name> -o=jsonpath='{.spec.template.spec.containers[0].image}'


2、例子:查看 nginx-deployment 中正在使用的 nginx 容器的镜像版本
kubectl get deployment nginx-deployment -o=jsonpath='{.spec.template.spec.containers[0].image}'

这将返回 nginx-deployment 中正在使用的 nginx 容器的镜像版本。

Kubernetes(k8s):精通 Pod 操作的关键命令,# Kubernetes,容器化与编排技术深度解析,kubernetes,容器,云原生,Pod 的关键命令,Kubernetes(k8s),运维

10、滚动更新 Pod

使用 kubectl set image 命令来更新 Deployment 中的容器镜像。

如把目前的nginx-deployment 使用的nginx版本更新为nginx:1.22.1版本。

kubectl set image deployment/nginx-deployment nginx=nginx:1.22.1

Kubernetes(k8s):精通 Pod 操作的关键命令,# Kubernetes,容器化与编排技术深度解析,kubernetes,容器,云原生,Pod 的关键命令,Kubernetes(k8s),运维

11、导出 、导入Pod 的配置

较新的 Kubernetes 版本中,–export 标志已被弃用。

要导出 Pod 的配置,可以使用 kubectl get 命令结合 --export 标志,并将输出保存到文件中。然后,可以使用 kubectl apply 命令将此配置重新导入到集群中。以下是示例:

1、导出配置到文件:

1、语法
kubectl get pod <pod_name>  -o yaml > pod.yaml

kubectl get deployment <deployment_name> -o yaml > deployment.yaml

2、例子

例子1:导出 my-pod 的配置到文件 my-pod.yaml
kubectl get pod my-pod  -o yaml >my-pod.yaml


例子2:获取名为 nginx-deployment 的 Deployment 的 YAML 配置,并将其保存到名为 nginx-deployment20240404.yaml 的文件中。

kubectl get deployment nginx-deployment -o yaml > nginx-deployment20240404.yaml 

Kubernetes(k8s):精通 Pod 操作的关键命令,# Kubernetes,容器化与编排技术深度解析,kubernetes,容器,云原生,Pod 的关键命令,Kubernetes(k8s),运维

Kubernetes(k8s):精通 Pod 操作的关键命令,# Kubernetes,容器化与编排技术深度解析,kubernetes,容器,云原生,Pod 的关键命令,Kubernetes(k8s),运维

2、导入配置文件到集群:

kubectl apply -f nginx-deployment20240404.yaml 

kubectl apply -f my-pod.yaml

这将根据 yaml 文件中的配置创建或更新 Pod。

Kubernetes(k8s):精通 Pod 操作的关键命令,# Kubernetes,容器化与编排技术深度解析,kubernetes,容器,云原生,Pod 的关键命令,Kubernetes(k8s),运维

12、查看 Pod 的 CPU、内存 使用情况

## 所有
kubectl top pods

##查看特定命名空间中 Pod 
kubectl top pod <pod-name> --namespace=<namespace>

kubectl top pods -n=default
kubectl top pod  nginx-deployment-78f585888c-dnd2r -n=default
kubectl top pod  nginx-deployment-78f585888c-dnd2r --namespace=default

Kubernetes(k8s):精通 Pod 操作的关键命令,# Kubernetes,容器化与编排技术深度解析,kubernetes,容器,云原生,Pod 的关键命令,Kubernetes(k8s),运维
Kubernetes(k8s):精通 Pod 操作的关键命令,# Kubernetes,容器化与编排技术深度解析,kubernetes,容器,云原生,Pod 的关键命令,Kubernetes(k8s),运维

13、端口转发

在 Kubernetes 中,可以使用 kubectl port-forward 命令来将本地端口与 Pod 中的端口进行转发。

这对于调试和测试非常有用,例如在本地机器上访问运行在 Kubernetes 集群中的 Pod。

kubectl port-forward <pod-name> <local-port>:<pod-port> --namespace=<namespace>

其中:

<pod-name> 是要转发的 Pod 的名称。
<local-port> 是本地主机上用于转发流量的端口。
<pod-port> 是要转发到 Pod 中的端口。
<namespace> 是 Pod 所在的命名空间。

1、例如:将名为 my-pod 的 Pod 中的端口 80 转发到本地主机上的端口 9090。

kubectl port-forward my-pod 9090:80

本地主机的端口 9090 将会与 Pod 中的端口 80 进行绑定。现在,可以通过访问 http://localhost:9090 来访问 Pod 中运行的服务。

Kubernetes(k8s):精通 Pod 操作的关键命令,# Kubernetes,容器化与编排技术深度解析,kubernetes,容器,云原生,Pod 的关键命令,Kubernetes(k8s),运维

只能在本地访问,不能在浏览器访问

Kubernetes(k8s):精通 Pod 操作的关键命令,# Kubernetes,容器化与编排技术深度解析,kubernetes,容器,云原生,Pod 的关键命令,Kubernetes(k8s),运维

2、如果转发到主机的 IP 地址而不是 localhost,你可以通过指定 --address 或 -a 参数来指定要监听的地址。

kubectl port-forward <pod-name> <local-port>:<pod-port> --address <host-ip>

kubectl port-forward my-pod 9090:80 --address 192.168.234.20

在浏览器即可访问192.168.234.20:9090。

Kubernetes(k8s):精通 Pod 操作的关键命令,# Kubernetes,容器化与编排技术深度解析,kubernetes,容器,云原生,Pod 的关键命令,Kubernetes(k8s),运维

Kubernetes(k8s):精通 Pod 操作的关键命令,# Kubernetes,容器化与编排技术深度解析,kubernetes,容器,云原生,Pod 的关键命令,Kubernetes(k8s),运维文章来源地址https://www.toymoban.com/news/detail-851276.html


💖The End💖点点关注,收藏不迷路💖

到了这里,关于Kubernetes(k8s):精通 Pod 操作的关键命令的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 【精品】kubernetes(K8S)集群top命令监控 Pod 度量指标

    提示:做到举一反三就要学会使用help信息 找出标签是name=cpu-user的Pod,并过滤出使用CPU最高的Pod,然后把它的名字写在已经存在的/opt/cordon.txt文件里 了解pod指标,主要需要关注,CPU与内存占用率;生产环境,可能有几十个pod,我们为了使其便于快速检索到需要的pod,可以学会

    2024年02月16日
    浏览(18)
  • 【云原生 | Kubernetes 系列】K8s 实战 如何给应用注入数据 II 将pod数据传递给容器

    在上一篇文章中,我们学习了针对容器设置启动时要执行的命令和参数、定义相互依赖的环境变量、为容器设置环境变量,三种设置方式,本篇文章,我们将继续学习数据的传递。 有两种方式可以将 Pod 和 Container 字段传递给运行中的容器: 环境变量 卷文件 这两种呈现 Pod

    2024年01月25日
    浏览(37)
  • Java操作k8s api示例:使用kubeconfig文件认证;获取所有pod;获取pod内应用容器的启动日志

    公司准备将应用容器化部署,先使用了华为云的 Kubernetes 服务,后面又使用阿里云的 Kubernetes 服务。并短期一个月内无法判断走哪个云商。而作为一个在公司内部用于应用发布,部署的应用。在对接完华为云的 Kubernetes 服务 Api 后。再对接阿里云发现阿里云并没用像华为云一

    2023年04月09日
    浏览(28)
  • 【Kubernetes】K8s 查看 Pod 的状态

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

    2024年01月15日
    浏览(46)
  • k8s 多容器pod进入指定容器

    kubectl exec -it prometheus-prometheus-server-697cccff9c-qtrf7 -c prometheus-server sh

    2024年02月14日
    浏览(25)
  • K8S | 容器和Pod组件

    对比软件安装和运行; 作为研发人员,通常自己电脑的系统环境都是非常复杂,在个人的习惯上,是按照下图的模块管理电脑的系统环境; 对于「基础设施」、「主机操作系统」、「系统软件」来说,通常只做配置修改; 对于自行安装的软件环境来说,个人通常这样分类:

    2024年02月11日
    浏览(18)
  • kubernetes(k8s) pod(资源限制、基础概念)

    目录  一、资源限制 1、概念 1.2、Pod和容器的资源请求和限制 1.3、CPU资源单位 1.4、内存资源单位 1.5、CPU和内存的Requests和Limits的特点 1.6、案例 二、pod 的两种使用方式 三、pod 资源共享 四、底层容器Pause 1、pause 共享资源 1.1、网络 1.2、存储 1.3、小结 2、Pause主要功能 3、Pod

    2024年02月05日
    浏览(30)
  • Kubernetes(k8s)核心资源解析:Pod详解

    💖The Begin💖点点关注,收藏不迷路💖 Pod是Kubernetes中最小的调度单元,它可以包含一个或多个容器。Pod中的所有容器共享网络和存储卷,它们一起运行在同一个节点上。Pod提供了一种抽象层,使得容器可以作为一个逻辑单元来管理。 Pod中的容器共享IP地址、端口空间和存储

    2024年04月11日
    浏览(30)
  • K8s Pod状态与容器探针

    Pod创建过程如上图所示,首先用户向apiserver发送创建pod的请求,apiserver收到用于创建pod请求后,对应会对该用户身份信息进行验证,该用户是否是合法的用户,是否具有创建pod的权限,如果能够通过apiserver的验证,则进行下一步,对用户提交的资源进行准入控制,所谓准入控

    2024年02月07日
    浏览(52)
  • k8s pod 容器间测试接口

    1、配置k8s 详细的配置参考官网 2、获取pod节点PODID信息 3、进入到pod容器内部 4、安装CURL 5、调用测试接口 6、查看调用工程的Pod的日志

    2024年02月12日
    浏览(189)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包