文章目录

    • karmada简介
      • karmada概述
    • karmada Helm部署
      • Kubernetes karmada介绍
      • 基础准备
        • Kubernetes集群
      • 获取chat包
      • 正式部署
    • karmada使用
      • karmada纳管集群
      • 查看memeber集群
        • 导出kubeconfig
        • 切换集群
      • 测试应用

karmada简介

karmada概述

参考:附049.Kubernetes Karmada Local-up部署联邦

karmada Helm部署

Kubernetes karmada介绍

Karmada(Kubernetes Karmada)是一个 Kubernetes 管理系统,它使您能够在多个 Kubernetes 集群和云中运行您的云原生应用程序,而无需对应用程序进行任何更改。通过使用 Kubernetes 原生 API 并提供高级调度功能,Karmada 实现了真正开放的、多云的 Kubernetes。

Karmada 旨在为多云和混合云场景中的多集群应用程序管理提供开箱即用的自动化,其关键特性包括集中式多云管理、高可用性、故障恢复和流量调度。

基础准备

Kubernetes集群

该方式是讲karmada以Kubernetes资源进行部署,在部署之前必须有一个Kubernetes集群,Kubernetes集群部署可参考:附045.Kubernetes_v1.33.2高可用部署架构二

提示:该方式部署还需要提前安装Helm,helm安装也可参考如上链接。

获取chat包

该方式安装,会在命名空间 karmada-system 中安装名为 karmada 的chat包。

root@master01:~# helm repo add karmada-charts https://raw.githubusercontent.com/karmada-io/karmada/master/charts
root@master01:~# helm repo list
root@master01:~# helm search repo karmada                #查看版本
NAME                            CHART VERSION   APP VERSION     DESCRIPTION                      
karmada-charts/karmada          v1.15.0         v1.1.0          A Helm chart for karmada         
karmada-charts/karmada-operator v1.15.0         v1.1.0          A Helm chart for karmada-operator

正式部署

参考默认配置,创建自定义配置:

  • 部署descheduler和search,
  • etcd保持持久化,利用集群已有的StorageClass。
组件安装位置作用必要性备注
deschedulerKarmada 控制面 (host cluster)全局决策者。监视所有成员集群状态,根据策略决定是否以及如何在集群间迁移工作负载。可选,但生产推荐在控制面做全局决策。
searchKarmada 控制面 (host cluster)提供全局搜索API。允许用户从一个地方(Karmada API)查询所有成员集群中的资源(如Pod, Service)。可选提供便利性,非核心功能。
root@master01:~# mkdir karmada
root@master01:~# cd karmada/
root@master01:~/karmada# helm show values karmada-charts/karmada > defaults-values.yamlroot@master01:~/karmada# vim my-values.yaml
components: - "descheduler"- "search"
etcd:internal:replicaCount: 1storageType: "persistentVolume"pvc:storageClass: "longhorn"size: "5G"root@master01:~/karmada# helm upgrade --install karmada karmada-charts/karmada --create-namespace --namespace karmada-system -f my-values.yaml

提示:可使用如下命令渲染为传统部署的 mainfests 文件。

root@master01:~/karmada# helm template karmada karmada-charts/karmada --namespace karmada-system -f my-values.yaml > karmada-manifests.yaml
  • 确认验证
    确认主要组件部署成功。
root@master01:~/karmada# kubectl -n karmada-system get pods -o wide
NAME                                               READY   STATUS    RESTARTS       AGE     IP            NODE       NOMINATED NODE   READINESS GATES
etcd-0                                             1/1     Running   0              5m30s   10.10.30.93   worker02   <none>           <none>
karmada-aggregated-apiserver-7974c77ddb-2lbt6      1/1     Running   0              5m30s   10.10.30.80   worker02   <none>           <none>
karmada-apiserver-cc9bd8d5b-qld4b                  1/1     Running   0              5m30s   10.10.30.70   worker02   <none>           <none>
karmada-controller-manager-86d7d4cdc-nvs4b         1/1     Running   0              5m30s   10.10.30.71   worker02   <none>           <none>
karmada-descheduler-579dc78566-9r2sq               1/1     Running   0              5m29s   10.10.5.15    worker01   <none>           <none>
karmada-descheduler-579dc78566-h78kk               1/1     Running   0              5m29s   10.10.30.77   worker02   <none>           <none>
karmada-kube-controller-manager-55948f7b57-2mf87   1/1     Running   0              5m30s   10.10.30.76   worker02   <none>           <none>
karmada-scheduler-7bdb96b45-8fbdv                  1/1     Running   0              5m30s   10.10.30.78   worker02   <none>           <none>
karmada-search-75b647f567-f4d6v                    1/1     Running   0              5m29s   10.10.5.28    worker01   <none>           <none>
karmada-search-75b647f567-p64bx                    1/1     Running   0              5m29s   10.10.30.74   worker02   <none>           <none>
karmada-webhook-c77c9f797-rz6cz                    1/1     Running   0              5m30s   10.10.30.72   worker02   <none>           <none>

