Kamrada operator:新一代的 Karmada 管理方式

news2024/9/20 22:43:51

Karmada operator 是 Karmada 社区推出的新组件,它为用户提供了全新的 Karmada 生命周期管理的方式。用户可以在全局集群之上集中式来管理多个 Karmada,通过 CR 资源来控制 Karmada 的创建、升级和卸载。为用户运维和管理 Karmada 提供了极大的便捷。本文章重点是从用户的使用的角度来介绍 Karmada operator。

01

安装方式

目前社区提供了两种方式来安装 Karmada operator:

1. Helm 安装:
helm chart 的文件在 Karmada 社区仓库,clone 源代码到本地后运行以下命令在 karmada-system 命令空间安装 release 为 karmada-operator 的 chart 实例。

helm install karmada-operator -n karmada-system  --create-namespace ./charts/karmada-operator --debug

2. yaml 文件安装:
Karmada operator 需要访问本集群 kube-apiserver 来 watch CR 资源,所以需要提前准备本集群的 kubeconfig,这里我们使用 secret 资源来存储 kubeconfig 并挂载到 Karmada operator 的 pod 中。

kubectl create namespace karmada-systemkubectl create secret generic my-kubeconfig --from-file=$HOME/.kube/config -n karmada-system

安装 Karmada operator CRD 资源:

kubectl apply -f operator/config/crds

通过 yaml 源文件来创建 Karmada operator 工作负载:

kubectl apply -f operator/config/deploy/karmada-operator.yaml

创建之后,Karmada operator 的工作负载就会被创建并运行:

kubectl get po -n karmada-system
NAME                              READY  STATUS   RESTARTS  AGE
karmada-operator-5b7f485c5-g5lj5  1/1    Running  0         26s

02

创建 Karmada

Karmada operator 提供 Karmada 的 CR,它可以定义安装集群的连接信息。如果没有连接信息,Karmada operator 会默认在本集群来安装 Karmada。我们还可以通过这个 CR 来定义大部分 Kamrada 组件的配置,包括镜像,二进制执行参数,自定义 label 和 annotation 和启用 featuregate 等。

一个 Karmada CR 资源对应一个 Karmada 集群,它是命名空间级别的资源,它会在相同的命名空间下安装 Karmada 组件。下面是一个最简单 Karmada CR,它会在 test 的命令空间来创建一个默认配置的 Karmada 控制平面:

kubectl create namespace test
kubectl apply -f - <<EOF
apiVersion: operator.karmada.io/v1alpha1
kind: Karmada
metadata:
  name: karmada-demo
  namespace: test
EOF

大概等待 40 秒的时间后,Karmada 所有组件的 pod 都会正常地运行起来:

kubectl get po -n test
karmada-demo-aggregated-apiserver-587bc5c697-v27vb      1/1     Running   0          12s
karmada-demo-apiserver-55968d9f8c-mp8hf                 1/1     Running   0          35s
karmada-demo-controller-manager-64455f7fd4-stls6        1/1     Running   0          5s
karmada-demo-etcd-0                                     1/1     Running   0          37s
karmada-demo-kube-controller-manager-584f978bbd-fftwq   1/1     Running   0          5s
karmada-demo-scheduler-6d77b7547-hgz8n                  1/1     Running   0          5s
karmada-demo-webhook-6f5944f5d8-bpkqz                   1/1     Running   0          5s

03

升级 Karmada

一旦 Karmada 被创建,这个 CR 资源会被自动填充必要的默认值。升级 Karmada 是通过修改相关组件的镜像版本来达到升级 Karmada 的目的,下面例子是升级 Karmada 版本到 v1.5.0。当然也可以升级 etcd 和 karmada-apiserver 和 kube-controller-manager 的镜像版本。

kubectl patch karmada karmada-demo -n test --type merge -p '
{
  "spec": {
    "components": {
      "karmadaAggregatedAPIServer": {
        "imageTag": "v1.5.0"
      },
      "karmadaControllerManager": {
        "imageTag": "v1.5.0"
      },
      "karmadaScheduler": {
        "imageTag": "v1.5.0"
      },
      "karmadaWebhook": {
        "imageTag": "v1.5.0"
      }
    }
  }
}'

