当前位置: 首页 > java >正文

附051.Kubernetes Karmada kubectl 插件部署联邦及使用

文章目录

    • karmada简介
      • karmada概述
    • karmada kubectl部署
      • Karmada kubectl 插件
      • 基础准备
        • Kubernetes集群
      • 安装karmada插件
      • 正式部署
    • karmada使用
      • karmada纳管集群
      • 查看memeber集群
        • 导出kubeconfig
        • 切换集群
      • 测试应用

karmada简介

karmada概述

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

karmada kubectl部署

Karmada kubectl 插件

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

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

kubectl-karmada 是允许你控制 Karmada 控制面的 Karmada 命令行工具,该工具表现为一个 kubectl 插件。

基础准备

Kubernetes集群

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

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

安装karmada插件

root@master01:~# mkdir karmada
root@master01:~# cd karmada/
root@master01:~/karmada#  curl -s https://raw.githubusercontent.com/karmada-io/karmada/master/hack/install-cli.sh | sudo bash -s kubectl-karmadaroot@master01:~/karmada# kubectl karmada version
kubectl karmada version: version.Info{GitVersion:"v1.15.0", GitCommit:"d4402a750f6cdafdc267a638ec54ee4249a8d10b", GitShortCommit:"d4402a7", GitTreeState:"clean", BuildDate:"2025-08-30T11:04:38Z", GoVersion:"go1.24.6", Compiler:"gc", Platform:"linux/amd64"}

正式部署

etcd保持持久化,利用集群已有的StorageClass。

root@master01:~/karmada# kubectl karmada init \--namespace karmada-system \--etcd-storage-mode PVC \--storage-classes-name longhorn \--etcd-pvc-size 5Gi \--etcd-replicas 1 \--karmada-apiserver-replicas 1 \--cert-validity-period=87600h \--kube-image-mirror-country=cn

提示:若需要高可用安装,可将副本数调整为3,参考: 使用 CLI 高可用安装

001

  • 确认验证
    确认主要组件部署成功。
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          19m   10.10.30.112   worker02   <none>           <none>
karmada-aggregated-apiserver-684b88cf6c-k8gqp   1/1     Running   0          18m   10.10.30.114   worker02   <none>           <none>
karmada-apiserver-679fc77877-2qr7j              1/1     Running   0          18m   10.10.30.113   worker02   <none>           <none>
karmada-controller-manager-6455d587d8-k7fdf     1/1     Running   0          17m   10.10.30.117   worker02   <none>           <none>
karmada-scheduler-74bddd5b99-n62vc              1/1     Running   0          17m   10.10.30.116   worker02   <none>           <none>
karmada-webhook-8df6b59d5-x88dj                 1/1     Running   0          17m   10.10.30.118   worker02   <none>           <none>
kube-controller-manager-c5b7c9f7b-m722r         1/1     Running   0          17m   10.10.30.115   worker02   <none>           <none>

karmada使用

karmada纳管集群

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

  • Helm安装agent
    参考:附050.Kubernetes Karmada Helm部署联邦及使用
  • kubectl karmada join方式
root@master01:~/karmada# kubectl karmada join host-cluster \--cluster-kubeconfig=/root/.kube/config \--kubeconfig=/etc/karmada/karmada-apiserver.config

查看memeber集群

导出kubeconfig

kubectl karmada部署的联邦。其kubeconfig默认位于/etc/karmada/目录,然后可以在host-cluster进行kubectl的切换,从而实现集群的管理。

root@master01:~/karmada# cat /etc/karmada/karmada-apiserver.configroot@master01:~/karmada# vim /etc/profile.d/custom_kubectl.sh
export KUBECONFIG=$HOME/.kube/config:/etc/karmada/karmada-apiserver.config
source <(kubectl completion bash)root@master01:~/karmada# source /etc/profile
切换集群

切换到联邦集群。

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   Push   True    4m35s

测试应用

使用现有的一个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: nginx
root@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@kubernetesroot@master01:~/karmada# kubectl get pods -o wide
NAME                     READY   STATUS    RESTARTS   AGE   IP             NODE       NOMINATED NODE   READINESS GATES
nginx-6bcdf8cdb8-r4w6x   1/1     Running   0          52s   10.10.30.119   worker02   <none>           <none>

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

http://www.xdnf.cn/news/20418.html

相关文章:

  • JBoltAI赋能产业数智化转型:AI开发新范式的深度实践
  • Java全栈工程师面试实录:从基础到高并发场景的技术探索
  • 【56页PPT】华为集成服务交付ISD业务变革总体方案(附下载方式)
  • OpenLayers常用控件 -- 章节六:全屏控件教程
  • 基础算法:倍增
  • RSA-e和phi不互素
  • Paimon——官网阅读:配置
  • Miniconda安装与VSCode搭建远程Python、Jupyter开发环境
  • Go基础(④指针)
  • C语言初学者笔记【文件操作】
  • ES6 核心特性详解:从变量声明到函数参数优化
  • Go基础(⑤Consul)
  • repo 学习教程
  • 第2课:环境搭建:基于DeepSeek API的开发环境配置
  • 【UAV】基于PX4+Ubuntu24.04.3的无人机制作的开发环境搭建
  • Linux awk 命令使用说明
  • 工业显示器在地铁电力监控与运维中的应用
  • 每天五分钟深度学习:神经网络的梯度下降和反向传播算法
  • Python实战:爬取百度热搜榜,制作动态可视化报告
  • 企业级监控方案对比:Zabbix vs Prometheus
  • (nice!!!)(LeetCode 面试经典 150 题 ) 130. 被围绕的区域(深度优先搜索dfs || 广度优先搜索bfs)
  • uni-app倒计时公共组件 封装,倒计时组件
  • 【Next】服务端接口
  • scikit-learn零基础配置(含python、anaconda)
  • 大电流场景首选:捷多邦解析厚铜 PCB 的应用优势
  • 【PCIe EP 设备入门学习专栏 -- 8.1.2 PCIe EP 通路详细介绍】
  • v0.29.1 敏感词性能优化之内部类+迭代器内部类
  • 中州养老项目:利用Redis解决权限接口响应慢的问题
  • Pandas基础(安装、导入Pandas、读取数据、查看数据)
  • 一、算法与数据结构的本质关系:灵魂、肉体与图书馆