karmada使用

karmada纳管集群

使用karmada可纳管多个集群,有两种主要方式:

  • Helm安装agent

参考官方示例:Install agent

使用如下脚本可快速生成helm部署的values.yaml。

root@master01:~/karmada# vim mkagent.sh 
#!/bin/bash
#***************************************************************#
# ScriptName: mkagent.sh
# Author: xhy
# Create Date: 2025-09-05 16:32
# Modify Author: xhy
# Modify Date: 2025-09-05 16:33
# Version: v1
#***************************************************************#
#***************************************************************#
# 作用:
#   1. 自动检测操作系统 (Ubuntu/Debian 或 CentOS/RHEL)
#   2. 安装 yq
#   3. 从 karmada-system 的 karmada-kubeconfig secret 提取
#      CA/CRT/KEY 并生成 Helm values 文件
#***************************************************************#OUT_FILE=host-agent-values.yaml
CLUSTER_NAME="host-cluster"# 0. 安装 yq 工具
echo "[INFO] 正在检测系统并安装 yq ..."
if [ -f /etc/debian_version ]; thenapt-get update -yapt-get install -y yq
elif [ -f /etc/redhat-release ]; thenyum install -y epel-releaseyum install -y yq
elseecho "[WARN] 未识别的操作系统, 请手动安装 yq (>=v4.x)"exit 1
fi# 1. 获取 kubeconfig 数据
KARMADA_KUBECONFIG=$(kubectl -n karmada-system get secret karmada-kubeconfig \-o jsonpath='{.data.kubeconfig}' | base64 -d)# 2. 提取 CA/CRT/KEY/Server
CA=$(echo "$KARMADA_KUBECONFIG" | yq -r '.clusters[0].cluster."certificate-authority-data"' | base64 -d)
CRT=$(echo "$KARMADA_KUBECONFIG" | yq -r '.users[0].user."client-certificate-data"' | base64 -d)
KEY=$(echo "$KARMADA_KUBECONFIG" | yq -r '.users[0].user."client-key-data"' | base64 -d)
SERVER=$(echo "$KARMADA_KUBECONFIG" | yq -r '.clusters[0].cluster.server')# 3. 生成 values.yaml
cat > $OUT_FILE <<EOF
installMode: "agent"
agent:clusterName: "$CLUSTER_NAME"kubeconfig:caCrt: |
$(echo "$CA" | sed 's/^/      /')crt: |
$(echo "$CRT" | sed 's/^/      /')key: |
$(echo "$KEY" | sed 's/^/      /')server: "$SERVER"
EOFecho -e "\n[INFO] 已生成 $OUT_FILE"root@master01:~/karmada# bash mkagent.sh
root@master01:~/karmada# cat host-agent-values.yaml

释义:如上脚本可生成当前部署karmada集群的Kubernetes加入karmada的helm values部署文件。

root@master01:~/karmada# helm upgrade --install karmada-agent karmada-charts/karmada \-n karmada-system \-f host-agent-values.yaml
  • kubectl karmada join方式
    参考:附051.Kubernetes Karmada kubectl 插件部署联邦及使用

查看memeber集群

导出kubeconfig

将karmada-apiserver的kubeconfig导出到宿主机,然后可以在host-cluster进行kubectl的切换,从而实现集群的管理。

root@master01:~/karmada# kubectl -n karmada-system get secret karmada-kubeconfig -o jsonpath='{.data.kubeconfig}' | base64 -d > /root/.kube/karmada.configroot@master01:~/karmada# vim /etc/profile.d/custom_kubectl.sh 
export KUBECONFIG=/root/.kube/config:/root/.kube/karmada.config
source <(kubectl completion bash)root@master01:~/karmada# source /etc/profileroot@master01:~/karmada# kubectl -n karmada-system get svc karmada-apiserver -o jsonpath='{.spec.clusterIP}'
10.20.19.121root@master01:~/karmada# echo "10.20.19.121 karmada-apiserver.karmada-system.svc.cluster.local" | sudo tee -a /etc/hosts
切换集群

切换到联邦集群。

root@master01:~/karmada# kubectl config use-context karmada-apiserver 
root@master01:~/karmada# kubectl get clusters
NAME           VERSION   MODE   READY   AGE
host-cluster   v1.33.2   Pull   True    31m

测试应用

使用现有的一个cluster集群,模拟应用的联邦集群调度。

  • 创建部署
root@karmada:~/karmada# vim nginx_deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:name: nginxlabels:app: nginx
spec:replicas: 1selector:matchLabels:app: nginxtemplate:metadata:labels:app: nginxspec:containers:- image: uhub.service.ucloud.cn/imxhy/nginx:1.29.0name: nginxroot@master01:~/karmada# kubectl apply -f nginx_deployment.yaml
  • 创建调度策略
