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

多集群代理服務(wù)

更新時(shí)間:

多集群運(yùn)維時(shí),您需要經(jīng)常切換不同的KubeConfig來(lái)操作指定的目標(biāo)集群,成本高、易出錯(cuò)。ACK One多集群代理服務(wù)讓您可以通過(guò)Fleet實(shí)例的單個(gè)KubeConfig實(shí)現(xiàn)對(duì)多個(gè)關(guān)聯(lián)集群的操作,例如部署Deployment,查看Pod狀態(tài)和日志等。本文介紹如何通過(guò)命令行方式和Kubernetes API方式使用多集群代理服務(wù)。

前提條件

背景信息

多集群代理服務(wù)通過(guò)Fleet實(shí)例代理實(shí)現(xiàn),由Fleet實(shí)例代理創(chuàng)建的資源僅在相應(yīng)的關(guān)聯(lián)集群中生效。

通過(guò)命令行方式使用多集群代理創(chuàng)建應(yīng)用

  1. 執(zhí)行以下命令,查看Fleet實(shí)例管理的關(guān)聯(lián)集群,確定應(yīng)用分發(fā)的目標(biāo)集群。

    kubectl get managedclusters

    預(yù)期輸出:

    NAME                     HUB ACCEPTED   MANAGED CLUSTER URLS   JOINED   AVAILABLE   AGE
    managedcluster-c5***z9   true                                  True     True        12d
    managedcluster-c1***e5   true                                  True     True        12d
  2. 使用以下內(nèi)容,創(chuàng)建app.yaml文件。

    展開(kāi)查看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. 執(zhí)行以下命令,在Fleet實(shí)例上部署應(yīng)用demo。

    您需要指定目標(biāo)集群,下面以Fleet實(shí)例管理的關(guān)聯(lián)集群managedcluster-c1***e5為例進(jìn)行說(shuō)明。

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

    預(yù)期輸出:

    Run on ManagedCluster managedcluster-c1***e5
    deployment.apps/demo created
    service/demo-svc created
    ingress.networking.k8s.io/demo created
  4. 查看應(yīng)用的狀態(tài)。

    • 執(zhí)行以下命令,查看Deployment的狀態(tài)。

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

      預(yù)期輸出:

      Run on ManagedCluster managedcluster-c1xxxe5
      NAME   READY   UP-TO-DATE   AVAILABLE   AGE
      demo   1/1     1            1           2m48s
    • 執(zhí)行以下命令,查看Pod的狀態(tài)。

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

      預(yù)期輸出:

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

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

      預(yù)期輸出:

      Run on ManagedCluster managedcluster-c1***e5
      2021-12-16 24:00:00 Started server on :8080
    • 執(zhí)行以下命令,查看Service的狀態(tài)。

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

      預(yù)期輸出:

      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
    • 執(zhí)行以下命令,查看Ingress的狀態(tài)。

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

      預(yù)期輸出:

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

通過(guò)Kubernetes API方式使用多集群代理

  1. 使用Kubernetes API獲取Fleet實(shí)例管理的關(guān)聯(lián)集群列表。

    1. 查看Fleet實(shí)例的KubeConfig,從KubeConfig文件中提取ca、keyapiserver信息,配置Kubernetes API認(rèn)證的命令如下:

      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實(shí)例的Kubernetes API,獲取Fleet實(shí)例管理的關(guān)聯(lián)集群。

      curl --cert client-cert.pem --key client-key.pem -k $APISERVER/apis/cluster.open-cluster-management.io/v1/managedclusters
      說(shuō)明

      Fleet實(shí)例Kubernetes API的URL路徑為:/apis/cluster.open-cluster-management.io/v1/managedclusters

  2. 使用Fleet實(shí)例Kubernetes API的代理功能,獲取對(duì)應(yīng)關(guān)聯(lián)集群的資源信息。

    curl --cert client-cert.pem --key client-key.pem -k $APISERVER/apis/cluster.core.oam.dev/v1alpha1/clustergateways/<替換為關(guān)聯(lián)集群名稱>/proxy/api/v1/namespaces/demo/pods
    說(shuō)明

    Fleet實(shí)例Kubernetes API代理功能的URL路徑為:/apis/cluster.core.oam.dev/v1alpha1/clustergateways/<關(guān)聯(lián)集群名稱>/proxy/<關(guān)聯(lián)集群資源Kubernetes API URL路徑>。