k8s对象操作的了解

一:什么是Kubernetes对象

Kubernetes对象指的是Kubernetes系统的持久化实体,所有这些对象合起来,代表了你集群的实际情况。常规的应用里,我们把应用程序的数据存储在数据库中,Kubernetes将其数据以Kubernetes对象的形式通过 api server存储在 etcd 中。具体来说,这些数据(Kubernetes对象)描述了:

  • 集群中运行了哪些容器化应用程序(以及在哪个节点上运行)
  • 集群中对应用程序可用的资源
  • 应用程序相关的策略定义,例如,重启策略、升级策略、容错策略
  • 其他Kubernetes管理应用程序时所需要的信息

操作 Kubernetes 对象(创建、修改、删除)的方法主要有:

  • kubectl 命令行工具
  • kuboard 图形界面工具

kubectl、kuboard 最终都通过调用 kubernetes API (opens new window)来实现对 Kubernetes 对象的操作

对象的spec和status

每一个 Kubernetes 对象都包含了两个重要的字段:

  • spec 必须由您来提供,描述了您对该对象所期望的 目标状态
  • status 只能由 Kubernetes 系统来修改,描述了该对象在 Kubernetes 系统中的 实际状态

二:管理Kubernetes对象的方式

方式一:指令性的命令行

当使用指令性的命令行(imperative commands)时,用户通过向 kubectl 命令提供参数的方式,直接操作集群中的 Kubernetes 对象。此时,用户无需编写或修改 .yaml 文件。

这是在 Kubernetes 集群中执行一次性任务的一个简便的办法。由于这种方式直接修改 Kubernetes 对象,也就无法提供历史配置查看的功能
例如:
创建一个 Deployment 对象,以运行一个 nginx 实例:

kubectl run nginx --image nginx

下面的命令完成了相同的任务,但是命令格式不同:

kubectl create deployment nginx --image nginx

方式二:指令性的对象配置

使用指令性的对象配置(imperative object configuration)时,需要向 kubectl 命令指定具体的操作(create,replace,apply,delete等),可选参数以及至少一个配置文件的名字。配置文件中必须包括一个完整的对象的定义,可以是 yaml 格式,也可以是 json 格式。
例子:
通过配置文件创建对象

kubectl create -f nginx.yaml

删除两个配置文件中的对象

kubectl delete -f nginx.yaml -f redis.yaml

直接使用配置文件中的对象定义,替换Kubernetes中对应的对象:

kubectl replace -f nginx.yaml

方式三:声明式的对象配置

当使用声明式的对象配置时,用户操作本地存储的Kubernetes对象配置文件,然而,在将文件传递给 kubectl 命令时,并不指定具体的操作,由 kubectl 自动检查每一个对象的状态并自行决定是创建、更新、还是删除该对象。使用这种方法时,可以直接针对一个或多个文件目录进行操作(对不同的对象可能需要执行不同的操作)。
例子:
处理 configs 目录中所有配置文件中的Kubernetes对象,根据情况创建对象、或更新Kubernetes中已经存在的对象。可以先执行 diff 指令查看具体的变更,然后执行 apply 指令执行变更:

kubectl diff -f configs/
kubectl apply -f configs/

递归处理目录中的内容:

kubectl diff -R -f configs/
kubectl apply -R -f configs/

三:名称空间

Kubernetes通过名称空间(namespace)在同一个物理集群上支持多个虚拟集群。
名称空间的用途是,为不同团队的用户(或项目)提供虚拟的集群空间,也可以用来区分开发环境/测试环境、准上线环境/生产环境。

名称空间为 名称 提供了作用域。名称空间内部的同类型对象不能重名,但是跨名称空间可以有同名同类型对象。名称空间不可以嵌套,任何一个Kubernetes对象只能在一个名称空间中。

通过kubectl使用名称空间

1、查看名称空间
执行命令 kubectl get namespaces 可以查看名称空间,输出结果如下所示:

NAME          STATUS    AGE
default       Active    1d
kube-system   Active    1d
kube-public   Active    1d

Kubernetes 安装成功后,默认有初始化了三个名称空间:

  • default 默认名称空间,如果 Kubernetes 对象中不定义 metadata.namespace 字段,该对象将放在此名称空间下
  • kube-system Kubernetes系统创建的对象放在此名称空间下
  • kube-public 此名称空间自动在安装集群是自动创建,并且所有用户都是可以读取的(即使是那些未登录的用户)。主要是为集群预留的,例如,某些情况下,某些Kubernetes对象应该被所有集群用户看到

2、在执行请求时设定namespace
执行 kubectl 命令时,可以使用 --namespace 参数指定名称空间,例如:

kubectl run nginx --image=nginx --namespace=<您的名称空间>
kubectl get pods --namespace=<您的名称空间>

通过kuboard使用名称空间

1、查看名称空间
进入集群概要中,右侧就是所有的名称空间
在这里插入图片描述
2、创建名称空间
在这里插入图片描述
在这里插入图片描述
3、使用名称空间
直接先进入名称空间,在进行其他的操作,比如创建负载
在这里插入图片描述

四:标签

使用标签,用户可以按照自己期望的形式组织 Kubernetes 对象之间的结构,而无需对 Kubernetes 有任何修改。
应用程序的部署或者批处理程序的部署通常都是多维度的(例如,多个高可用分区、多个程序版本、多个微服务分层)。管理这些对象时,很多时候要针对某一个维度的条件做整体操作,例如,将某个版本的程序整体删除,这种情况下,如果用户能够事先规划好标签的使用,再通过标签进行选择,就会非常地便捷。
这里讲一个使用kuboard 使用标签来标记不同节点的情况,这样一个集群可以分测试环境和正式环境,比如集群总共有8个工作节点,可以用5在做为正式环境,就可以在这5台上打上release的标签,其他3台可以打上test的标签,这样就可以可以区分正式环境和测试环境了。
1、在节点上创建标签
进入节点,选择一台服务器,点击进入。
在这里插入图片描述
点击编辑标签
在这里插入图片描述
在这里插入图片描述
输入标签名称和值, 要打相同标签的服务器节点,标签名和值要一样。

2、创建工作负载的时候通过标签指定节点

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
k8s是一个开源的容器编排平台,可以用来统一管理和部署容器化应用程序。它可以帮助我们简化应用程序的部署、扩展和管理。而MySQL是一种关系型数据库管理系统,它可以用来存储和管理数据。 在使用k8s部署MySQL时,可以使用一些命令来完成一些操作。比如,使用"mysql> use db;"命令可以选中一个数据库;使用"mysql> show tables;"命令可以查看该数据库中有哪些数据表;使用"mysql> describe 表名;"命令可以查看指定表的结构;还可以使用其他命令来删除记录等操作。 在实际部署MySQL的过程中,可以使用k8s的一些资源对象来完成。比如,可以使用Namespace来划分不同的环境,使用Pod来部署MySQL容器,使用Deployment来管理Pod的副本数量和更新策略,使用Service来提供稳定的网络连接,使用PV和PVC来管理持久化存储,使用Secret来管理敏感信息等。通过这些资源对象的组合,可以实现一个单机版的MySQL数据库的部署。 另外,如果要学习更多关于k8s的使用和MySQL在k8s中的部署,可以参考相关的文档和教程。比如,可以查阅关于k8s Namespace的用法的文章,了解如何创建和使用Namespace;还可以学习如何创建持久卷PV,用来存储MySQL的数据文件。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [k8s运行mysql服务](https://blog.csdn.net/u010275850/article/details/123267490)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [k8s实战之MySQL单实例部署](https://blog.csdn.net/tianxingzhe37/article/details/124652286)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

javascript_good

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值