root@karmada:~/karmada# vim nginx_propagationpolicy.yaml
apiVersion: policy.karmada.io/v1alpha1
kind: PropagationPolicy
metadata:name: nginx-propagation
spec:resourceSelectors:- apiVersion: apps/v1kind: Deploymentname: nginxplacement:clusterAffinity:clusterNames:- host-clusterreplicaScheduling:replicaDivisionPreference: WeightedreplicaSchedulingType: DividedweightPreference:staticWeightList:- targetCluster:clusterNames:- member1weight: 1
root@master01:~/karmada# kubectl apply -f nginx_propagationpolicy.yaml
  • 确认调度结果
root@master01:~/karmada# kubectl config use-context kubernetes-admin@kubernetes root@master01:~/karmada# kubectl get pods -o wide
NAME                     READY   STATUS    RESTARTS   AGE   IP             NODE       NOMINATED NODE   READINESS GATES
nginx-6bcdf8cdb8-bx9lq   1/1     Running   0          77s   10.10.30.118   worker02   <none>           <none>

结论:如上所示,使用 PropagationPolicy 可创建集群的调度策略。从而实现在联邦 api-server 中将对应的资源调度到指定的 Kubernetes 集群中。

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

必知必会:基于Transformer 的预训练语言模型如何区分文本位置(sinusoidal位置编码、原理和详细推导)

预训练位置编码 基于Transformer 的预训练语言模型如何区分文本位置? 基于 Transformer 的预训练语言模型主要通过位置编码来区分文本位置。Transformer 核心的自注意力机制本身并不考虑词的顺序&#xff0c;它对输入序列的处理是与位置无关的。在 query 和 key 的矩阵乘法之后…

redis key过期后会立马删除吗

Redis 的 Key 过期后不会立即被删除。Redis 采用了一种结合 ​惰性删除 (Lazy Expiration)​​ 和 ​定期删除 (Periodic Expiration)​​ 的策略来管理过期 Key 的回收&#xff0c;这是为了在内存管理、性能和 CPU 开销之间取得平衡。&#x1f4cc; Redis 过期 Key 删除的两种…

关于 React 19 的四种组件通信方法

注意&#xff1a;使用的是UI库是 antd-mobile1.父子级组件通信父组件单向数据流&#xff1a;数据从父组件流向子组件。支持多种数据类型&#xff1a;字符串、数字、对象、数组、函数等。只读性&#xff1a;子组件不能直接修改 props 中的数据。import { useState } from react …

OC-单例模式

文章目录单例模式定义特点使用原因缺点模式介绍懒汉模式同步锁实现dispatch_once饿汉模式实现总结懒汉模式优点缺点饿汉模式优点缺点单例模式 定义 单例模式&#xff0c;简单的说就是一个类始终只对应同一个对象&#xff0c;每次获取这个类的对象获得的都是同一个实例 如果一…

[论文阅读] 算法 | 抗量子+紧凑!SM3-OTS:基于国产哈希算法的一次签名新方案

抗量子紧凑&#xff01;SM3-OTS&#xff1a;基于国产哈希算法的一次签名新方案 论文信息信息类别具体内容论文原标题SM3-OTS: 基于国密算法SM3的紧凑型后量子一次签名方案主要作者杨亚涛、殷方锐、陈亮宇、潘登研究机构1. 北京电子科技学院 电子与通信工程系&#xff08;北京 1…

C语言-指针用法概述

目录 1.指针基础概念 2. 指针与数组 3. 指针作为函数参数 4. 动态内存分配 5. 指针的高级用法 6. 常见错误与注意事项 7. 指针数组 vs. 数组指针 8.总结与建议 本文主要作为指针用法的复习&#xff0c;会对指针的大致用法进行举例和概述。 1.指针基础概念 ​什…

Java调用Whisper和Vosk语音识别(ASR)模型,实现高效实时语音识别(附源码)

简介 语音识别&#xff08;Automatic Speech Recognition, ASR&#xff09;是将人类的语音信号自动转换为对应文字的技术&#xff0c;它使计算机能够“听懂”人说的话&#xff0c;是人机语音交互的核心技术&#xff0c;广泛应用于智能助手、语音输入、客服系统等场景。 现在我…

第3周 机器学习课堂记录

1.学习问题的分类有监督的学习分类回归无监督学习聚类密度估计&#xff1a;确定输入空间中的数据的分布可视化&#xff1a;把高位空间中的数据投影到二维或三维空间强化学习不给定最优输出的示例&#xff0c;而是通过试错发现最优输出2.泛化versus过度拟合背景引入&#xff1a;…

消息队列(MQ)高级特性深度剖析:详解RabbitMQ与Kafka

