赞
踩
Karmada(Karmada 是什么? | karmada)是一个开源的云原生多云容器编排平台,由华为开源,目标是让开发者像使用单个Kubernetes集群一样使用多个k8s集群。Karmada 旨在为多云和混合云场景下的多集群应用程序管理提供即插即用的自动化,具有集中式多云管理、高可用性、故障恢复和流量调度等关键功能。
控制面组件:
karmada-apiserver:API服务器,对外暴露 Karmada API 以及 Kubernetes 原生API,API 服务器是 Karmada 控制平面的前端。
karmada-aggregated-apiserver:聚合API服务器,使用k8s聚合API技术,实现了API服务器的扩展,从而实现了一些自定义的功能。
kube-controller-manager:精简版的k8s controller-manager。
karmada-controller-manager:自定义控制器,负责监视Karmada对象,并与底层集群的API服务器通信,以创建原生的 Kubernetes 资源。
karmada-scheduler:负责将 Kubernetes 原生API资源对象(以及CRD资源)调度到成员集群。
karmada-webhook:用于接收 karmada/Kubernetes API 请求的 HTTP 回调,并对请求进行处理
首先准备两台阿里云ACK(默认有SLB),其中一台当主集群,另一台当成员集群,将两台集群的config保存到本地,用于访问ACK。karmada控制面组件安装在主集群上。
karmada的安装有好几种方式,常用的有两种:
1.使用karmadactl工具
karmadactl是karmada提供的专门用于操作karmada的cli工具,通过
- karmadactl init \
- --crds='/root/kindapp/crds.tar.gz' \
- --namespace='karmada-system' \
- --port 31443 \
- --etcd-image='docker.io/kubesphere/etcd:v3.5.6' \
- --etcd-replicas=1 \
- --karmada-aggregated-apiserver-replicas=1 \
- --karmada-apiserver-replicas=1 \
- --karmada-controller-manager-replicas=1 \
- --karmada-kube-controller-manager-replicas=1 \
- --karmada-scheduler-replicas=1 \
- --karmada-webhook-replicas=1 \
- --karmada-aggregated-apiserver-image='docker.io/karmada/karmada-aggregated-apiserver:v1.6.4' \
- --karmada-apiserver-image='docker.io/kubesphere/kube-apiserver:v1.25.4' \
- --karmada-controller-manager-image='docker.io/karmada/karmada-controller-manager:v1.6.4' \
- --karmada-kube-controller-manager-image='docker.io/kubesphere/kube-controller-manager:v1.25.4' \
- --karmada-scheduler-image='docker.io/karmada/karmada-scheduler:v1.6.4' \
- --karmada-webhook-image='docker.io/karmada/karmada-webhook:v1.6.4'
可以快速安装karmada集群。这种方式比较适合具备从公网下载镜像的能力的k8s,因为etcd有一个initcontainer的image无法在这里配置,会导致镜像下载不下来。
2.使用helm安装
将karmada的代码下载到本地,其中有一个charts文件夹,里面的karmada文件夹就是chart包。
源码地址:GitHub - karmada-io/karmada: Open, Multi-Cloud, Multi-Cluster Kubernetes Orchestration
下载下来后,将apiserver的service改为loadbalancer
因为本次操作ack,是在我本地的虚拟机通过公网config进行操作,因此安装karmada,以及将集群加入karmada都需要公网能力。
在hosts中添加主集群apiserver的地址
由于karmada签发的证书默认是针对127.0.0.1的,因此需要在hosts中loadbalancer的ip,这样生成的证书才能访问loadbalancer。否则会报如下错误:
Unable to connect to the server: x509: certificate is valid for 127.0.0.1, not 210.51.27.152
添加代码如下:
hosts: [ "kubernetes.default.svc", "*.etcd.{{ .Release.Namespace }}.svc.{{ .Values.clusterDomain }}", "*.{{ .Release.Namespace }}.svc.{{ .Values.clusterDomain }}", "*.{{ .Release.Namespace }}.svc", "localhost", "127.0.0.1", "210.51.27.152" ]
将修改好的charts放置在本地服务器上。执行如下命令:
kubectl get secret karmada-kubeconfig -n karmada-system -o jsonpath={.data.kubeconfig} | base64 -d > karmada-config
之后修改karmada-config文件的server,从https://karmada-apiserver.karmada-system.svc.cluster.local:5443改为https://公网ip:5443。
之后便可以使用如下命令访问karmada了
kubectl --kubeconfig=/root/karmada/karmada-config get clusters
提示这个是因为现在karmada还没有纳管任何k8s集群。
使用如下命令,将主集群加入到karmada
karmadactl join member1 --kubeconfig=/root/karmada/karmada-config --cluster-kubeconfig='/root/.kube/config'
再次get
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。