阿里云Kubernetes容器服务上体验Federation v2

概述

随着容器技术的发展和普及,以Kubernetes为标准的容器技术已经成为云计算事实标准。在业务形态和云灾备场景下,需要服务进行多地域部署,这就需要对k8s不同地域的集群进行管理。Federation(集群联邦)是k8s社区中重要的多云管理项目,实现了跨地区跨服务商管理多个k8s集群的功能。

目前社区有Federation v1和v2两个版本,v1已被官方强烈推荐不使用,下面介绍如何快速在阿里云Kubernetes容器服务上搭建和使用Federation v2。

准备Kubernetes集群

需要准备两个Kubernetes集群,可以通过容器服务管理控制台非常方便地快速创建 Kubernetes 集群。具体过程可以参考创建Kubernetes集群

部署Federation v2

登录【容器服务管理控制台】,点击左侧的【应用目录】。
Snip20190509_53

点击进去,编辑参数和选择部署集群(需要部署在federation主集群上)。
Snip20190509_69

部署成功之后跳转至下面页面:
Snip20190509_71

体验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情况:

扫描二维码关注公众号,回复: 6181967 查看本文章
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带来的多集群管理的便捷性。

猜你喜欢

转载自yq.aliyun.com/articles/701928