一、引言&#xff1a;为什么需要关注高级特性&#xff1f; 在现代分布式系统架构中&#xff0c;消息队列&#xff08;Message Queue&#xff09;已成为不可或缺的核心组件。初级使用消息队列可能只需几行代码就能实现基本功能&#xff0c;但要真正发挥其在大规模生产环境中的威…

【GPT入门】第65课 vllm指定其他卡运行的方法,解决单卡CUDA不足的问题

【GPT入门】第65课 vllm指定其他卡运行的方法&#xff0c;解决单卡CUDA不足的问题&#xff11;.原理说明&#xff1a;&#xff12;.实践&#xff11;.原理 要将 vllm 部署在第二张 GPU 卡上&#xff08;设备编号为 1&#xff09;&#xff0c;只需在命令前添加 CUDA_VISIBLE_DE…

Spring Boot Actuator自定义指标与监控实践指南

Spring Boot Actuator自定义指标与监控实践指南 本篇文章以生产环境实战经验为主线&#xff0c;结合某电商系统的业务场景&#xff0c;讲解如何在Spring Boot Actuator中添加并暴露自定义指标&#xff0c;并使用Prometheus和Grafana进行完整的监控与告警配置。 一、业务场景描述…

Vue报错<template v-for=“option in cardOptions“ :key=“option.value“>

在Vue项目中遇到报错&#xff0c;原因是模板中使用了<template>标签内的v-for指令&#xff0c;而当前Vue版本不支持此用法。解决方案是移除<template>标签&#xff0c;直接在<el-option>上使用v-for。同时优化计算属性cardOptions&#xff0c;使其能够兼容历…

人工智能学习:Transformer结构中的规范化层(层归一化)

Transformer结构中的规范化层(层归一化) 一、规范化层(层归一化)介绍 概念 层归一化(Layer Normalization) 是一种用于提高深度神经网络训练稳定性和加速收敛的技术,广泛应用于现代深度学习模型中,尤其是在Transformer等序列建模网络中。它通过对每一层的输出进行归一化…

盼之代售 最新版 decode__1174

声明 本文章中所有内容仅供学习交流使用&#xff0c;不用于其他任何目的&#xff0c;抓包内容、敏感网址、数据接口等均已做脱敏处理&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的一切后果均与作者无关&#xff01; 逆向分析 部分python代码 cp1 execj…

Transformer系列 | Pytorch复现Transformer

&#x1f368; 本文为&#x1f517;365天深度学习训练营中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 一、Transformer和Seq2Seq 在之前的博客中我们学习了Seq2Seq(深度学习系列 | Seq2Seq端到端翻译模型)&#xff0c;知晓了Attention为RNN带来的优点。那么有没有…

【MySQL】常用SQL语句

介绍常用的DDL语句、DML语句基本语法分号结尾使用空格和缩进不区分大小写--或#注释单行内容 /*注释多行内容*/DDL数据定义语句&#xff1a;定义数据库、表、字段一、操作库-- 创建库create database db1;-- 创建库是否存在&#xff0c;不存在则创建create database if not exi…

云手机就是虚拟机吗?

云手机并非等同于虚拟机&#xff0c;尽管二者存在一定相似性&#xff0c;但有着诸多区别&#xff0c;以下从多个方面来分析&#xff1a;云手机是一种基于云计算技术&#xff0c;将云端服务器虚拟化为手机设备&#xff0c;用户能通过网络远程操控的虚拟手机服务&#xff0c;它从…

准确--Nginx 1.28.0 安装与配置流程

Nginx 1.28.0 安装与配置流程 1. 下载与解压 cd ~ wget http://nginx.org/download/nginx-1.28.0.tar.gz tar -zxvf nginx-1.28.0.tar.gz cd nginx-1.28.02. 配置编译参数 ./configure \--prefix/home/ynnewweb/nginx \--with-http_ssl_module \--with-http_gzip_static_module…

无标记点动捕新范式:Xsens系统助力人形机器人实现毫米级动作复刻

Xsen搭载Manus数据手套在机器人操作与机器学习中的应用当前&#xff0c;人形机器人正加速向工业装配、家庭陪护、仓储物流等场景渗透&#xff0c;而 “如何让机器人的动作既符合人类运动规律&#xff0c;又能实现高精度执行” 成为制约其落地的核心瓶颈。Xsens 高精度全身动捕系…

mysql57超管root忘记密码怎么办

目录 背景 1.首先停止数据库 2.使用免密模式启动 3.修改密码 3.1刷新权限配置 3.2修改密码 4.杀掉mysql 5.重新正常启动mysql 6.查看mysql状态 7.验证 7.1首先服务器本地验证 7.2远程验证 背景 数据库密码忘记了,急的抓耳挠腮,怎么也想不起来,于是就开始重置吧 1.…