帮助文档 Logo
平台使用
阿里云
百度云
移动云
智算服务
教育生态
登录 →
帮助文档 Logo
平台使用 阿里云 百度云 移动云 智算服务 教育生态
登录
  1. 首页
  2. 阿里云
  3. 分布式云容器平台ACK One
  4. 操作指南
  5. 多集群舰队
  6. 多集群代理服务

多集群代理服务

  • 多集群舰队
  • 发布于 2025-04-18
  • 0 次阅读
文档编辑
文档编辑

多集群运维时,您需要经常切换不同的KubeConfig来操作指定的目标集群,成本高、易出错。ACK One多集群代理服务让您可以通过Fleet实例的单个KubeConfig实现对多个关联集群的操作,例如部署Deployment,查看Pod状态和日志等。本文介绍如何通过命令行方式和Kubernetes API方式使用多集群代理服务。

前提条件

  • 已从ACK One控制台获取Fleet实例的KubeConfig,并通过kubectl连接至Fleet实例。

  • 已开启舰队管理功能。具体操作,请参见开启舰队管理功能。

  • 舰队的Fleet实例已添加2个关联集群(服务提供者集群、服务消费者集群)。具体操作,请参见添加关联集群。

  • 已安装AMC命令行工具。具体操作,请参见AMC命令行帮助。

背景信息

多集群代理服务通过Fleet实例代理实现,由Fleet实例代理创建的资源仅在相应的关联集群中生效。

通过命令行方式使用多集群代理创建应用

  1. 执行以下命令,查看Fleet实例管理的关联集群,确定应用分发的目标集群。

    kubectl get managedclusters

    预期输出:

    NAME                     HUB ACCEPTED   MANAGED CLUSTER URLS   JOINED   AVAILABLE   AGE
    managedcluster-c5***z9   true                                  True     True        12d
    managedcluster-c1***e5   true                                  True     True        12d
  2. 使用以下内容,创建app.yaml文件。

    展开查看app.yaml文件

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: demo
      namespace: demo
      labels:
        app: demo
    spec:
      minReadySeconds: 5
      revisionHistoryLimit: 5
      progressDeadlineSeconds: 60
      strategy:
        rollingUpdate:
          maxUnavailable: 1
        type: RollingUpdate
      selector:
        matchLabels:
          app: demo
      template:
        metadata:
          annotations:
            prometheus.io/scrape: "true"
            prometheus.io/port: "9797"
          labels:
            app: demo
        spec:
          containers:
          - name: demo
            image: registry.cn-hangzhou.aliyuncs.com/acs/rollouts-demo:red
            imagePullPolicy: IfNotPresent
            ports:
            - name: http
              containerPort: 8080
              protocol: TCP
            readinessProbe:
              tcpSocket:
                port: 8080
              initialDelaySeconds: 5
              timeoutSeconds: 5
            resources:
              limits:
                cpu: 2000m
                memory: 512Mi
              requests:
                cpu: 100m
                memory: 64Mi
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: demo-svc
      namespace: demo
    spec:
      selector:
        app: demo
      ports:
        - protocol: TCP
          port: 80
          targetPort: 8080
    ---
    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: demo
      namespace: demo
      labels:
        app: demo
    spec:
      rules:
        - host: app.demo.example.com
          http:
            paths:
            - path: /
              pathType: Prefix
              backend:
                service:
                  name: demo-svc
                  port:
                    number: 80
  3. 执行以下命令,在Fleet实例上部署应用demo。

    您需要指定目标集群,下面以Fleet实例管理的关联集群managedcluster-c1***e5为例进行说明。

    kubectl amc apply -f app.yaml -m managedcluster-c1***e5

    预期输出:

    Run on ManagedCluster managedcluster-c1***e5
    deployment.apps/demo created
    service/demo-svc created
    ingress.networking.k8s.io/demo created
  4. 查看应用的状态。

    • 执行以下命令,查看Deployment的状态。

      kubectl amc get deployment -n demo -m managedcluster-c1***e5

      预期输出:

      Run on ManagedCluster managedcluster-c1xxxe5
      NAME   READY   UP-TO-DATE   AVAILABLE   AGE
      demo   1/1     1            1           2m48s
    • 执行以下命令,查看Pod的状态。

      kubectl amc get pod -n demo -m managedcluster-c1***e5

      预期输出:

      Run on ManagedCluster managedcluster-c1***e5
      NAME                   READY   STATUS    RESTARTS   AGE
      demo-fdf4b6b7d-vthqj   1/1     Running   0          6m55s
    • 执行以下命令,查看Pod的日志。

      kubectl amc logs demo-fdf4b6b7d-vthqj -n demo -m managedcluster-c1***e5

      预期输出:

      Run on ManagedCluster managedcluster-c1***e5
      2021-12-16 24:00:00 Started server on :8080
    • 执行以下命令,查看Service的状态。

      kubectl amc get service -n demo -m managedcluster-c1***e5

      预期输出:

      Run on ManagedCluster managedcluster-c1***e5
      NAME       TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)   AGE
      demo-svc   ClusterIP   172.16.17.29   <none>        80/TCP    3m55s
    • 执行以下命令,查看Ingress的状态。

      kubectl amc get ingress -n demo -m managedcluster-c1***e5

      预期输出:

      Run on ManagedCluster managedcluster-c1***e5
      NAME   CLASS    HOSTS                  ADDRESS        PORTS   AG
      demo   <none>   app.demo.example.com   123.56.XX.XX   80      4m10s

