概述
随着容器技术的发展和普及,以Kubernetes为标准的容器技术已经成为云计算事实标准。在业务形态和云灾备场景下,需要服务进行多地域部署,这就需要对k8s不同地域的集群进行管理。Federation(集群联邦)是k8s社区中重要的多云管理项目,实现了跨地区跨服务商管理多个k8s集群的功能。
目前社区有Federation v1和v2两个版本,v1已被官方强烈推荐不使用,下面介绍如何快速在阿里云Kubernetes容器服务上搭建和使用Federation v2。
准备Kubernetes集群
需要准备两个Kubernetes集群,可以通过容器服务管理控制台非常方便地快速创建 Kubernetes 集群。具体过程可以参考创建Kubernetes集群。
部署Federation v2
登录【容器服务管理控制台】,点击左侧的【应用目录】。
点击进去,编辑参数和选择部署集群(需要部署在federation主集群上)。
部署成功之后跳转至下面页面:
体验Federation v2
确认本地已经安装 kubefedctl 工具,并且已经配置好kubeconfig,配置如下图所示:
kubectl config get-contexts
CURRENT NAME CLUSTER AUTHINFO NAMESPACE
* cluster1 cluster1 kubernetes-admin1
cluster2 cluster2 kubernetes-admin2
以cluster1为主集群,组建federation集群:
kubefedctl join cluster1 --cluster-context cluster1 \
--host-cluster-context cluster1 --add-to-registry --v=2
kubefedctl join cluster2 --cluster-context cluster2 \
--host-cluster-context cluster1 --add-to-registry --v=2
查看join结果:
kubectl get federatedcluster -n federation-system
NAME READY AGE
cluster1 True 23s
cluster2 True 10s
创建federateddeployment验证:
apiVersion: v1
kind: Namespace
metadata:
name: test-namespace
---
apiVersion: types.federation.k8s.io/v1alpha1
kind: FederatedNamespace
metadata:
name: test-namespace
namespace: test-namespace
spec:
placement:
clusterNames:
- cluster1
- cluster2
---
apiVersion: types.federation.k8s.io/v1alpha1
kind: FederatedDeployment
metadata:
name: test-deployment
namespace: test-namespace
spec:
template:
metadata:
labels:
app: nginx
spec:
replicas: 2
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- image: nginx
name: nginx
resources:
limits:
cpu: 500m
requests:
cpu: 200m
placement:
clusterNames:
- cluster1
- cluster2
查看cluster1和cluster2 deployment情况:
kubectl get deployment -n test-namespace --context cluster1
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
test-deployment 2 2 2 2 71s
kubectl get deployment -n test-namespace --context cluster2
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
test-deployment 2 2 2 2 77s
说明可以通过federateddeployment来部署每个集群的deployment。
总结
本文通过介绍如何在阿里云Kubernetes容器服务上搭建Federation v2环境,体验使用Federation v2带来的多集群管理的便捷性。