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/bash

kubectl 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.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 

在这里插入图片描述

在这里插入图片描述

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💖点点关注,收藏不迷路💖

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

车载电子电器架构 —— 软件下载

车载电子电器架构 —— 软件下载 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证明自己,无…

matlab中角度-弧度转化

在 MATLAB 中进行角度和弧度之间的转换可以使用内置的函数&#xff1a; 1. 将角度转换为弧度&#xff1a; matlab rad deg * pi / 180; 这里 deg 是你想要转换的角度值&#xff0c;pi 是 MATLAB 内置的圆周率常量。 2. 将弧度转换为角度&#xff1a; matlab…

端口映射如何测试?

端口映射是一项网络技术&#xff0c;用于将外部网络中的数据流量映射到内部网络中的特定端口或设备上。通过端口映射&#xff0c;可以实现远程访问内部网络中的设备或应用程序&#xff0c;使其能够在外部网络中得到访问。本文将介绍端口映射测试及其应用场景。 2. 【天联】组网…

MIT6.828实验:Xv6 and Unix utilities

2023MIT6.828 lab-1 官方地址 一、sleep 实验内容 调用sleep&#xff08;系统调用&#xff09;编写用户级别程序能暂停特定时常的系统滴答程序保存在user/sleep.c 实验过程 xv6的参数传递 查看官方文档提示的文件中&#xff0c;多采用如下定义&#xff1a; int main(in…

代码随想录算法训练营第三十天| 332.重新安排行程, 51. N皇后, 37. 解数独,总结

题目与题解 参考资料&#xff1a;回溯总结 332.重新安排行程 题目链接&#xff1a;332.重新安排行程 代码随想录题解&#xff1a;332.重新安排行程 视频讲解&#xff1a;带你学透回溯算法&#xff08;理论篇&#xff09;| 回溯法精讲&#xff01;_哔哩哔哩_bilibili 解题思路&a…

【随笔】Git 高级篇 -- 相对引用2(十三)

&#x1f48c; 所属专栏&#xff1a;【Git】 &#x1f600; 作  者&#xff1a;我是夜阑的狗&#x1f436; &#x1f680; 个人简介&#xff1a;一个正在努力学技术的CV工程师&#xff0c;专注基础和实战分享 &#xff0c;欢迎咨询&#xff01; &#x1f496; 欢迎大…

每日一题(leetcode287):寻找重复数--二分查找+思维

思路&#xff1a;看官方解答 class Solution { public:int findDuplicate(vector<int>& nums) {int nnums.size();int left1;int rightn-1;int ans-1;while(left<right){int mid(leftright)/2;int count0;for(int j0;j<n;j){if(nums[j]<mid){count;}}if(co…

小林coding图解计算机网络|基础篇03|Linux 系统是如何收发网络包的?

小林coding网站通道&#xff1a;入口 本篇文章摘抄应付面试的重点内容&#xff0c;详细内容还请移步&#xff1a;小林coding网站通道 文章目录 网络模型Linux 网络协议栈Linux 接收网络包的流程Linux发送网络包的流程为什么全部数据包只用一个结构体来描述呢发送网络数据的时候…

[HackMyVM]靶场Logan2

难度:Medium kali:192.168.56.104 靶机:192.168.56.146 端口扫描 ┌──(root㉿kali2)-[~/Desktop] └─# nmap 192.168.56.146 Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-04-04 19:41 CST Nmap scan report for 192.168.56.146 Host is up (0.000067s latency)…

0201基础集成与使用-微信支付-支付模块-项目实战

文章目录 一、前言二、springboot集成2.1 配置信息与配置类2.2 微信相关枚举信息2.3 工具类2.4 业务接口 三、演示-支付与退款结语 一、前言 下面我以微信支付v3为例&#xff0c;通过spirngboot集成到我们的项目中&#xff0c;不依赖其他第三方框架。当然适用简单项目&#xf…

软考--软件设计师(软件工程总结2)

目录 1.测试方法 2.软件项目管理 3.软件容错技术 4.软件复杂性度量 5.结构化分析方法&#xff08;一种面向数据流的开发方法&#xff09; 6.数据流图 1.测试方法 软件测试&#xff1a;静态测试&#xff08;被测程序采用人工检测&#xff0c;计算机辅助静态分析的手段&…

Unity开发之音效相关

目录 音频文件的导入 音频源相关 麦克风输入相关 获取麦克风设备信息 开始录制 获取音频数据用于存储或者传输 代码控制音频源 动态控制音效播放 示例 音频文件的导入 常用格式&#xff1a;wav,mp3,ogg,aiff Force To Mono(多声道转单声道)Normalize(强制为单声道&am…

C++入门 (2) >>引用>>内联函数>>auto关键字

1 引用 定义&#xff1a;给变量起别名。 方法&#xff1a;在类型后面加上&符号。 主要作用&#xff1a;代替函数传指针。 例&#xff1a; void test(int& a) //参数为int&类型 {a 10; }int main() {int m 3;int& z m; //给m起别名叫z&#xff0…

基于springboot+vue+Mysql的在线考试系统

开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;…

MySQL8,体验不一样的安装方式!

MySQL官网中下载YUM源rpm安装包。 1、把上面的rpm文件下载下来放到服务器上 #或者在linux系统中通过wget命令下载 wget http://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm2、下载完成后使用yum命令本地安装yum源 yum localinstall mysql80-community-rel…

Linux云计算之Linux基础3——Linux基本认识操作

1、终端 终端(terminal)&#xff1a;人和系统交互的必要设备&#xff0c;人机交互最后一个界面&#xff08;包含独立的输入输出设备&#xff09; 物理终端(console)&#xff1a;直接接入本机器的键盘设备和显示器虚拟终端(tty)&#xff1a;通过软件方式虚拟实现的终端。它可以…

IP-guard WebServer 任意文件读取漏洞复现

0x01 产品简介 IP-guard是由溢信科技股份有限公司开发的一款终端安全管理软件,旨在帮助企业保护终端设备安全、数据安全、管理网络使用和简化IT系统管理。 0x02 漏洞概述 由于IP-guard WebServer /ipg/static/appr/lib/flexpaper/php/view.php接口处未对用户输入的数据进行严…

VMamba: Visual State Space Model

VMamba: Visual State Space Model VMamba&#xff1a;视觉状态空间模型 论文链接&#xff1a;http://arxiv.org/abs/2401.10166 代码链接&#xff1a;https://github.com/MzeroMiko/VMamba 1、摘要 借鉴了最近引入的状态空间模型SSM&#xff0c;提出了Visual State Space M…

如何保证Redis的缓存和数据库中的数据的一致性?

Redis的缓存如何和数据库中的数据保持一致性&#xff1f; 我们都知道&#xff0c;Redis是一个基于内存的键值存储系统&#xff0c;数据完全存放在内存中&#xff0c;这使得它的读写速度远超传统的硬盘存储数据库。对于高访问频率、低修改率的数据&#xff0c;通过将它们缓存在…

动态规划:线性dp

1.最长公共子序列(LCS) dp[i][j]含义&#xff1a;序列Ai(a1-ai)和Bj(b1-bj)的最长公共子序列长度 分析两种情况&#xff1a; &#xff08;1&#xff09;当ai bj时&#xff0c;已经求得Ai-1和Bj-1的最长公共子序列 dp[i][j] dp[i-1][j-1] 1 &#xff08;2&#xff09;当…