通过Kubernetes API方式使用多集群代理

  1. 使用Kubernetes API获取Fleet实例管理的关联集群列表。

    1. 查看Fleet实例的KubeConfig,从KubeConfig文件中提取ca、key和apiserver信息,配置Kubernetes API认证的命令如下:

      cat  $KUBECONFIG |grep client-certificate-data | awk -F ' ' '{print $2}' |base64 -d > client-cert.pem
      cat  $KUBECONFIG |grep client-key-data | awk -F ' ' '{print $2}' |base64 -d > client-key.pem
      APISERVER=`cat  $KUBECONFIG |grep server | awk -F ' ' '{print $2}'`
    2. 使用Fleet实例的Kubernetes API,获取Fleet实例管理的关联集群。

      curl --cert client-cert.pem --key client-key.pem -k $APISERVER/apis/cluster.open-cluster-management.io/v1/managedclusters
      说明

      Fleet实例Kubernetes API的URL路径为:/apis/cluster.open-cluster-management.io/v1/managedclusters。

  2. 使用Fleet实例Kubernetes API的代理功能,获取对应关联集群的资源信息。

    curl --cert client-cert.pem --key client-key.pem -k $APISERVER/apis/cluster.core.oam.dev/v1alpha1/clustergateways/<替换为关联集群名称>/proxy/api/v1/namespaces/demo/pods
    说明

    Fleet实例Kubernetes API代理功能的URL路径为:/apis/cluster.core.oam.dev/v1alpha1/clustergateways/<关联集群名称>/proxy/<关联集群资源Kubernetes API URL路径>。

相关文章

舰队管理概述 2025-04-18 18:12

随着Kubernetes集群的广泛应用,企业往往需要运行和管理多个Kubernetes集群,由此带来一系列的问题,例如多集群的管理、对外提供统一的入口、多集群资源的调度等问题。ACK One舰队管理的Fleet实例是由ACK托管的,可以管理任意环境的Kubernetes集群,为企业提供一致的云原生应

仓库管理 2025-04-18 18:11

本文介绍如何在GitOps系统中,通过ArgoCD CLI和ArgoCD控制台方式添加、查看及删除Git源仓库和Helm源仓库。 前提条件 已登录GitOps系统。具体操作,请参见登录GitOps系统

舰队管理网络规划 2025-04-18 18:12

通过舰队管理可以实现跨地域管理多个关联集群。开启舰队管理功能需要配置舰队所在的地域、专有网络VPC和虚拟交换机信息。本文介绍舰队与关联集群的网络连接架构以及如何选择舰队所在的地域、专有网络VPC和虚拟交换机。 网络架构

GitOps概述 2025-04-18 18:11

GitOps是将Git仓库作为Kubernetes集群中部署应用的唯一来源,通过自动化配置基础设施实现应用的持续部署。Fleet实例托管了ArgoCD,并集成多集群能力,实现多集群的GitOps持续交付,满足应用的高可用部署、系统组件多集群分发等需求。本文介绍GitOps和ACK One GitOp

登录GitOps系统 2025-04-18 18:11

本文介绍ACK One GitOps用户如何登录GitOps系统。 前提条件

Application管理 2025-04-18 18:11

本文介绍如何使用GitOps系统管理应用,包括创建部署单个应用、更新和回滚应用。 前提条件

目录
Copyright © 2025 your company All Rights Reserved. Powered by 博智数字服务平台.
闽ICP备08105208号-1