04

卸载 Karmada

删除 Karmada CR 是一个非常危险的操作,因为一旦 CR 被删除,Karmada 也会同时被销毁。所以请谨慎操作:

kubectl delete karmada karmada-demo -n test

06

自定义 
Karmada CR 资源

上面的场景都基于 Karmada 最简配置,所安装出来的 Karmada 是默认的配置。但是 Karmada CR 是可配置的,我们可以按照自己的场景和需求来配置自定义的 Karmada。下面列举了比较常用的 user story:

设置 Karmada 组件的副本数:

Karmada 所有组件的副本数都是可配置的,默认情况是一个副本数,下面是将 etcd 的副本数伸缩到 3 个副本。

apiVersion: operator.karmada.io/v1alpha1
kind: Karmada
metadata:
  name: karmada-demo
  namespace: test
spec:
  components:
    etcd:
      local:
        replicas: 3

自定义 label 和 annotation:

所有 Karmada 组件的 label 和 annotation 也是可以自定义的,如果设置了自定义的 label 和 annotation,它们会被同时注入到 pod 和对应的 workload 资源中。

apiVersion: operator.karmada.io/v1alpha1
kind: Karmada
metadata:
  name: karmada-demo
  namespace: test
spec:
  components:
    karmadaAPIServer:
      labels:
        <custom-label-key>: <custom-label-value>
      annotations:
        <custom-annotation-key>: <custom-annotation-value>

在外部访问 Karmada APIServer:

默认的情况下,Karmada APIServer 对应的 service 类型是 ClusterIP,在集群外部是不能被访问的。Karmada operator 也提供了 NodePort 的 service 类型,这样在 Agent 模式下,member 集群下才可以连接到 Karmada 的控制平面上。

karmadaAPIServer:
  imageRepository: registry.k8s.io/kube-apiserver
  imageTag: v1.25.4
  replicas: 1
  serviceType: NodePort
  serviceSubnet: 10.96.0.0/12

在公有云或者一些复杂的网络环境下,需要通过额外的 DNS 或者 IP 地址来访问 karmada-apierver,可以将这些 SANs 提前加入到证书中:

karmadaAPIServer:
  imageRepository: registry.k8s.io/kube-apiserver
  imageTag: v1.25.4
  replicas: 1
  serviceSubnet: 10.96.0.0/12
  certSANs:
  - "kubernetes.default.svc"
  - "127.0.0.1"

Karmada 可选组件:

默认情况,Karmada operator 并不会安装 descheduler 和 search 组件。如果想要使用它们,需要在 CR 中显示配置,最简单的配置只需要定义一个结构体,它也会被自动填充默认值。下面是一个例子来开启 descheduler 组件。需要注意的是目前只支持 descheduler 可选组件。

apiVersion: operator.karmada.io/v1alpha1
kind: Karmada
metadata:
  name: karmada-demo
  namespace: test
spec:
  components:
    KarmadaDescheduler: {}

06

参与 Karmada
operator 的贡献

Karmada operator 是 Karmada 一个全新组件,已经发布第一个可用的版本。后续还会有更多的丰富的功能。如果您对此项目感兴趣或者您同时也正需要它,可以来 karmada 社区来贡献您的 PR,或者您有任何的需求和疑问,非常欢迎提出您的 issue。

代码仓库地址:https://github.com/karmada-io/karmada/tree/master/operator


 本文作者 

陈文

现任「DaoCloud 道客」云原生开发工程师

 

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

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

相关文章

12个经典性能测试人员面试题

1、性能测试包含了哪些软件测试&#xff08;至少举出3种&#xff09;&#xff1f; 参考答案&#xff1a;负载测试;压力测试;容量测试;负载测试&#xff08;Load Testing&#xff09;&#xff1a;负载测试是一种主要为了测试软件系统是否达到需求文档设计的目标&#xff0c;譬如…

