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

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

    • 1、查看 Pod 列表
    • 2、 查看 Pod 的详细信息
    • 3、创建 Pod
    • 4、删除 Pod
    • 5、获取 Pod 日志
    • 6、进入 Pod 执行命令
    • 7、暂停和启动 Pod
    • 8、改变 Pod 副本数量
    • 9、查看当前部署中使用的镜像版本
    • 10、滚动更新 Pod
    • 11、导出 、导入Pod 的配置
      • 1、导出配置到文件:
      • 2、导入配置文件到集群:
    • 12、查看 Pod 的 CPU、内存 使用情况
    • 13、端口转发


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

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

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

1、查看 Pod 列表

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

kubectl get pods

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

在这里插入图片描述

2、 查看 Pod 的详细信息

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

kubectl describe pod <pod_name>kubectl describe pod nginx-deployment-544dc8b7c4-ds6b5

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

在这里插入图片描述

3、创建 Pod

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

 kubectl create --help

在这里插入图片描述

在这里插入图片描述

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 会自动重启容器)

在这里插入图片描述

2、方式二

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

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

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

在这里插入图片描述

4、删除 Pod

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

kubectl delete pod <pod_name>kubectl delete pod my-nginx-deployment-56b7d44759-9sdr2

在这里插入图片描述
这将删除指定名称的 Pod,因为前面指定了副本数为2,删除后会自动重建。

在这里插入图片描述

5、获取 Pod 日志

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

kubectl logs <pod_name>kubectl logs my-nginx-deployment-56b7d44759-mm7gw

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

在这里插入图片描述

6、进入 Pod 执行命令

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

kubectl exec -it <pod_name> -- /bin/bashkubectl exec -it my-nginx-deployment-56b7d44759-mm7gw -- /bin/bash

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

在这里插入图片描述

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 的运行。

在这里插入图片描述

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

在这里插入图片描述

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 容器的镜像版本。

在这里插入图片描述

10、滚动更新 Pod

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

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

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

在这里插入图片描述

11、导出 、导入Pod 的配置

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

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

1、导出配置到文件:

1、语法
kubectl get pod <pod_name>  -o yaml > pod.yamlkubectl get deployment <deployment_name> -o yaml > deployment.yaml2、例子例子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 

在这里插入图片描述

在这里插入图片描述

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

kubectl apply -f nginx-deployment20240404.yaml kubectl apply -f my-pod.yaml

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

在这里插入图片描述

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

在这里插入图片描述
在这里插入图片描述

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 中运行的服务。

在这里插入图片描述

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

在这里插入图片描述

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。

在这里插入图片描述

在这里插入图片描述


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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/793887.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于Java+SpringBoot+Mybaties+layui+Vue+elememt 实习管理系统 的设计与实现

一.项目介绍 前台功能&#xff1a;用户进入系统可以实现首页&#xff0c;系统公告&#xff0c;个人中心&#xff0c;后台管理等功能进行操作 后台由管理员&#xff0c;实习单位&#xff0c;教师和学生&#xff0c;主要功能包括首页&#xff0c;个人中心&#xff0c;班级管理&am…

【C++学习】哈希的应用—位图与布隆过滤器

目录 1.位图1.1位图的概念1.2位图的实现3.位图的应用 2.布隆过滤器2.1 布隆过滤器提出2.2布隆过滤器概念2.3如何选择哈希函数个数和布隆过滤器长度2.4布隆过滤器的实现2.4.1布隆过滤器插入操作2.4.2布隆过滤器查找操作2.4.3 布隆过滤器删除 2.5 布隆过滤器优点2.6布隆过滤器缺陷…

Linux:make/makefile的使用

一、什么是makefile/make 会不会写makefile&#xff0c;从一个侧面说明了一个人是否具备完成大型工程的能力 一个工程中的源文件不计数&#xff0c;其按类型、功能、模块分别放在若干个目录中&#xff0c;makefile定义了一系列的 规则来指定&#xff0c;哪些文件需要先编译&am…

设置Chrome打开链接在新标签页显示

Chrome版本 版本 123.0.6312.106&#xff08;正式版本&#xff09; &#xff08;64 位&#xff09; 下面这两个页面都有设置按钮&#xff1a; https://www.google.com/?pli1或者https://www.google.com/?hlzh-CN 要先退出账号&#xff0c;要不然看不到右下角的 “设置” 。…

TCP/IP协议、HTTP协议和FTP协议等网络协议包简介

文章目录 一、常见的网络协议二、TCP/IP协议1、TCP/IP协议模型被划分为四个层次2、TCP/IP五层模型3、TCP/IP七层模型 三、FTP网络协议四、Http网络协议1、Http网络协议简介2、Http网络协议的内容3、HTTP请求协议包组成4、HTTP响应协议包组成 一、常见的网络协议 常见的网络协议…

vivado 配置存储器器件编程2

为双 QSPI (x8) 器件创建配置存储器文件 您可使用 write_cfgmem Tcl 命令来为双 QSPI (x8) 器件生成 .mcs 镜像。此命令会将配置数据自动拆分为 2 个独立 的 .mcs 文件。 注释 &#xff1a; 为 SPIx8 生成 .mcs 时指定的大小即为这 2 个四通道闪存器件的总大小。…

QA测试开发工程师面试题满分问答5: 内存溢出和内存泄漏问题

