当前位置: 首页 > article >正文

Kubernetes对象基础操作

基础操作

文章目录

  • 基础操作
    • 一、创建Kubernetes对象
      • 1.使用指令式命令创建Deployment
      • 2.使用指令式对象配置创建Deployment
      • 3.使用声明式对象配置创建Deployment
    • 二、操作对象的标签
      • 1.为对象添加标签
      • 2.修改对象的标签
      • 3.删除对象标签
      • 4.操作具有指定标签的对象
    • 三、操作名称空间
    • 四、kubectl常用命令

一、创建Kubernetes对象

在master节点操作

1.使用指令式命令创建Deployment

kubectl create deployment nginx --image nginx:1.14.2//基于nginx镜像创建deployment
kubectl get deployment	//查看该deployment是否创建成功,可以发现存在了一个副本
kubectl get pod		//查看pod进行验证kubectl delete deployment nginx		//删除对象
kubectl get deployment		//再次验证kubectl get pod

在这里插入图片描述

为什么创建deployment后会默认生成pod因为当你创建一个Deployment时,实际上是告诉Kubernetes(一个容器编排平台)你需要运行多少个实例(副本)的应用程序
k8s为了去运行应用程序 会默认生成pod以运行

2.使用指令式对象配置创建Deployment

vi nginx-deployment.yaml# 必需字段,声明对象使用的API版本
apiVersion: apps/v1
# 必需字段,声明要创建的对象的类别
kind: Deployment
# 必需字段,定义对象的元信息,包括对象名称、使用的标签等
metadata:name: nginx-deployment
# 必需字段,声明对象的期望状态,如使用的镜像、副本数等
spec:selector:matchLabels:app: nginxreplicas: 3    # 运行3个与该模板匹配的Podtemplate:metadata:labels:app: nginxspec:containers:- name: nginximage: nginx:1.14.2ports:- containerPort: 80kubectl create -f nginx-deployment.yaml //基于yaml配置文件创建Deploymentkubectl get deployment		//按照yaml文件的定义,创建了3个副本的deployment和podkubectl get pod		kubectl delete -f nginx-deployment.yaml 	//基于配置文件删除deploymentkubectl get deploymentkubectl get pod

在这里插入图片描述

可以看到在我删除deployment后 pod不会马上被删除 
这是因为 Pod 的生命周期中,Kubernetes 会先发送一个 SIGTERM 信号给 Pod 中的容器,通知它们开始优雅地退出,然后等待一段时间,最后才会发送 SIGKILL 信号强制销毁 Pod

3.使用声明式对象配置创建Deployment

vi nginx-deployment.yaml # 必需字段,声明对象使用的API版本
apiVersion: apps/v1
# 必需字段,声明要创建的对象的类别
kind: Deployment
# 必需字段,定义对象的元信息,包括对象名称、使用的标签等
metadata:name: nginx-deployment
# 必需字段,声明对象的期望状态,如使用的镜像、副本数等
spec:selector:matchLabels:app: nginxreplicas: 4    # 运行4个与该模板匹配的Podtemplate:metadata:labels:app: nginxspec:containers:- name: nginximage: nginx:1.14.2ports:- containerPort: 80kubectl apply -f nginx-deployment.yaml 	//应用修改后的配置kubectl get deploymentkubectl get podkubectl delete -f nginx-deployment.yaml kubectl get deploymentkubectl get pod

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

kubectl create即(指令式命令)和kubectl apply(声明式命令)的区别在于前者只能创建对象,而后者可以创建和更新对象。如果对象已经启动并运行,并且在yaml配置文件中做了更改,此时使用kubectl create命令将失败,但使用kubectl apply命令则会更新对象。kubectl apply只能创建或更新对象,不能删除对象,删除对象使用kubectl delete。

二、操作对象的标签

1.为对象添加标签

kubectl run nginx-a --image=nginx -l app=nginx	//创建名为nginx-a的Pod并为其添加标签app=nginxvi nginx-label.yaml 	//编写Pod配置文件nginx-label.yaml
apiVersion: v1
kind: Pod
metadata:name: nginx-blabels:                 # 为Pod设置两个Label    app: nginx    env: prod
spec:containers:- name: nginx          image: nginx
//此配置文件定义名为nginx-b的Pod并为其添加两个标签app=nginx、env=pod。kubectl create -f nginx-label.yaml 	//基于配置文件创建podkubectl get pod --show-labels	//添加标签后,查看pod的标签带上选项,可以发现标签kubectl label pod nginx-a env=test version=0.9	//对于现有的pod,可以直接使用kubectl label添加标签kubectl get pod -L env,version		//可以通过-L选项来查询指定键的标签

