附050.Kubernetes Karmada Helm部署聯邦及使用

文章目錄

    • 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.…