k8s 资源管理

news2025/2/22 0:03:08

文章目录

  • 1. 资源管理介绍
  • 2. 资源管理方式
    • 2.1 命令式对象管理
      • Kubectl 命令
      • 资源对象类型
      • 子命令
      • 输出格式
      • namespace / pod的创建和删除演示
    • 2.2 命令式对象配置
    • 2.3 声明式对象配置
  • 3. kubectl 可以在 node 节点上运行吗?
  • 4. 使用推荐:三种方式应该怎么用?

1. 资源管理介绍

在 kubernetes 中,所有的内容都抽象为资源,用户需要通过操作资源来管理 kubernetes。

  1. kubernetes 的本质上就是一个集群系统,用户可以在集群中部署各种服务,所谓的部署服务,其实就是在 kubernetes 集群中运行一个个容器,并将指定的程序跑在容器中。
  2. Kubernetes 的最小管理单元是 pod,而不是容器,所以只能将容器放在 pod 中,而 kubernetes 一般也不会直接管理 pod,而是通过 pod 控制器来管理 pod。
  3. Pod 可以提供服务之后,就要考虑如何访问 pod 中服务,kubernetes 提供了 service 资源实现这个功能。
  4. 如果 pod 中程序的数据需要持久化,kubernetes 还提供了各种存储系统。

学习 kubernetes 的核心就是学习如何对集群中 pod、pod 控制器、service、存储等各种资源进行操作。

2. 资源管理方式

  1. 命令式对象管理:直接使用命令去操作 kubernetes 资源
    • kubectl run nginx-pod --image=nginx:1.17.1 --port=80
  2. 命令式对象配置:通过命令配置和配置文件去操作 kubernetes 资源
    • Kubectl create/path -f nginx-pod.yml
  3. 声明式对象配置:通过 apply 和配置文件去操作 kubernetes 资源
    • Kubectl apply -f nginx-pod.yml
类型操作对象适用环境优点缺点
命令式对象管理对象测试简单只能操作活动对象,无法审计、跟踪
命令式对象配置文件开发可以审计、跟踪项目大时,配置文件多,操作麻烦
声明式对象配置目录开发支持目录操作意外情况下难以调试

2.1 命令式对象管理

Kubectl 命令

Kubectl 是 kubernetes 集群的命令行工具,通过它能够对集群本身进行管理,并能够在集群上进行容器化应用的安装部署。
Kubectl 命令的语法如下:
Kubectl [command] [type] [name] [flags]

  • command:用来指定要对资源执行的操作,例如 create、get 以及 delete 等。
  • type:用来指定资源类型,资源类型是区分字母大小写的。用户可以以单数、复数以及缩略的形式指定资源类型,例如 pod、pods 或者 po 等。
  • name:用来指定资源的名称,资源名称也是区分字母大小写的。如果没有指定资源名称,则默认显示所有的资源。
  • flags:指定可选的参数。例如,可以使用 -s 或者 -server 参数,指定 Kubernetes API server 的地址和端口。

此外,用户可以通过kubectl help命令查找更多的帮助信息

kubectl get pods:查看所有 pod
kubectl get pod POD_NAME:查看某个 pod
kubectl get pod POD_NAME -o yaml:查看某个 pod,以 yaml 格式展示结果

资源对象类型

Kubernetes 中所有的内容都抽象为资源,可以通过kubectl api-resources查看
在这里插入图片描述

子命令

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

输出格式

默认情况下,kubectl 命令输出格式为纯文本。但是,用户可以通过-o或者--output选项来指定其他的输出格式。
在这里插入图片描述

namespace / pod的创建和删除演示

//创建一个namespace
[root@master ~]# kubectl create namespace kk
namespace/kk created

//获取namespace
[root@master ~]# kubectl get ns
NAME              STATUS   AGE
default           Active   2d22h
kk                Active   29s
kube-flannel      Active   2d22h
kube-node-lease   Active   2d22h
kube-public       Active   2d22h
kube-system       Active   2d22h

//在此namespace下创建并运行一个nginx的pod
[root@master ~]# kubectl run pod1 --image=nginx -n kk
pod/pod1 created

//查看新创建的pod
kubectl get pod1 -n kk

//删除指定pod
Kubectl delete pod pod-xxxxxx

//删除指定的namespace
[root@master ~]# kubectl delete ns kk
namespace "kk" deleted
  • default:所有未指定的 Namespace 的对象都会被分配在 default 命名空间。
  • kube-node-lease:集群节点之间的心跳维护,v1.13 开始引入。
  • kube-public:此命名空间的资源可以被所有人访问(包括未认证用户)。
  • kube-system:所有由kubernetes系统创建的资源都处于这个命名空间。

