容器服务变配

使用ACK部署容器服务后,若有对服务配置进行修改的需求,可以通过服务实例变配功能来实现,例如修改服务相关的Pod数和Pod资源占用量。本文介绍容器部署服务变配功能的详细内容。

创建支持变配的容器服务

此处使用容器镜像关联功能创建容器服务。

  1. 登录计算巢控制台

  2. 在左侧导航栏中,选择我的服务,并在我的服务页面中选择我创建的服务,然后单击创建新服务

  3. 我创建的服务页签中,单击创建新服务,并在创建新服务界面配置服务信息。

    此处只列举变配容器服务设置需要特别配置的参数,其他参数配置,请参见创建私有部署服务

    1. 服务部署区域的模板内容处,编辑服务模板内容。

      本示例中,将nginx服务对应的Pod副本数、Pod资源最大能占用的内存数和CPU核数定义为参数,用于服务实例的变配。更多信息,请参见模板示例

      说明

      编辑服务模板时,您需要在服务模板中定义同期镜像关联的标识位和访问凭证标识位。在创建服务实例时,计算巢会自动识别模板中标识位,自动替换成部署物对应的容器镜像版本。详细信息,请参见容器镜像关联

      2023-12-26_15-31-21.png

    2. 部署物关联处,设置容器镜像关联信息。2023-12-26_15-34-19.png

    3. 变配处,设置服务的变配信息。

      1. 开启支持服务实例变配

      2. 单击添加变配操作,在弹窗中选择模板、设置操作名称、填写操作描述、设置变配类型,并在选择参数中,将模板参数ReplicaCount、容器可用CPU核数CpuLimit和容器可用内存MemoryLimit设置为可变配参数。2024-05-16_16-38-47.png

  4. 单击创建服务

创建服务实例并进行变配操作

  1. 创建服务实例。

    在服务实例创建页中,根据界面提示,填入对应参数。更多信息,请参见创建私有部署服务实例7.png

  2. 服务实例创建完成后,在服务实例详情页的资源页签中,查看容器Pod资源信息,并在容器服务控制台查看该容器资源的限制信息。8.png9.png

  3. 变配服务实例。

    1. 在服务实例详情页的右上角,单击变配服务实例10.png

    2. 变配服务实例弹框中,选择变配类型,然后单击下一步1.png

    3. 设置变配参数页签中,设置变配的参数。然后单击下一步2.png

    4. 变配参数预览页签中,确认变配参数信息,然后单击确定

      在服务实例详情页的实例信息区域,可查看变配状态。3.png

  4. 变配完成后,您可以在服务实例详情页的资源页签中查看容器Pod资源数和容器资源使用限制信息。

    • 容器Pod资源从3个增加到了5个。4.png

    • 容器资源使用限制CPU变成了500m,memory变成了200Mi。5.png

模板示例

ROSTemplateFormatVersion: '2015-09-01'
Parameters:
  ClusterId:
    Type: String
    Description: The ID of the kubernetes cluster.
    AssociationProperty: 'ALIYUN::CS::Cluster::ClusterId'
    AssociationPropertyMetadata:
      RegionId: '${RegionId}'
  ReplicaCount:
    Type: Number
    Description: Pod relicas count
    Default: 3
  MemoryLimit:
    Type: String
    Description: Container Memory Limit
    Default: 100Mi
  CpuLimit:
    Type: String
    Description: Container Cpu Core Limit
    Default: 250m
Resources:
  ClusterApplication:
    Type: 'ALIYUN::CS::ClusterApplication'
    Properties:
      YamlContent:
        'Fn::Sub': |
          apiVersion: v1
          data:
            .dockerconfigjson: {{computenest::acr::dockerconfigjson}}
          kind: Secret
          metadata:
            name: computenestrepo
            namespace: nginx
          type: kubernetes.io/dockerconfigjson
          ---
          apiVersion: apps/v1
          kind: Deployment
          metadata:
            name: nginx
            namespace: nginx
            labels:
              app: nginx
          spec:
            replicas: ${ReplicaCount}
            selector:
              matchLabels:
                app: nginx
            template:
              metadata:
                labels:
                  app: nginx
              spec:
                containers:
                - name: nginx
                  image: {{ computenest::acrimage::nginx }}
                  ports:
                  - containerPort: 80
                  resources:
                    limits:
                      memory: ${MemoryLimit}
                      cpu: ${CpuLimit}
                imagePullSecrets:
                - name: computenestrepo
          ---
          apiVersion: v1
          kind: Service
          metadata:
            namespace: nginx
            labels:
              app: nginx
            name: nginx
          spec:
            ports:
            - port: 8080
              protocol: TCP
              targetPort: 80
            selector:
              app: nginx
            type: LoadBalancer
      ClusterId:
        Ref: ClusterId
      DefaultNamespace: nginx
Outputs:
  ClusterId:
    Description: The ID of the cluster.
    Value:
      'Fn::GetAtt':
        - ClusterApplication
        - ClusterId