同步操作将从 腾讯蓝鲸智云/bk-bcs 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
bcs-deployment是基于bcs-application抽象出的顶层概念、主要满足应用的滚动升级,回滚,暂停,扩、缩容等需求。
{
"apiVersion": "v4",
"kind": "deployment",
"metadata": {
"labels": {
"label_deployment": "label_deployment"
},
"name": "deployment-test-001",
"namespace": "defaultGroup"
},
"restartPolicy": {
"policy": "Always",
"interval": 5,
"backoff": 10
},
"killPolicy":{
"gracePeriod": 10
},
"constraint": {
"IntersectionItem": [
{
"UnionData": [
{
"name": "hostname",
"operate": "CLUSTER",
"type": 4,
"set": {
"item": [
"mesos-slave-1",
"mesos-slave-2"
]
}
}
]
}
]
},
"spec": {
"instance": 2,
"selector": {
"podname": "app-test-001"
},
"strategy": {
"type": "RollingUpdate",
"rollingupdate": {
"maxUnavilable": 1,
"maxSurge": 1,
"upgradeDuration": 60,
"rollingOrder": "CreateFirst",
"rollingManually": false
}
},
"template": {
"metadata": {
"labels": {
"label_deployment": "label_deployment"
},
"name": "deployment-test-001",
"namespace": "defaultGroup"
},
"spec": {
"containers": [
{
"command": "python",
"args": [
"-m",
"SimpleHTTPServer",
"8888"
],
"parameters": [],
"type": "MESOS",
"env": [
{
"name": "DNS_HOSTS",
"value": "test_env"
}
],
"image": "docker.hub.com/xxx/xxx:v1",
"imagePullUser": "xxxx",
"imagePullPasswd": "xxxxx",
"imagePullPolicy": "Always",
"privileged": false,
"ports": [
{
"containerPort": 8899,
"name": "test-port",
"protocol": "HTTP"
}
],
"healthChecks": [
{
"protocol": "tcp",
"path": "/http/path/only",
"delaySeconds": 10,
"gracePeriodSeconds": 12,
"intervalSeconds": 10,
"timeoutSeconds": 10,
"consecutiveFailures": 10
}
],
"resources": {
"limits": {
"cpu": "0.5",
"memory": "8"
}
},
"volumes": [],
"secrets": [],
"configmaps": []
}
],
"networkMode": "BRIDGE",
"networktype": "cnm"
}
}
}
}
由于bcs-deployment是基于bcs-application构建,其中的大部分信息与bcs-application一致,包含以下内容:
关于这部分字段与结构的详细信息请见这里。
下面介绍一下关于bcs-deployment本身特性的相关策略。
"spec": {
"instance": 2,
"selector": {
"podname": "app-test-001"
},
"strategy": {
"type": "RollingUpdate",
"rollingupdate": {
"maxUnavilable": 1,
"maxSurge": 1,
"upgradeDuration": 60,
"rollingOrder": "CreateFirst",
"rollingManually":false
}
}
}
相关参数为spec.instance(第2行),用于配置要创建的taskgroup的数量。该taskgroup是由deployment创建的一个application来管理。
相关参数为spec.selector(第3行),用于配置deployment所需要管理的bcs-appliction,默认这些bcs-application是由bcs-deployment自动创建的。
相关配置项为spec.strategy(第6-15行),用于配置deployment执行rolling操作时所需要的策略:
type: 定义deployment进行rolling时要选择的策略,目前只支持RollingUpdate:
RollingUpdate
:
RollingUpdate 即为滚动升级,该策略允许我们对滚动操作的过程中每次新创建的容器数量,删除的容器数量,创建间隔等策略进行控制。当原有的taskgroup全部删除,新的taskgroup(个数通过instances参数定义)全部创建,则update结束。RollingUpdate 可以对Rolling的操作进行详细的配置,包含以下参数:
maxUnavilable
:
决定了每个rolling周期内可以删除
的taskgroup数量。如果原有的taskgroup已经全部删除,则后续每一次rolling中不会再删除taskgroup。maxSurge
:
决定了每个rolling周期内可以创建
的taskgroup数量。如果新的taskgroup已经全部创建,则后续每一次rolling中不会再创建taskgroup。upgradeDuration
:
配置每次rolling操作之间的最小
间隔时间。rollingOrder
:
配置在进行每次rolling操作期间的每个周期内,创建和删除应用的先后顺序。该配置支持两种模式CreateFirst
, DeleteFirst
。 CreateFirst策略会先创建新的应用,然后删除老的应用。而DeleteFirst策略会先删除老的应用,再创建新的应用。rollingManually
:
配置每次滚动是否需要手动触发,默认为false,即一次滚动完成之后在时间间隔结束之后自动进行下一次滚动,如果配置为true,则在每次滚动后自动pause,需输入resume命令才会在时间间隔结束之后进行下一次滚动创建deployment时,如果deployment(通过selector)关联的application已经存在,则会delete掉现有的application,并根据spec.template创建新的application。 如果不想更新application,仅仅只是做deployment与application的关联,则填写json时,spec.template不填。注意:不是spec.template:{},而是该字段不填写。
我们假设rolling前deployment的instances为oldInstances, rolling的deployment instances为newInstances。可以预见在rolling过程中会有以下三种场景:
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。