在这里插入图片描述

在这里插入图片描述

2.修改对象的标签

对于对象的现有标签,使用kubectl label命令加上–overwrite选项即可修改
kubectl label pod nginx-a env=debug --overwrite
kubectl get pod nginx-a --show-labels

在这里插入图片描述

3.删除对象标签

使用kubectl label命令时在标签键后面加一个减号即可删除对象的指定标签
 kubectl label pod nginx-a version-kubectl get pod nginx-a --show-labels

在这里插入图片描述

4.操作具有指定标签的对象

可以通过-l选项来筛选具有指定标签的对象
 kubectl delete pod -l app=nginxkubectl get pod 

在这里插入图片描述

三、操作名称空间

名称空间是什么:
名称空间(Namespace)用于将集群中的资源划分为逻辑组,以便更好地管理和隔离不同的项目 
例如,你可以在一个名称空间中有一个名为 "my-app" 的服务,而在另一个名称空间中也有一个名为 "my-app" 的服务,它们可以独立运行,不会相互干扰。
kubectl get namespaces	//查看集群中所有名称空间列表
NAME              STATUS   AGE
default           Active   54m		//默认名称空间
kube-node-lease   Active   54m		//用于与各节点相关的租约对象
kube-public       Active   54m		//主要由集群使用
kube-system       Active   54m		//系统创建对象所用的名称空间vi test-ns.yaml	//可以通过编写配置文件创建名称空间
apiVersion: v1 
kind: Namespace 
metadata: name: test-ns  kubectl create -f test-ns.yaml 		//执行基于yaml文件创建名称空间

在这里插入图片描述

 kubectl create namespace test2		//也可以通过命令直接创建名称空间kubectl get namespaces

在这里插入图片描述

//如果不明确指定,将操作默认的名称空间default。需要在特定的名称空间操作时,可以在kubectl命令中通过-n(或--namespace)选项指定。kubectl create -f nginx-deployment.yaml -n test1	//基于nginx的yaml文件在test1中创建kubectl get deployment -n test1	//查看该deployment及其关联的podkubectl delete -f nginx-deployment.yaml -n test1	//删除也需要指定名称空间

在这里插入图片描述

四、kubectl常用命令

1. 查询资源
(1) 通用查询
kubectl get [type] [name] [flags]
示例:
列出所有 Pod:
kubectl get pods查看某个命名空间的所有 Pod:
kubectl get pods -n <namespace>查看所有命名空间的 Pod:
kubectl get pods --all-namespaces查看某个 Deployment:
kubectl get deployment <deployment-name>(2) 详细描述资源
kubectl describe [type] [name]
示例:
查看 Pod 的详细信息:
kubectl describe pod <pod-name>(3) 使用 JSONPath 查询特定字段
kubectl get [type] -o jsonpath='{path}'
示例:
获取某命名空间的服务列表:
kubectl get service -n my-namespace -o jsonpath='{.items[*].metadata.name}'2. 创建资源
(1) 从 YAML 文件创建
kubectl create -f [filename]
示例:
从 nginx-deployment.yaml 文件创建资源:
kubectl create -f nginx-deployment.yaml(2) 直接在命令行创建
kubectl create [type] [name]
创建单个 Pod:
kubectl create deployment nginx --image=nginx(3) 使用自动扩容
kubectl autoscale deployment <deployment-name> --min=<min> --max=<max>
自动扩展 Deployment 名为 foo,最小 2,最大 10:
kubectl autoscale deployment foo --min=2 --max=103. 更新资源
(1) 使用 YAML 文件更新
kubectl apply -f [filename]
示例:
更新 Deployment:
kubectl apply -f deployment.yaml(2) 滚动更新镜像版本
kubectl set image deployment/<deployment-name> <container-name>=<new-image>
示例:
更新 Deployment 的镜像:
kubectl set image deployment/frontend www=image:v2(3) 强制替换资源
kubectl replace --force -f [filename]
示例:
强制替换 Pod 资源:
kubectl replace --force -f ./pod.json4. 删除资源
kubectl delete [type] [name] [flags]示例:
删除某个命名空间的 Pod:
kubectl delete pod <pod-name> -n <namespace>立即强制删除 Pod:
kubectl delete pod <pod-name> --grace-period=0 --force5. 与运行时交互
(1) 查看日志
kubectl logs [pod-name] [-c container-name] [--previous]
示例:
查看某个 Pod 的日志:
kubectl logs my-pod(2) 执行命令
kubectl exec [pod-name] [-c container-name] -- [command]
示例:
在容器内执行 ls 命令:
kubectl exec my-pod -c my-container -- ls /(3) 转发端口
kubectl port-forward [pod-name] [local-port]:[remote-port]
示例:
将本地端口 5000 转发到 Pod 的端口 6000:
kubectl port-forward my-pod 5000:60006. 其他常用操作
(1) 进入上下文或命名空间
kubectl config use-context <context-name>
kubectl config set-context --current --namespace=<namespace>
示例:
切换到默认命名空间 default:
kubectl config set-context --current --namespace=default(2) 查看集群信息
kubectl cluster-info
kubectl top pod
kubectl top node
示例:
查看集群节点的资源使用情况:
kubectl top node(3) 探索 API 资源
kubectl api-resources
示例:
列出所有支持的资源类型:
kubectl api-resources

