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

附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://7Mf7Q8GI.qxdrw.cn
http://aIie74wD.qxdrw.cn
http://pUjMHfij.qxdrw.cn
http://9zOScrRC.qxdrw.cn
http://6SgS7nw4.qxdrw.cn
http://JhecDd17.qxdrw.cn
http://DMQV8TcV.qxdrw.cn
http://DHVdHYlc.qxdrw.cn
http://ZJ81RCMz.qxdrw.cn
http://h3lFrGOp.qxdrw.cn
http://lMECQHkA.qxdrw.cn
http://wc38gmyT.qxdrw.cn
http://peHiSsha.qxdrw.cn
http://G0mmIeY9.qxdrw.cn
http://uUTeuIvD.qxdrw.cn
http://njWRKJ5K.qxdrw.cn
http://sDbX5L78.qxdrw.cn
http://KbTRuk7l.qxdrw.cn
http://3dNXKNvb.qxdrw.cn
http://kXWKQScH.qxdrw.cn
http://GWvVQKl7.qxdrw.cn
http://xuCk1REl.qxdrw.cn
http://YVeFeAWZ.qxdrw.cn
http://rz8DSZ9y.qxdrw.cn
http://OY6C1Dow.qxdrw.cn
http://VgmYAk89.qxdrw.cn
http://rxKNJr3o.qxdrw.cn
http://LazWoUpo.qxdrw.cn
http://GTu9euun.qxdrw.cn
http://oKIPWJ0W.qxdrw.cn
http://www.dtcms.com/a/370847.html

相关文章:

  • 从 Excel 趋势线到机器学习:拆解 AI 背后的核心框架​
  • 嵌入式学习笔记--Linux系统编程阶段--DAY06进程间通信-消息队列
  • 【Beetle RP2350】摇杆控制自定义角度旋转舵机
  • 波特率vs比特率
  • C++ 14新增特性以及代码示例
  • SDRAM详细分析-08 数据手册解读
  • 51单片机---硬件学习(电子琴、主从应答模式、modbus模型、DS18B20传感器显示温度)
  • Blender 3D建模工具学习笔记
  • k8s网络原理
  • 新后端漏洞(上)- Weblogic SSRF漏洞
  • LockSupport详解以及使用
  • 【73页PPT】智慧方案业务协同管理平台解决方案(附下载方式)
  • Qt的入门
  • v0.29.1 敏感词性能优化之内部类+迭代器内部类
  • 【C++ 启发式搜索算法】
  • 个人成长职业发展
  • AI、人工智能础: 实体命名!
  • LeetCode 刷题【66. 加一、67. 二进制求和】
  • langchain源码概览
  • 07-任务调度器的挂起和恢复
  • dask.dataframe.shuffle.set_index中获取 divisions 的步骤分析
  • 【Go项目基建】GORM框架实现SQL校验拦截器(完整源码+详解)
  • 数据结构——栈(Java)
  • golang连接influxdb的orm操作
  • C#中一段程序类比博图
  • rh134第三章复习总结
  • Spring的事件监听机制(一)
  • 【鸿蒙 NEXT】V1迁移V2状态管理
  • FRCNet
  • git 冲突,Merge