Kubernetes Federation部署与使用体验
Kubefed是一个用于实现 Kubernetes集群联邦的项目,它允许用户在多个集群之间同步资源和配置。
Kubefed项目已经停止了活跃的开发和维护,因为它没有足够的社区参与和支持。Kubefed存储库已经于2023年4月25日被归档为只读状态,不再接受任何新的问题或拉取请求。Kubefed项目的继任者是 Karmada ,它是一个新的开源项目,旨在提供更先进和灵活的集群联邦能力。
k8s集群联邦需要一个主集群或若干个成员集群,主集群也可以作为成员集群加入联邦。Federation v2 的安装分两个部分,分别是 Controller Plan 和 kubefedctl。
控制平面安装
helm repo add kubefed-charts https://raw.githubusercontent.com/kubernetes-retired/kubefed/master/charts/
helm repo list
kubectl create namespace kube-federation-system
helm install kubefed --namespace kube-federation-system kubefed-charts/kubefed
默认在kube-federation-system命名空间创建了一些用于实现联邦控制平面的资源,包括
FederatedTypeConfig:定义了 Federated<API Type> 和 Kubernetes API 资源的关联关系,用于扩展联邦化的资源类型。
Federated<API Type>:定义了如何在多个集群中同步和调度对应的 Kubernetes API 资源。
ReplicaSchedulingPreference:定义了工作负载实例在不同集群中的分布策略。
KubeFedCluster:存储了注册的集群的基本信息,如 API Endpoint、CA Bundle 等,用于访问和管理联邦集群成员。
KubeFedController:协调不同集群之间的状态,如同步 Federated 资源与策略,并建立 Kubernetes 组件至对应集群上。
安装kubefedctl工具
wget https://github.com/kubernetes-retired/kubefed/releases/download/v0.10.0/kubefedctl-0.10.0-linux-amd64.tgz
tar -zxvf kubefedctl-0.10.0-linux-amd64.tgz -C /usr/local/bin/
构造kubeconfig文件
apiVersion: v1
clusters:
- cluster:
certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUMvakNDQWVhZ0F3SUJBZ0lCQURBTkJna3Foa2lHOXcwQkFRc0ZBREFWTVJNd0VRWURWUVFERXdwcmRXSmwKY201bGRHVnpNQjRYRFRJeU1EVXdOakEzTXpjek1sb1hEVE15TURVd016QTNNemN6TWxvd0ZURVRNQkVHQTFVRQpBeE1LYTNWaVpYSnVaWFJsY3pDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTmEwCkhKc3FQWGJ1OFVDa0s4RzU0NkJHUUowWW1KWUlKeW4xOGV0dmZFcTdpaWxaOHZlYVhlRGM0aFNKYURIZWtiREoKak43WUxWaDl6dmhMeHBxWWdETnpld3U0cTM1cHdZQi85R2RBaXpqaU1mc1MzazFKMVhmYjNkU1ZIcHZRVFV3cwpUOWJLamgwYVhXWjZIWGpVYjIwbFRKeGFZai9vQmtaK0w0TmxaS0hYUlhKRFFBK0NKNEU0QnZzWk5ncVpqbm9UCm03RUoxMG1LZUVHaTM5QWhuU1IyK05FZW5weWpxN01vRTFGRjBrUkVlSDA4b3YvQnFNSmRieUIrNC9tUHAySTQKckRDbTQ4TkxzaWdUOE5ObytXQ01LUHhnM3pQSnl1VzFHc0s5NWx5MTVIdjhlUXRwNzVqcWVvSk5qSjRuOEswKwo3VG5YWkFEaUh5cDRkWDZvRytVQ0F3RUFBYU5aTUZjd0RnWURWUjBQQVFIL0JBUURBZ0trTUE4R0ExVWRFd0VCCi93UUZNQU1CQWY4d0hRWURWUjBPQkJZRUZEaGhxdnk4NzRtQ2xGVmFrN09XbXBWdHUxSDVNQlVHQTFVZEVRUU8KTUF5Q0NtdDFZbVZ5Ym1WMFpYTXdEUVlKS29aSWh2Y05BUUVMQlFBRGdnRUJBRmpsZ0hwd1RyUmd6aGk4b3I1SgpaWUZCWHBKaGIzM0pWNlJRNzBBbzhZWitTV3U0L1dmekEwNEIrSm4wYlFORXd5S2gwZ1ZSUFJqYXZBUUFldmVRCjFWaVJ6TDhjVzFLN0Exa3BPdHhyUVlvSFh0Vi9jUHltYm1WNU55ZWd2a1krdklZZ1FTaXBTNGpqVmEreDR2SzUKdVViZjRwdzZJZkxNQVo3QTNjUkRsVVdWTG9adlZJaDUyQkFDTThpeUJwa25ORGpPNTJ2QmdJQTNuNGs0OFQxQwpJZzc1K2VNdm5XWndnMndlV1JOY1lWUEU4Q0Q2VENNazRmUTYzZWNMNnpoKzE1cGFxemhXTm0yZzBmVG5aOFZOCnJiNWE2a0lGTEthQVdPNVdEK25QMTcrVzE4ZUJBV21PRk9wcDcrTmFWVThnc1NDSEVOL29VUTZ3STlmREVDeHkKUkF3PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==
server: https://172.18.1.50:6443
name: cluster1
- cluster:
certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUMvakNDQWVhZ0F3SUJBZ0lCQURBTkJna3Foa2lHOXcwQkFRc0ZBREFWTVJNd0VRWURWUVFERXdwcmRXSmwKY201bGRHVnpNQjRYRFRJek1EY3dOVEF6TlRjMU1Gb1hEVE16TURjd01qQXpOVGMxTUZvd0ZURVRNQkVHQTFVRQpBeE1LYTNWaVpYSnVaWFJsY3pDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTWRuCkZwV0pnUzZFTVJiazJBUXczSW5TaXQ3N1NKQndkQzh4NFZ2RUk3aHB5NWE3elplUGpSVU1leEZ4bjBnbFNtMDkKdUlDZlppQlg0NFlickJNU3pkbGZNc0ZGZzBWOUtvT01JaTlIbGVDUlRaeWtnRW5nUTNOcnVyb0tpSERneEI0MQp5U1BCc2NzRm9zQS9sZnRsaXJ4YUVtOFMybDl6RndHZXZ5cHhNYW9ZRUdSY1NLYVlMNml0bGJiZVcyOUxuZnh1CnYxVmNRN3g0QWNXY3BiVjFhVTVpcnBiN3NHbDRydU54UzRkQkZDR3VINThQRG9vL1oxSEtyZVgrRGRkMktGVUcKN2JDVWNGM0FmdU5hakpmMUFpTjdVcnJWRCtScTVqNUpxVDNHNVFJQXhGK0sxZlNkYzFlQkN0djVPWjFDVE91ZwpEU3l1VXZoOGhjVjlGc0d2NFQwQ0F3RUFBYU5aTUZjd0RnWURWUjBQQVFIL0JBUURBZ0trTUE4R0ExVWRFd0VCCi93UUZNQU1CQWY4d0hRWURWUjBPQkJZRUZIdzcxQmk1SnVoYW1uaUxFL01waTNEMXdpY1pNQlVHQTFVZEVRUU8KTUF5Q0NtdDFZbVZ5Ym1WMFpYTXdEUVlKS29aSWh2Y05BUUVMQlFBRGdnRUJBQm1maWloREZYODRyY053dFNoNgo5OU1yZE4yczRSaGhxVXFEaGhyUi9iNUFVaThaRTFJUlUxWDJyWmFWUlc0Qnp1TnhsUU8yZXpPNVEyeVRMZWg2CkNSTXRCdGthUXk4RWRuOHllT3llUGtJYU9mZ3V6YTF5NXdsMVhYTUVmaXcvNTMwZlZPcTNjWndMeGNGNjBJREoKUHptdmZnc1d3Tm1QZWZ1QXN2QnE0VWE0bVZnTmM3S0hrcERzb1lOOXpCdkJMS1pWcDYvbUNrdzRqMVUyTlNVaAprazRLQ3R3b1dCd0U3aGFuRG1VK1pQNXRuMlVXQ2xLMFlsUGNnaHFUMEViSHB5MUU2RHBFZ2plaFBndjZVS0xZCjRzc25JRThXbHRZVlFEU1FPSWRNbFErVG9MWCtvWU15U1pRZFZ6NlhaTWNBQXEveFlMOWUzcTMzQXF4K284bkQKOU8wPQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==
server: https://172.18.1.100:6443
name: cluster2
kind: Config
preferences: {}
users:
- name: cluster1-admin
user:
client-certificate-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURJVENDQWdtZ0F3SUJBZ0lJUW9jV25CQTJrVE13RFFZSktvWklodmNOQVFFTEJRQXdGVEVUTUJFR0ExVUUKQXhNS2EzVmlaWEp1WlhSbGN6QWVGdzB5TWpBMU1EWXdOek0zTXpKYUZ3MHlOREEyTWprd05qUTFOVEZhTURReApGekFWQmdOVkJBb1REbk41YzNSbGJUcHRZWE4wWlhKek1Sa3dGd1lEVlFRREV4QnJkV0psY201bGRHVnpMV0ZrCmJXbHVNSUlCSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQTNBdnc0d08rMGoyS2VBclEKbVNqWlR6TkdYNDdFTlppcG43U2ZydTZMQTN4T0E0aVdjWEJzRENNSm9tUEo4SDhqUVFFSUlub3JwSnNMMERZUQpqdGpMT0EvYmFTOEgyMjM5djRCSkdGMFg4QzZ6UzJYYUp4eE1PYmJYZmFmcTB4enU3dTBuUUN5eXNCaVFEblEvCjR6U1poWUxNQmtzdDMzTTdVOGZ4dzRpNTV0bzlBWVM5RU9hRWZ0azZ5M2lvWWM1Ym9WMGdYSElmc3hUWERRekMKWHBXc09hN0o3NDZzd1hKeVZNOGN3T0FUSGVaVk1VTjA0ckVGazUrTnBhbU9MMmlDTTJUaloxTCtMQm9ic0hvQwpPOFdBZGhMaGpEa3A1WWE3VG5JRVNUQi9TZlY3SE5XZ1BVNG1vaHBQN1FwRm1hRjhJdnUvN2R1MjZrUzB5TjA3CkdzdWc3UUlEQVFBQm8xWXdWREFPQmdOVkhROEJBZjhFQkFNQ0JhQXdFd1lEVlIwbEJBd3dDZ1lJS3dZQkJRVUgKQXdJd0RBWURWUjBUQVFIL0JBSXdBREFmQmdOVkhTTUVHREFXZ0JRNFlhcjh2TytKZ3BSVldwT3pscHFWYmJ0UgorVEFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBaHBvTkczaC8xcmlWM3lrTWIzeTFQWVdCZW5LRExpRzdFT3IxClU1dnJ2OWhkVGNrTk1ER3JOaE95WXBDZUttSWp2U1c1Y3hQTHlHQTF1VmdMZUhvcDBlZUl2WCtkYjJhV2h1Q0oKbi9GSmJjVFJNZllieVdTMjBuN1VqTUE0SWpGeERDWEhpOUxodUl6RkZvYVBJc1g0b25JUjBteVpiQVJyTlNpRgpNc0RZTGMyeDR4WkwzU2s4eWg2NC9Ia1dzT2VBcTk3ZHpxd2k1aG8rTVpZd2NBSnFobklZSVBCU1dJeFo4UFkxCkZic2F2OURwWE92cU8yTVNqSVhPRVFwWkUzdmRMcmJab1c3S1VhSmJURkovSG8xZ2g3eUVtZzNXdnJqS21QR0EKbWp3SlBqY1ZuTXNweTVRT2NTbVRqSld5U2xscUQxalhpM1Nva2U0OEd3MU5OYmFwSHc9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==
client-key-data: LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFb2dJQkFBS0NBUUVBM0F2dzR3TyswajJLZUFyUW1TalpUek5HWDQ3RU5aaXBuN1NmcnU2TEEzeE9BNGlXCmNYQnNEQ01Kb21QSjhIOGpRUUVJSW5vcnBKc0wwRFlRanRqTE9BL2JhUzhIMjIzOXY0QkpHRjBYOEM2elMyWGEKSnh4TU9iYlhmYWZxMHh6dTd1MG5RQ3l5c0JpUURuUS80elNaaFlMTUJrc3QzM003VThmeHc0aTU1dG85QVlTOQpFT2FFZnRrNnkzaW9ZYzVib1YwZ1hISWZzeFRYRFF6Q1hwV3NPYTdKNzQ2c3dYSnlWTThjd09BVEhlWlZNVU4wCjRyRUZrNStOcGFtT0wyaUNNMlRqWjFMK0xCb2JzSG9DTzhXQWRoTGhqRGtwNVlhN1RuSUVTVEIvU2ZWN0hOV2cKUFU0bW9ocFA3UXBGbWFGOEl2dS83ZHUyNmtTMHlOMDdHc3VnN1FJREFRQUJBb0lCQUNseU5sVU1CNDBoK2tyUgovcWhhZ1ZQaG5JZXpKRkhVQjE4RmJtNU1qL0tBSDFHYkVIc2RhYngvZlBrUlFxQUIwbW9ULzZ3K3hxbWlhbjgxCkw3azRMRTdLN2RES0F2alpwc25ES0FGbXgzTjkyRmVEUDZ2T01LMU9PeGgzNEVzVFVBM0FyWHZ3NzFjcnlUWnYKdnZqVWwzWUdSTmVLb1lGTSt3ZTB5VnpEREFEbkVNakhUbnRDaFRvRGF1YnZTWGtsUHQ4ZkFFYnUyMWc5aEkwSwpTUlJPOFl0M1VjRkNKZHR2WURPS3V5YkRlQUJzNmtkOE14M1FjSEdDTTI0Qk9kNDJpZ1Ira3dCOWlvRndzNVRGClU1UmNmdFZxSGJDeG16SkRMRlZTdXZpcGpQMVpDNWs2STlXRlFZcUF5YTRnV21qd21yNFZOQWlvL2dWOXBGWTYKWCt5d3VTRUNnWUVBOTdrbHAvaXROaDhpV1RFZjRlRTN2QnFVbi9BV0IyRFhvbGFmNVhNOEd2VG1hQ2NFRS9YWAo0QVJPQitYZXJ4UlJXQTZmTmtBaWt0cjhqQnUrR3FrS3N1Vk9SQ29OWWE1OXRGL2EvbDlVdExaVDB1ZXhaalJRCmp2NW5ib2dLd0hnNmJqSWNJN3VPenFLaXF3YVhDRHkyeC93dEI5aFVEamtQRjZzRzNZOUN1emNDZ1lFQTQyWVIKU1NNbk5qa0xPbEQ0Q29SRDFWdGIxN3d1UWFiVjZRRWI4QWM0N1hjSkpReFJZRVVia3hWaEZudk5KNUN5ZHYwQwo3UGNZMm9wMWNiQ2xjSXpVR1dkMTNYbW04RXZ2Nnhtdm1VKy9OSkNicDJOWGtkYTl3RXRxVHl3UTQ2eWJnZ0NyCjhWQ2RoSGVKenJ0djZRMjNCM2RHZG0yR01XOFozbWV4dk13UGZ2c0NnWUJoUXJVeExPYTg0QjU1VEZ0TE1VVFQKdXMvdHQ3SytkTnhVNVpQajM0bVN2K0tTcy9iYTYyUTFsUnNaNkx1MG05S1FNelY1ZEZiZXQ5SCtKSXBRSjF5RwovcGJyRm1Pb25YekhTL2RNZGh0bzFFazIvamJkZk43QU5jeGdUbE9DVy9IOC8vbWlZZXBnNE9QaktEUTJUTGdxCjdxeXpidEVad0hkWGdKT3llNlBrb3dLQmdDOUhkMnlYYkgydm1wQURhYTcyRlF4MU5FRkVsUEY5ZUpnN2JNMloKRXRMOG51QWZFWVJNbWhFWXJ0ajM0STNMWGUrelp6cFJuYzlDWG16RzUzN2hLUEFuUExCUnJNM2xXL3FybW9Ecgp2YnQySFliTjl0VVJxdDRpVC9ZcUdWRGRBSEFsSjVyQ3doMWFwVUpnWWtJNFljZWhtdnJnaHJnY2UycHNjTjNxCko0YWxBb0dBRkJSVHpMMEVqRVV6NS9kOWVuZnpVNm80SnQvN3ZEdUJlM1g0TUhLTThVTW9qbDdLNUlEdTF1TkMKaVBXQXRCandtdXNWUnB4R1RGSUlWY3FJbHBqdHM5TzhuS0FmZTNhenRseE9kdDFBbDc5UjljMEFNTFVRZWVhTwpGZkRqWnRZWEFmU0R2SmZJL1NDZVdYU2NuS1YrbGpyY05wUnl5SXpqR3lKYm5vUFdxUVE9Ci0tLS0tRU5EIFJTQSBQUklWQVRFIEtFWS0tLS0tCg==
- name: cluster2-admin
user:
client-certificate-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURJVENDQWdtZ0F3SUJBZ0lJYjdhQytYNFIzV0V3RFFZSktvWklodmNOQVFFTEJRQXdGVEVUTUJFR0ExVUUKQXhNS2EzVmlaWEp1WlhSbGN6QWVGdzB5TXpBM01EVXdNelUzTlRCYUZ3MHlOREEzTURRd016VTNOVEphTURReApGekFWQmdOVkJBb1REbk41YzNSbGJUcHRZWE4wWlhKek1Sa3dGd1lEVlFRREV4QnJkV0psY201bGRHVnpMV0ZrCmJXbHVNSUlCSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQXZQM0laYk1CL0krV3BDeDMKZ2c2d0RYeEZOVTZ4Vyt0THNSK0FJc0RBbndiai9mMXEwakpkV2JCK1RrdHNJcDMwK2I5dzVEZkVlNkhpNDM4cQpJRHZNNCtLaWVBeFltV2p5bWlrM0FiSWZxT2ExWlpZWVJ6aXIwY1NMZSswVkpuTGY3TW1JNHA2bk1YeUJBSithCnBHZitDb2h6TXRGRXZQdVlXVkloZTZQV0tXTlpzVFJKcXB4S1NSd2NyNldGemlXdFNsdjVFRHZjMHBYQkcvV3oKQWF4YzFxS09LTmtjaHo3b2M3blJlL0kwSnN6cEJoYXhOYkY0d0NyZXI1eE1VcWZkbG5nZXRQek5QUXljOEZleQpaVkJuTDBRVmFVUHB1eTZiS1pVNGg3eVN6M1JUVHllRkM4b2hiYlQ3ZS8rRWhvOUdpVWRqaHRteXRuM2NUaXRDCnVyVm1Od0lEQVFBQm8xWXdWREFPQmdOVkhROEJBZjhFQkFNQ0JhQXdFd1lEVlIwbEJBd3dDZ1lJS3dZQkJRVUgKQXdJd0RBWURWUjBUQVFIL0JBSXdBREFmQmdOVkhTTUVHREFXZ0JSOE85UVl1U2JvV3BwNGl4UHpLWXR3OWNJbgpHVEFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBb0xXOU5hL0Uycnl6V1lpaE8zcGZVQ1lNbktkcXNOY2RTTEJICmtVRUF0UC9sNWNCb0JaTTI2N3lCVU5ncDEwbVE0ZUdleWlNelVNV3d1N0NSSndQbzlQcS9Hb1J1R1dZSWl2VkIKeWZKQWJEdDRWdnBudllOd1NxR05CeHpSaWttdjhXTU93cTRMVmtyL1Jqa1JZNGVneER6ZEVNc2VQdnU4ZUM1UQowaGdsWE5nTXZqTkt2N3FYZ1lzY2lvczQyeTQ3cFR0WloxWFZiYUpleUEwS0R3cE41R2x3S3lsb1g3MHhlMk96Cmx3UThOMWp6QTB3V2ZtSElia2V5aTUyYTFNSzF6UG1NMnB1SzdhL0NlaFRNOGI4RXhtUHc3RDA4dzJsZk1zK1UKenBVV1ExdHZPd29Cb0dkL3dyOERoQTd0QWx2ZTIrdk1pakJta3RJSG54cGd6aW1IclE9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==
client-key-data: LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFb3dJQkFBS0NBUUVBdlAzSVpiTUIvSStXcEN4M2dnNndEWHhGTlU2eFcrdExzUitBSXNEQW53YmovZjFxCjBqSmRXYkIrVGt0c0lwMzArYjl3NURmRWU2SGk0MzhxSUR2TTQrS2llQXhZbVdqeW1pazNBYklmcU9hMVpaWVkKUnppcjBjU0xlKzBWSm5MZjdNbUk0cDZuTVh5QkFKK2FwR2YrQ29oek10RkV2UHVZV1ZJaGU2UFdLV05ac1RSSgpxcHhLU1J3Y3I2V0Z6aVd0U2x2NUVEdmMwcFhCRy9XekFheGMxcUtPS05rY2h6N29jN25SZS9JMEpzenBCaGF4Ck5iRjR3Q3JlcjV4TVVxZmRsbmdldFB6TlBReWM4RmV5WlZCbkwwUVZhVVBwdXk2YktaVTRoN3lTejNSVFR5ZUYKQzhvaGJiVDdlLytFaG85R2lVZGpodG15dG4zY1RpdEN1clZtTndJREFRQUJBb0lCQUhzSFhuaE44c0llR3p1ZQpzdUdZZkNVYk85WjY5dHhXclR5TnZCVmprMEV5OUNKNDRSd2FxMGhpcTZaK1ZOT29ManlTMG9QT2hmclJwT2poCjlHTnRhbkVETFM2bkl0b2pScUx5cDV0VUFHWXNZZlBTcE5WZ1lBRzdSKzRScFU0VlJBNWFGK0VtMU1KVFFZdE4KV3hjaGwyLzE2Y0F3R09aSmhxREc1WU1lWWFFb3F4VlJUcmRoMGZYWlFQcnlLMGdHSTFHMFRqWldsZVVYbGlMTAo0VzRSNnUxbXdXeUtBNXdnWVMrWG90NXBQOEVKT2duOWp2dXNSM2svdzcrMUMxaXphbTR4RGo1OWFDbXZhTmc1Cis0UmFHb00vbXZUQ0RDbFltNURDanBzUDNMbXRob1FPVTRpbHZNNklrWGVieWNCZkxPMTZKbGR1cEJjWjZReWIKa0lyWXdRRUNnWUVBOGwxVmlmaEVxOXV0TmxHcmllRllVL2U0b2xTTllTOGpKSWhhYlowcmlnMWlSUkZGR2YrSgpYenJoSFdHazczWWZIZVdCbTBOaU5rWUZ3NS9aam1rdGQ4MzRNTkM1TFdxdHh3UG1MSE9iT2RQNDVZZzFrNTFCCkpnYy9pVEl6RjRpVkNlMFQzaWtpS0h4Wi93L3JnZHhSZXkyaXZFSnl5bGNlWXNqL09SVjFOTGNDZ1lFQXg1KzkKQUhBbHVQYTN2RE5GR21tWHBHb0pTMGZBdVI4bXhRM0Qwam1ZOGdwNC9jN1FNejNRRmlCWGFlVGljSzJmN293SgpPRWs4elJ3Z241TDVxSUo4bDg1TW4wc3JTYzNHMEwzSTA0WFlRRUdSbTV3MlNjNjNWVnZ6YjY3VmVyY3VyeTh6CkIvTXEvYkFGQVM5KzFGV0ZRanJ6ci9EQlFSd1cwMWE4Z1ZSTzJvRUNnWUVBM2xJWmhpODBKd1dqRlNIRG5mNFYKUFNrT3QvR2hvdFZQZ2xLRnlPa1VxRlZ3b0hTZ0U2SWhqRGFCaTZjbldmWGJ3MXZsRU55MStaMHY2bXYyY0RrdwoyU1lhRmdWUTZFVmtWUnZSaDFNZ3YrSWUvY1o5aHdRSVgrN2tMR0RkRnloVnRyNC9yRm5GR0toQkVjU3p2dkt2CjE3TmNCUjliRnhybEo2N0MxOFZFTjI4Q2dZQXNRZ3dqUnJuMlVpeldPdis5SldBTGdiN2h3OXpFcmxWb0p1OGQKY3N1b0RnNVpKenNkd1R5YlN6eFdLL3JRUkk1SzB4MVFMMXlkbFBqZXFEVlYyT2hLdCtCaENNZG1LNHRDeUhENApCSnEzVkZJMkQrSXhadlZhcFhKSmRwZTZCMWNBWEJTU1ZLVlpiV2NPcGpzV1ZJZWc4WFVKc3ZVRnZIYUxFSlhtCmpveVZBUUtCZ0VxM1k1VmFrNFFrVkwzSjJtWHZYVmF4NjEwK2NLKzA2SVRWbUxzOVZjeU1qVTgxVytRamdmdXcKek9mWC9YZ3J0em1qdy9GeGVRRys3SkJ2UXlDc0N3LzJzcS9sUG5PcVhMQ2hsQ2RuUzh2OTgxWXlVZThHL00rZApSYWtLZklhSnFtcUs4Z2NsbVFPY0pocUVnRWZIS3J2MlltQ2g5QlhCL0Jrdi9iQ1FrNjNjCi0tLS0tRU5EIFJTQSBQUklWQVRFIEtFWS0tLS0tCg==
contexts:
- context:
cluster: cluster1
user: cluster1-admin
name: cluster1
- context:
cluster: cluster2
user: cluster2-admin
name: cluster2
current-context: cluster1
将集群加入k8s联邦(将cluster1作为主集群,cluster1和cluster2作为成员集群加入k8s联邦)
kubefedctl join cluster1 --host-cluster-context cluster1 --v=2 --kubeconfig=./config
kubefedctl join cluster2 --host-cluster-context cluster1 --v=2 --kubeconfig=./config
查看联邦成员
kubectl -n kube-federation-system get kubefedclusters
启用想在联邦集群中同步的资源类型
kubefedctl enable deployments.apps
kubefedctl enable services
kubefedctl enable configmaps
kubefedctl enable ingresses
kubefedctl enable jobs
kubefedctl enable namespaces
kubefedctl enable replicasets
kubefedctl enable secrets
kubefedctl enable serviceaccounts
kubefedctl enable clusterroles
查看联邦集群中启用的资源类型
kubectl get federatedtypeconfigs -n kube-federation-system
查看可以启用的资源类型
kubectl api-resources --api-group=types.kubefed.io
禁用联邦资源类型
kubefedctl disable <ResourceType>
将命名空间加入到所有的联邦集群
kubefedctl federate namespace test-namespace
或将命名空间加入到指定的联邦集群(此处指定了cluster1和cluster2)
apiVersion: types.kubefed.io/v1beta1
kind: FederatedNamespace
metadata:
name: test-namespace
namespace: test-namespace
spec:
placement:
clusters:
- name: cluster1
- name: cluster2
创建联邦资源对象(每个集群都会创建3个nginx的pod)
apiVersion: types.kubefed.io/v1beta1
kind: FederatedDeployment
metadata:
name: nginx
namespace: test-namespace
spec:
placement:
clusters:
- name: cluster1
- name: cluster2
template:
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- image: nginx
name: nginx
创建联邦资源对象(将3个nginx的pod分散在两个集群中)
apiVersion: types.kubefed.io/v1beta1
kind: FederatedDeployment
metadata:
name: nginx
namespace: test-namespace
spec:
placement:
clusters:
- name: cluster1
- name: cluster2
template:
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- image: nginx
name: nginx
overrides:
- clusterName: cluster1
clusterOverrides:
- path: "/spec/replicas"
value: 2
- clusterName: cluster2
clusterOverrides:
- path: "/spec/replicas"
value: 1
解散k8s联邦
kubefedctl unjoin cluster2 --host-cluster-context cluster1 --v=2 --kubeconfig=./config
kubefedctl unjoin cluster1 --host-cluster-context cluster1 --v=2 --kubeconfig=./config
helm uninstall kubefed --namespace kube-federation-system
kubectl delete ns kube-federation-system
作者:wanghongwei
版权声明:本作品遵循<CC BY-NC-ND 4.0>版权协议,商业转载请联系作者获得授权,非商业转载请附上原文出处链接及本声明。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)