相关文章:

Kubernetes对象基础操作

基础操作 文章目录 基础操作一、创建Kubernetes对象1.使用指令式命令创建Deployment2.使用指令式对象配置创建Deployment3.使用声明式对象配置创建Deployment 二、操作对象的标签1.为对象添加标签2.修改对象的标签3.删除对象标签4.操作具有指定标签的对象 三、操作名称空间四、…...

Java与代码审计-Java基础语法

Java基础语法 package com.woniuxy.basic;public class HelloWorld {//入口函数public static void main(String[] args){System.out.println("Hello World");for(int i0;i< args.length;i){System.out.println(args[i]);}} }运行结果如下: 但是下面那个没有参数…...

Xenium | 细胞邻域(Cellular Neighborhood)分析(fixed radius)

上节我们介绍了空间转录组数据分析中常见的细胞邻域分析&#xff0c;CN计算过程中定义是否为细胞邻居的方法有两种&#xff0c;一种是上节我们使用固定K最近邻方法(fixed k-nearest neighbors)定义细胞Neighborhood&#xff0c;今天我们介绍另外一种固定半径范围内(fixed radiu…...

Python:爬虫概念与分类

网络请求&#xff1a; https://www.baidu.com url——统一资源定位符 请求过程&#xff1a; 客户端&#xff0c;指web浏览器向服务器发送请求 请求&#xff1a;请求网址(request url)&#xff1b;请求方法(request methods)&#xff1b;请求头(request header)&…...

[Linux实战] Linux设备树原理与应用详解

Linux设备树原理与应用详解 一、设备树概述 1.1 什么是设备树 设备树&#xff08;Device Tree&#xff0c;简称DT&#xff09;是一种描述硬件资源的数据结构&#xff0c;它通过一种树状结构来描述系统硬件配置&#xff0c;包括CPU、内存、总线、外设等硬件信息。设备树最初在…...

用Nginx实现负载均衡与高可用架构(整合Keepalived)

前言 在分布式架构中&#xff0c;负载均衡和高可用是保障系统稳定性的两大核心能力。本文将深入讲解如何通过Nginx实现七层负载均衡&#xff0c;并结合Keepalived构建无单点故障的高可用架构。文末附完整配置模板&#xff01; 一、Nginx负载均衡实现方案 1. 核心原理 Nginx通…...

SQLMesh调度系统深度解析:内置调度与Airflow集成实践

本文系统解析SQLMesh的两种核心调度方案&#xff1a;内置调度器与Apache Airflow集成。通过对比两者的适用场景、架构设计和操作流程&#xff0c;为企业构建可靠的数据分析流水线提供技术参考。重点内容包括&#xff1a; 内置调度器的轻量级部署与性能优化策略Airflow集成的端到…...

Excel 中 INDEX 和 VLOOKUP 的对比

INDEX 和 VLOOKUP 都是 Excel 中常用的查找函数&#xff0c;但它们的用途和灵活性有所不同。 1. 相同点 均可用于查找数据&#xff1a;都能根据某个条件返回目标值。 支持精确匹配&#xff1a;均可使用 0 或 FALSE 进行精确匹配。 2. 不同点 特性VLOOKUPINDEX MATCH查找方向…...

Multism TL494仿真异常

仿真模型如下&#xff1a;开关频率少了一半&#xff0c;而且带不动负载&#xff0c;有兄弟知道为什么吗 这里写自定义目录标题 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题&#xff0c;有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码…...

基于 Trae 的超轻量级前端架构设计与性能优化实践

一、技术背景与选型动因 在单页应用(SPA)复杂度指数级增长的今天&#xff0c;传统框架在千级列表渲染场景下普遍存在首屏延迟(>1.5s)、内存占用过高(>200MB)等问题。基于对 Webpack Bundle Analyzer 的长期观察&#xff0c;我们发现核心问题集中在&#xff1a; • 类组件…...

算法练习(队列)

队列 单向队列 1. 定义一个队列 Queue<Integer> q new LinkedList<>(); Queue<Character> q new LinkedList<>();2. 入队列 q.offer(1); q.offer(2); // 从队尾入队列 q.add();3. 出队列 q.poll() // 从队头出队列&#xff0c;并将删除的元素…...

HarmonyOS NEXT开发进阶(十五):日志打印 hilog 与 console.log 的区别

文章目录 一、前言二、两者区别对比三、HiLog 详解四、拓展阅读 一、前言 在日常开发阶段&#xff0c;日志打印是调试程序非常常用的操作&#xff0c;在鸿蒙的官方文档中介绍了hilog这种方式&#xff0c;前端转过来的开发者发现console.log也可以进行日志打印&#xff0c;而且…...

【差分隐私相关概念】差分隐私中的稀疏向量技术

差分隐私中的稀疏向量技术&#xff08;Sparse Vector Technique, SVT&#xff09; 稀疏向量技术&#xff08;SVT&#xff09;是差分隐私中的一种高效机制&#xff0c;专用于处理稀疏高影响查询的场景。其核心思想是&#xff1a;当面对大量查询时&#xff0c;仅对其中“显著超过…...

快速幂算法还有用吗?——从内置函数到高性能计算的深度解析

博主在学习过程中遇到了一个疑问&#xff0c;既然C语言中有内置函数pow&#xff0c;那为什么还需要算法思想中的快速幂算法呢&#xff1f;下面将会讲解快速幂算法在特定场景下依然非常有用&#xff0c;具体原因如下&#xff1a; 目录 1. 精度与整数运算 2. 性能对比 3. 应用场…...

开源测试用例管理平台

不可错过的10个开源测试用例管理平台&#xff1a; PingCode、TestLink、Kiwi TCMS、Squash TM、FitNesse、Tuleap、Robot Framework、SpecFlow、TestMaster、Nitrate。 开源测试用例管理工具提供了一种透明、灵活的解决方案&#xff0c;使团队能够在不受限的情况下适应具体的测…...

vue 权限应用

目录 一、系统菜单栏权限 二、系统页面按钮权限 在企业开发中&#xff0c;不同的用户所扮演的角色不一样&#xff0c;角色拥有权限&#xff0c;所以用户拥有角色&#xff0c;就会有角色对应的权限。例如&#xff0c;张三是系统管理员角色&#xff0c;登录后就拥有整个系统的…...

鸿蒙HarmonyOS NEXT设备升级应用数据迁移流程

数据迁移是什么 什么是数据迁移&#xff0c;对用户来讲就是本地数据的迁移&#xff0c;终端设备从HarmonyOS 3.1 Release API 9及之前版本&#xff08;单框架&#xff09;迁移到HarmonyOS NEXT&#xff08;双框架&#xff09;后保证本地数据不丢失。例如&#xff0c;我在某APP…...

利用 PCI-Express 交换机实现面向未来的推理服务器

在数据中心系统的历史上&#xff0c;没有比被 Nvidia 选为其 AI 系统的组件供应商更高的赞誉了。 这就是为什么新兴的互连芯片制造商 Astera Labs 感到十分高兴&#xff0c;因为该公司正在 PCI-Express 交换机、PCI-Express 重定时器和 CXL 内存控制器方面与 Broadcom 和 Marv…...

Python调用手机摄像头检测火焰烟雾的三种方法

方法1&#xff1a;使用IP摄像头应用 OpenCV 1. 在手机上安装IP摄像头应用&#xff08;如IP Webcam for Android&#xff09; 2. 配置应用并启动服务器 3. 在Python中使用OpenCV连接 import cv2 import numpy as np # 手机IP摄像头URL&#xff08;替换为你的手机IP和端口…...

Python if else while for 学习笔记

一.if&#xff0c;else if语句用于根据条件执行代码块 else语句可与if语句结合&#xff0c;当if判断为假时执行else语句 x10 if x>5:print("x大于5") y3 if y>5:print("y大于5") else:print("y小于等于5")结果&#xff1a; 二.while循环…...

正则化是什么?

正则化&#xff08;Regularization&#xff09;是机器学习中用于防止模型过拟合&#xff08;Overfitting&#xff09;的一种技术&#xff0c;通过在模型训练过程中引入额外的约束或惩罚项&#xff0c;降低模型的复杂度&#xff0c;从而提高其泛化能力&#xff08;即在未见数据上…...

搜索-BFS

马上蓝桥杯了&#xff0c;最近刷了广搜&#xff0c;感觉挺有意思的&#xff0c;广搜题类型都差不多&#xff0c;模板也一样&#xff0c;大家写的时候可以直接套模板 这里给大家讲一个比较经典的广搜题-迷宫 题目问问能否走到 (n,m) 位置&#xff0c;假设最后一个点是我们的&…...

《边缘计算风云录:FPGA与MCU的算力之争》

点击下面图片带您领略全新的嵌入式学习路线 &#x1f525;爆款热榜 88万阅读 1.6万收藏 文章目录 **第一章&#xff1a;边城烽烟——数据洪流压境****第二章&#xff1a;寒铁剑匣——FPGA的千机变****第三章&#xff1a;枯木禅杖——MCU的至简道****第四章&#xff1a;双生契…...

R-GCN-Modeling Relational Data with GraphConvolutional Networks(论文笔记)

CCF等级&#xff1a;B 发布时间&#xff1a;2018年6月 25年3月31日交 目录 一、简介 二、原理 1.整体 2.信息交换与更新 2.1基分解 2.2块对角矩阵 3.实体分类或链接预测 3.1实体分类 3.2链接预测 三、结论和未来工作 一、简介 RGCN通过允许不同关系类型之间的信息…...

蓝桥杯第十六届模拟赛——基础细节考频分析

文章目录 前言一、STL函数二、日期问题三、质数与约数四、基本常识总结 前言 一、STL函数 #include< cmath > 详解floor函数、ceil函数和round函数 1.floor() 功能&#xff1a;把一个小数向下取整如果数是2.2 &#xff0c;那向下取整的结果就为2.000000如果数是-2.2 &…...

【C++初阶】----模板初阶

1.泛型函数 泛型编程&#xff1a;编写与类型无关的通用代码&#xff0c;是代码复用的一种手段。模板是泛型编程的基础。 2.函数模板 2.1函数模板的概念 函数模板代表了一个函数家族&#xff0c;该函数模板与类型无关&#xff0c;在使用时被参数化&#xff0c;根据实参类型…...

PyCharm操作基础指南

一、安装与配置 1. 版本选择 专业版&#xff1a;支持 Web 开发&#xff08;Django/Flask&#xff09;、数据库工具、科学计算等&#xff08;需付费&#xff09;。 社区版&#xff1a;免费&#xff0c;适合纯 Python 开发。 2. 安装步骤 访问 JetBrains 官网 下载对应版本。…...

Pycharm(七):几个简单案例

一.剪刀石头布 需求&#xff1a;和电脑玩剪刀石头布游戏 考察点&#xff1a;1.随机数&#xff1b;2.判断语句 import random # numrandom.randint(1,3) # print(num) # print(**30) #1.录入玩家手势 playerint(input(请输入手势&#xff1a;&#xff08;1.剪刀 2.石头 3&…...

Android并发编程:线程池与协程的核心区别与最佳实践指南

1. 基本概念对比 特性 线程池 (ThreadPool) 协程 (Coroutine) 本质 Java线程管理机制 Kotlin轻量级并发框架 最小执行单元 线程(Thread) 协程(Coroutine) 创建开销 较高(需分配系统线程资源) 极低(用户态调度) 并发模型 基于线程的抢占式调度 基于协程的协作式调度 2. 核心差异…...

MySQL内存使用率高问题排查与解决方案:

目录标题 **一、问题现象****二、核心排查步骤****1. 参数检查****2. 内存使用分析****3. 存储过程/函数/视图检查****4. 操作系统级检查** **三、解决方案****1. 调整MySQL配置****2. 关闭透明大页&#xff08;THP&#xff09;****3. 优化查询与存储过程****4. 硬件与环境优化…...