概念阐述 内存溢出&#xff08;Memory Overflow&#xff09;和内存泄漏&#xff08;Memory Leak&#xff09;是与计算机程序中的内存管理相关的问题&#xff0c;它们描述了不同的情况。 内存溢出是指程序在申请内存时&#xff0c;要求的内存超出了系统所能提供的可用内存资源…

SSM框架学习——Eclipse创建Spring MVC maven项目

Spring MVC项目创建 什么是Spring MVC Spring MVC是Spring内置的&#xff0c;实现了Web MVC设计模式的框架。 它解决了Web开发过程中很多的问题&#xff0c;例如参数接收、表单验证等。另外它采用松散耦合可插拔组件等结构&#xff0c;具有相对较高的灵活性和扩展性。 Spri…

vue创建项目下载动态路由v-for mounted websocket :style :class store使用说明

在Vue中创建一个项目&#xff0c;并整合动态路由、v-for、mounted生命周期钩子、WebSocket、:style、:class以及Vuex的store&#xff0c;涉及到多个Vue核心特性的使用。下面我将简要说明如何逐步整合这些特性。 1. 创建Vue项目 使用Vue CLI创建项目&#xff1a; 2. 配置动态路…

C++ 类(初篇)

类的引入 C语言中&#xff0c;结构体中只能定义变量&#xff0c;在C中&#xff0c;结构体内不仅可以定义变量&#xff0c;也可以定义函数。 而为了区分C和C我们将结构体重新命名成class去定义 类的定义 标准格式&#xff1a; class className {// 类体&#xff1a;由成员函…

【计算机网络】epoll

IO多路转接 - epoll 一、I/O多路转接之 epoll1. epoll 接口&#xff08;1&#xff09;epoll_create()&#xff08;2&#xff09;epoll_wait()&#xff08;3&#xff09;epoll_ctl() 2. epoll 原理3. epoll 的优点4. epoll 的使用5. epoll 的工作模式&#xff08;1&#xff09;水…

实验四 Java图形界面与事件处理(头歌)

实验四 Java图形界面与事件处理(头歌) 制作不易&#xff01;点个关注&#xff01;给大家带来更多的价值&#xff01; 目录 实验四 Java图形界面与事件处理(头歌) 制作不易&#xff01;点个关注&#xff01;给大家带来更多的价值&#xff01;代码如下&#xff1a; 代码如下&…

case语句

Oracle从入门到总裁:​​​​​​https://blog.csdn.net/weixin_67859959/article/details/135209645 CASE 语句的执行方式与 IF...THEN...ELSIF 语句的执行方式类似&#xff0c;但是它是通过一个表达式的值来决定执行哪个分支 CASE 选择器表达式 WHEN 条件 1 THEN 语句序列 …

Linux: linux常见操作指令

目录 01.ls 指令 02. pwd命令 03. cd 指令 04. touch指令 05.mkdir指令&#xff08;重要&#xff09; 06.rmdir指令 && rm 指令&#xff08;重要&#xff09; 07.man指令&#xff08;重要&#xff09; 07.cp指令&#xff08;重要&#xff09; 08.mv指令&#…

H.264 压缩与编解码原理

H.264 压缩与编解码原理 H.264 压缩与编解码原理H.264 简介视频编码的总体思路H.264 压缩技术帧内预测压缩什么是空间冗余&#xff1f;具体预测方法 帧间预测压缩什么是时间冗余&#xff1f;具体预测方法&#xff1a;运动估计 概念&#xff1a;Group of Pictures&#xff08;GO…

java-网络编程socket-聊天室-先导

这边我会简单介绍一下聊天室的组成部分,和思路的引导 涉及知识点 java 中异常处理机制 和 io流和网络编程socket 简单回顾异常机制 Java中的异常机制是一种用于处理程序运行期间出现的错误或异常情况的机制。这种机制允许程序员定义在特定情况下可能发生的错误&#xff0c;并…

mysql慢sql排查与分析

当MySQL遇到慢查询&#xff08;慢SQL&#xff09;时&#xff0c;我们可以通过以下步骤进行排查和优化&#xff1a; 标题开启慢查询日志&#xff1a; 确保MySQL的慢查询日志已经开启。通过查看slow_query_log和slow_query_log_file变量来确认。 如果没有开启&#xff0c;可以…

闻风丧胆的算法(二)

&#x1f308;个人主页&#xff1a;Rookie Maker &#x1f525; 系列专栏&#xff1a;算法 &#x1f3c6;&#x1f3c6;关注博主&#xff0c;随时获取更多关于IT的优质内容&#xff01;&#x1f3c6;&#x1f3c6; &#x1f600;欢迎来到我的代码世界~ &#x1f601; 喜欢的小…

小林coding图解计算机网络|基础篇01|TCP/IP网络模型有哪几层?

小林coding网站通道&#xff1a;入口 本篇文章摘抄应付面试的重点内容&#xff0c;详细内容还请移步&#xff1a; 文章目录 应用层(Application Layer)传输层(Transport Layer)TCP段(TCP Segment) 网络层(Internet Layer)IP协议的寻址能力IP协议的路由能力 数据链路层(Link Lay…

一文介绍回归和分类的本质区别 !!

文章目录 前言 1、回归和分类的本质 &#xff08;1&#xff09;回归&#xff08;Regression&#xff09;的本质 &#xff08;2&#xff09;分类&#xff08;Classification&#xff09;的本质 2、回归和分类的原理 &#xff08;1&#xff09;回归&#xff08;Regression&#x…