如何在 Jupyter Notebook 用一行代码启动 Milvus?

随着各种大语言模型&#xff08;LLM&#xff09;的涌现和 AI 技术变得越来越普遍&#xff0c;大家对于向量数据库的需求也变得越来越多。作为大模型的记忆体&#xff0c;向量数据库不仅可以帮助解决 LLM 面临的最大问题——缺乏特定领域知识和最新数据&#xff0c;还可以赋能相…

【数据结构】查找(一)

因为时间关系&#xff08;现阶段来不及&#xff09;&#xff0c;先不学红黑树和B树&#xff0c;所以这是查找&#xff08;一&#xff09;。 先写一下二分查找&#xff0c;数据结构数上叫的“折半查找”。 二分查找 左闭右闭区间 左闭右开区间 下面依旧是对王道书上选择题的一…

突破竞争壁垒:独立站如何实现有效的品牌差异化?

在当今竞争激烈的电商市场中&#xff0c;独立站已经成为了越来越多品牌的选择。然而&#xff0c;要想在这个竞争激烈的环境中脱颖而出&#xff0c;建立起独特的品牌差异化是至关重要的。品牌差异化是一种战略方法&#xff0c;旨在突出品牌在市场上的独特性和独有价值&#xff0…

Java阶段四Day02

Java阶段四Day02 文章目录 Java阶段四Day02VueCli嵌套路由总结项目开发开发流程关于项目项目分析数据库的设计规范(基于阿里巴巴Java开发手册)数据库表设计创建项目关于依赖项关于<build>报错 VueCli嵌套路由 由于Vue Cli工程是单页面的&#xff0c;为了保证能显示各式各…

如何实现不同服务器之间 大规模数据同步?

随着企业结构分散化的不断扩大&#xff0c;企业的数据中心、服务器节点、异地分支机构之间&#xff0c;会存在多种文件交换场景。传统的FTP、rsync、网盘等传输方式在数据体量较小、时效性要求不高的情况下&#xff0c;基本也可以满足需求。 但随着数量爆发式增长&#xff0c;需…

大二下学期期末总结

文章目录 针对学习方面大学生就业指导与创业教育数据结构Java企业级开发大数据实时处理大数据可视化服务器技术 针对生活方面针对课外活动方面 针对学习方面 大学生就业指导与创业教育 这门课很好的帮我们分析了目前的就业形势&#xff0c;预测了未来的就业前景&#xff0c;为…

庆祝牛学长4周年!精彩折扣活动等你来享!

值此周年庆之际&#xff0c;我们衷心感谢您对我们的支持与信任。为了回馈广大用户的厚爱&#xff0c;我们特别推出一系列令人振奋的打折活动&#xff0c;让您在软件购买和使用过程中获得更多实惠和便利。 活动时间&#xff1a;从即日起&#xff0c;至2023年6月26日 活动链接&…

接口测试开发之:一篇搞懂 Cache、Cookie及Session。

目录 1、引言 2、Cache 2.1 缓存定义 2.1.1 缓存概念 2.1.2 缓存优点 2.2 浏览器缓存 2.2.1 存储路径 2.2.2 缓存优点 2.2.3 缓存弊端 2.2.4 原理图 2.3 代理缓存 2.3.1 原理 2.3.2 应用场景 2.3.3 原理图 2.4 网关缓存 2.4.1 原理 2.4.2 缓存分类 2.4.3 缓存…

uniapp uview2.0 其中u--textarea组件无法换行,换行无效问题解决方案

最终发现是因为默认值的问题&#xff0c;uniapp和uview的官方文档写的confirmType的默认值都是done&#xff0c;但是uniapp的textarea在没有配置的情况下是没有值的&#xff0c;uview给加了一个默认值done&#xff0c;就出现了无法返回的问题&#xff0c;尝试了将uview的textar…

qt样式表qss选择器

