日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

多集群代理服務

多集群運維時,您需要經常切換不同的KubeConfig來操作指定的目標集群,成本高、易出錯。ACK One多集群代理服務讓您可以通過Fleet實例的單個KubeConfig實現對多個關聯集群的操作,例如部署Deployment,查看Pod狀態和日志等。本文介紹如何通過命令行方式和Kubernetes API方式使用多集群代理服務。

前提條件

背景信息

多集群代理服務通過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文件中提取cakeyapiserver信息,配置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路徑>