使用ACK部署容器服务后,若有对服务配置进行修改的需求,可以通过服务实例变配功能来实现,例如修改服务相关的Pod数和Pod资源占用量。本文介绍容器部署服务变配功能的详细内容。
创建支持变配的容器服务
此处使用容器镜像关联功能创建容器服务。
登录计算巢控制台。
在左侧导航栏中,选择我的服务,并在我的服务页面中选择我创建的服务,然后单击创建新服务。
在我创建的服务页签中,单击创建新服务,并在创建新服务界面配置服务信息。
此处只列举变配容器服务设置需要特别配置的参数,其他参数配置,请参见创建私有部署服务。
在服务部署区域的模板内容处,编辑服务模板内容。
本示例中,将nginx服务对应的Pod副本数、Pod资源最大能占用的内存数和CPU核数定义为参数,用于服务实例的变配。更多信息,请参见模板示例。
说明编辑服务模板时,您需要在服务模板中定义同期镜像关联的标识位和访问凭证标识位。在创建服务实例时,计算巢会自动识别模板中标识位,自动替换成部署物对应的容器镜像版本。详细信息,请参见容器镜像关联。
在部署物关联处,设置容器镜像关联信息。
在变配处,设置服务的变配信息。
开启支持服务实例变配。
单击添加变配操作,在弹窗中选择模板、设置操作名称、填写操作描述、设置变配类型,并在选择参数中,将模板参数
ReplicaCount
、容器可用CPU核数CpuLimit
和容器可用内存MemoryLimit
设置为可变配参数。
单击创建服务。
创建服务实例并进行变配操作
创建服务实例。
在服务实例创建页中,根据界面提示,填入对应参数。更多信息,请参见创建私有部署服务实例。
服务实例创建完成后,在服务实例详情页的资源页签中,查看容器Pod资源信息,并在容器服务控制台查看该容器资源的限制信息。
变配服务实例。
在服务实例详情页的右上角,单击变配服务实例。
在变配服务实例弹框中,选择变配类型,然后单击下一步。
在设置变配参数页签中,设置变配的参数。然后单击下一步。
在变配参数预览页签中,确认变配参数信息,然后单击确定。
在服务实例详情页的实例信息区域,可查看变配状态。
变配完成后,您可以在服务实例详情页的资源页签中查看容器Pod资源数和容器资源使用限制信息。
容器Pod资源从3个增加到了5个。
容器资源使用限制CPU变成了500m,
memory
变成了200Mi。
模板示例
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