目录 1、通用选择器 2、类型选择器&#xff08;类和子类&#xff09; 3、类选择器 4、ID选择器 5、子孙后代控件选择器 6、子后代控件选择器 7、属性选择器 7.1 静态属性 7.2 动态属性 8、子控件选择 9、伪状态选择 在开始之前&#xff0c;先要区分3个概念&#xff1…

Android MediaPlayer多次Seek产生杂音优化

前言 MediaPlayer 作为Android自带的Player目前还是存在很多不好使用问题&#xff0c;但实际开发中&#xff0c;还是有不少使用场景&#xff0c;本文针对多次seek产生杂音的问题进行分析讨论&#xff0c;自己遇到了进行记录&#xff0c;目前底层也不好解决和轻易改动原生代码&…

2020年CSP-J认证 CCF非专业级别软件能力认证第一轮真题-单项选择题解析

2020 CCF认证第一轮&#xff08;CSP-J&#xff09;真题 一、单项选择题 (共15题&#xff0c;每2分&#xff0c;共30分;每题有且有一个正确选项&#xff09; 1、在内存储器中每个存储单元都被赋予一个唯一的序号,称为 A、下标 B、序号 C、地址 D、编号 答案&#xff1a;C…

当618成“抢人大战”,知道“怎么抢”才能“抢得到”

文 | 螳螂观察 作者 | 易不二 今年618对很多平台来说都意义非凡。 尤其是最具主场优势的阿里、京东而言&#xff0c;更是一场硬仗&#xff1a;阿里“16N”组织架构调整后&#xff0c;淘天的第一次大促&#xff0c;且还恰逢也淘宝20周年&#xff1b;京东换帅、CEO许冉第一次接…

华为OD机试真题 Java 实现【素数伴侣】【2023 B卷 100分】,附详细解题思路

一、题目描述 若两个正整数的和为素数&#xff0c;则这两个正整数称之为“素数伴侣”&#xff0c;如2和5、6和13&#xff0c;它们能应用于通信加密。现在密码学会请你设计一个程序&#xff0c;从已有的 N &#xff08; N 为偶数&#xff09;个正整数中挑选出若干对组成“素数伴…

13.常用类|Java学习笔记

文章目录 包装类包装类型和String类型的相互转换Integer类和Character类的常用方法Integer创建机制&面试题 String类创建String对象的两种方式和区别字符串的特性String类的常用方法 StringBuffer类String和StringBuffer相互转换StringBuffer常用方法 StringBuilder类Strin…

Java实训日志01

文章目录 一、安装录屏软件&#xff08;一&#xff09;下载软件&#xff08;二&#xff09;安装软件 二、使用录屏软件三、安装XMind软件&#xff08;一&#xff09;下载XMind软件&#xff08;二&#xff09;安装XMind软件 四、创建思维导图&#xff08;一&#xff09;启动XMin…

如何评价广告营销效果

广告营销的目的 广义上的营销&#xff0c;2个主要目的&#xff1a;达成销售和建设品牌&#xff0c;其实后者的终极目的还是前者。销售是短期达成&#xff0c;品牌建设是长期管理。 广告是营销的一部分&#xff0c;广告的效果评估也应该从目的出发探寻方法。 网络广告的特性 网…

2023Fiddler学习笔记 -- 状态栏及辅助选项卡

接上节课内容 2023Fiddler抓包学习笔记 -- 环境配置及工具栏介绍 2023Fiddler抓包学习笔记 -- 如何在会话窗口添加ip列 一、状态栏 1、上面黑色的框框&#xff0c;可以输入相关命令实现操作&#xff0c;比如&#xff1a;bpu baidu&#xff0c;只要url里包含baidu的网站都会被…

Socket 传情:用 Python 编织 TCP 网络

文章目录 参考描述TCP 服务器端与 TCP 客户端通信的基本流程服务器端客户端 使用 socket 实现 TCP 服务器端实现监听套接字socket.socket()Socket().bind()IP 地址的选择本地回环地址某一特定 IP 地址空字符串 Socket().listen()监听套接字的实现 实现连接套接字Socket().accep…