2.2 命令式对象配置

命令式对象配置就是使用命令配合配置文件一起来操作 kubernetes 资源

//创建一个nginxpod.yaml,内容如下
apiVersion: v1
kind: Namespace
metadata:
  name: kk
---

apiVersion: v1
kind: pod
metadata:
  name: nginxpod
  namespace: kk
spec:
  containers:
  - name: nginx-containers
    image: ngins:latest


//执行create命令,创建资源
[root@master ~]# kubectl create -f nginxpod.yaml 
//此时发现创建了两个资源对象,分别是namespace和pod


//执行get命令,查看资源
[root@master ~]# kubectl get -f nginxpod.yaml 
//这样就显示了两个资源对象的信息


//执行delete命令,删除资源
[root@master ~]# kubectl delete -f nginxpod.yaml 
//此时发现两个资源对象被删除了

总结:命令式对象配置的方式操作资源,可以简单的认为:命令 + yaml 配置文件(里面是命令需要的各种参数)

2.3 声明式对象配置

声明式对象配置跟命令式对象配置很相似,但是它只有一个命令 apply。

//首先执行一次kubectl  apply  -f  yaml文件,发现创建了资源
[root@master ~]# kubectl apply -f nginxpod.yaml 

//再执行一次kubectl  apply  -f   yaml文件,发现说资源没有变动
[root@master ~]# kubectl apply -f nginxpod.yaml 

总结:
其实声明式对象配置就是使用 apply 描述一个资源最终的状态(在 yaml 中定义状态)

使用 apply 操作资源:

  • 如果资源不存在,就创建,相当于kubectl create
  • 如果资源已存在,就更新,就相当于kubectl patch

3. kubectl 可以在 node 节点上运行吗?

Kubectl 的运行是需要进行配置的,它的配置文件是$HOME/.kube,如果想要在 node 节点运行此命令,需要将 master 上的.kube文件复制到 node 节点上,即在 master 节点上执行下面操作
scp -r HOME/.kube node1:HOME/

4. 使用推荐:三种方式应该怎么用?

  1. 创建/更新资源,使用声明式对象配置kubectl apply -f XXX.yaml
  2. 删除资源,使用命令式对象配置 kubectl delete -f XXX.yaml
  3. 查询资源,使用命令式对象管理`kubectl get(describe) 资源名称

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

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

相关文章

【王道计算机网络笔记】计算机网络体系结构-计算机网络体系结构与参考模型

文章目录计算机网络分层结构OSI参考模型TCP/IP参考模型5层参考模型5层参考模型的数据封装与解封装计算机网络分层结构 我们把计算机网络的各层及其协议的集合称为网络的体系结构(Architecture)。换言之,计算机网络的体系结构就是这个计算机网络及其所应完成的功能的…

Hash表实现原理

Hash表查找的本质就是:在创建记录表的时候,确定记录的key与其存储地址之间的关系f,当要查找keyk的记录时,通过关系 f 就可得到相应记录的地址而获取记录,从而免去了key的比较过程 我们把这个关系 f 称为Hash 函数&…

1.3 字符编码

文章目录1. 编码2. ASCII 字符集3. 字符编码发展4. Unicode 字符集5. 字符编码5.1 UTF-165.3 UTF-325.3 UTF-86. 文件编码转换7. 乱码问题1. 编码 计算机只能识别高低电平, 将高低电平用数字表示: 0表示低电压, 1表示高电平. 于是就创造出来二进制数, 一个二进制有 0 和 1, 两…

【网络工程】5、路由器介绍及配置实操

接上篇《4、企业级交换机配置》 之前我们通过eNSP完成了一个企业级交换机的配置实例,本篇我们继续来讲解网络设备——路由器的介绍,以及完成路由器的相关配置实操。 当我们申请了一条宽带后,一般都需要一台路由器来进行上网,那么…

SpringBoot项目创建及其核心设计思想

参考了很多相关博客: springboot怎么学? - 知乎 如何解读springboot 中约定大于配置、JPA是什么、咋用_打豆豆。的博客-CSDN博客 SpringBoot约定大于配置到底是什么意思?_zhupanlinch的博客-CSDN博客 SpringBoot约定大于配置的特性解读 & SpringBoot…

胶囊网络深入理解

胶囊网络的概念与理解 胶囊网络概述 人工神经元不应当追求神经元活动中的视角不变性,(使用单一的标量输出来总结一个局部池中的重要特征的检测器的活动)。而应当使用局部的胶囊,这些胶囊对其输入执行一些相当复杂的内部计算。然…

【Java】Java中时间的相关类(Date,SimpleDateFormat)

文章目录Date类SimpleDateFormat类Date类 Date是JDK提供的类,用来描述时间,使用无参构造创建的对象默认表示系统的当前时间,使用有参构造(指定的毫秒值)表示从时间原点(1970年)过了该参数值的时…

08_原始套接字

知识点1【原始套接字概述】 1、UDP封包格式 ​IP封包格式: Ethernet封包格式 TCP封包格式: ICMP封包格式:ping 知识点2【数据包的分析】 案例:网络分析器: 知识点2【混杂模式】接受数据(了解&#x…

win11+WSL2安装visdom

win11WSL2安装visdom环境配置下载visdom小小的修改运行visdom环境配置 Win11WSL2Ubuntu-18.04 下载visdom pip install visdom pip install --upgrade visdom conda install -c conda-forge visdom 小小的修改 \home\grass\miniconda3\envs\torch\lib\python3.8\site-pack…

[一篇读懂]C语言九讲:线性表应用

[一篇读懂]C语言九讲:线性表应用1. 与408关联解析及本节内容介绍1 与408关联解析2 本节内容介绍2. 线性表的顺序表示原理解析1 线性表线性表的定义线性表的特点2 线性表的顺序表示顺序表的定义顺序表优缺点顺序表插入操作顺序表删除操作动态分配3. 顺序表的初始化及…

微服务系列之单体架构

随笔 终于迎来了“微服务、云原生”系列文章,这个系列的文章的更新速度博主无法保证能够每个星期一篇,因为这个系列的难度比以往系列都要高(以往的系列就没有保证一个星期一更)。但是长时间不去写文章,自己可能会慢慢…

Keepalived+LVS部署

目录 一、环境准备 二、实验拓扑 三、部署LVS DR环境 四、LVS服务器配置keepalived 1、安装keepalived 2、修改lvs1服务器keepalived配置 3、修改lvs2服务器keepalived配置 五、客户端测试 1、负责均衡测试 2、LVS服务器高可用测试 一、环境准备 准备4台centos服务器…

学习日记(单元测试、反射、注解、动态代理)

文章目录学习日记(单元测试、反射、注解、动态代理)一、单元测试1. 单元测试实践2. JUnit 常用注解二、反射1. 反射获取类对象2. 反射获取构造器对象3. 反射获取成员变量对象4. 反射获取成员方法对象三、反射的作用举例1. 绕过编译阶段为集合添加数据2. …

基于生物地理学的优化算法(BBO)用于训练多层感知器(MLP)【多种算法进行比较】(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

java中的BigDecimal使用

文章目录1、什么是BigDecimal?2、为什么使用BigDecimal?3、如何使用BigDecimal?(1)BigDecimal初始化赋值(2)加减乘除运算(3)BigDecimal保留两位小数及舍入模式&#xff0…

WFP实现侧边栏导航菜单

菜单导航功能实现,常规的管理系统应该常用,左侧显示菜单条目,点击菜单,右侧切换不同的业务用户控件。 常用菜单可以采用TreeView树形控件特定样式实现 ,本文介绍的是使用ExpanderListView的组合形式实现的导航菜单&am…

算法day24|理论基础77

详细布置 理论基础 什么是回溯法:递归函数下面通常有回溯法 它使用的地方:组合,切割,子集,排列,棋盘问题(N皇后,解数独) 回溯算法的模板: void backtracking(参数)&…

微型计算机基础

微型计算机常用术语 位(bit):计算机所能表示的最基本,最小的数据单元。1个二进制位有两种状态0和1 通常情况下0表示低电平(接地),1表示高电平接电源(VCC) 字节&#xff0…

MATLAB 矩阵处理及多项式计算

一、实验目的 (1)掌握生成特殊矩阵以及矩阵处理的方法 (2)掌握数据统计和分析的方法 (3)掌握多项式的常用计算 二、实验原理与实验设备 原理:计算机编程相关知识技能和MATLAB软件编译环境 …

c++——map和set的封装

注:该封装基于前面博客已实现红黑树,map和set封装并不难,主要还是对红黑树的理解 目录 一. 改造红黑树 1. 改变节点的定义,使用更高维度的泛型 2. 红黑树追加迭代器的实现 1. 红黑树迭代器的构造函数和基本框架 2. begin()和e…