同步操作将从 腾讯蓝鲸智云/bk-bcs 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
bcs application实现Pod的含义,并与k8s的RC,Mesos的app概念等价。
{
"apiVersion": "v4",
"kind": "application",
"restartPolicy": {
"policy": "Never | Always | OnFailure",
"interval": 5,
"backoff": 10,
"maxtimes": 10
},
"killPolicy": {
"gracePeriod": 10
},
"constraint": {
"intersectionItem": [
{
"unionData": [{
"name": "label",
"operate": "EXCLUDE",
"type": 4,
"set": {
"item": [
"appname:gamesvr",
"appname:dbsvr"
]
}
}]
},
{
"unionData": [{
"name": "hostname",
"operate": "CLUSTER",
"type": 4,
"set": {
"item": [
"slave3",
"slave4",
"slave5"
]
}
}]
},
{
"unionData": [{
"name": "district",
"operate": "GROUPBY",
"type": 4,
"set": {
"item": [
"shanghai",
"shenzhen",
"tianjin"
]
}
}]
},
{
"unionData": [{
"name": "hostname",
"operate": "LIKE",
"type": 3,
"text": {
"value": "slave[3-5]"
}
}]
},
{
"unionData": [{
"name": "hostname",
"operate": "UNLIKE",
"type": 3,
"text": {
"value": "slave[1-2]"
}
}]
},
{
"unionData": [{
"name": "hostname",
"operate": "UNIQUE"
}]
},
{
"unionData": [{
"name": "idc",
"operate": "MAXPER",
"type": 3,
"text": {
"value": "5"
}
}]
}
]
},
"metadata": {
"labels": {
"test_label": "test_label"
},
"name": "ri-test-rc-001",
"namespace": "nfsol"
},
"spec": {
"instance": 1,
"template": {
"metadata": {
"labels": {
"test_label": "test_label"
}
},
"spec": {
"containers": [{
"hostname": "container-hostname",
"command": "bash",
"args": [
"args1",
"args2"
],
"parameters": [{
"key": "rm",
"value": "false"
},
{
"key": "ulimit",
"value": "nproc=8092"
},
{
"key": "ulimit",
"value": "nofile=65535"
},
{
"key": "ip",
"value": "127.0.0.1"
}
],
"type": "MESOS",
"env": [
{
"name": "test_env",
"value": "test_env"
},
{
"name": "namespace",
"value": "${bcs.namespace}"
},
{
"name": "http-port",
"value": "${bcs.ports.http_port}"
}
],
"image": "docker.hub.com/nfsol/log:92763",
"imagePullUser": "userName",
"imagePullPasswd": "passwd",
"imagePullPolicy": "Always|IfNotPresent",
"privileged": false,
"ports": [{
"containerPort": 8090,
"hostPort": 8090,
"name": "test-tcp",
"protocol": "TCP"
},
{
"containerPort": 8080,
"hostPort": 8080,
"name": "http-port",
"protocol": "http"
}
],
"healthChecks": [{
"type": "HTTP|TCP|REMOTE_HTTP|REMOTE_TCP",
"intervalSeconds": 30,
"timeoutSeconds": 5,
"consecutiveFailures": 3,
"gracePeriodSeconds": 5,
"http": {
"port": 8080,
"portName": "test-http",
"scheme": "http|https",
"path": "/check"
},
"tcp": {
"port": 8090,
"portName": "test-tcp"
}
}],
"resources": {
"limits": {
"cpu": "2",
"memory": "8"
},
"requests": {
"cpu": "2",
"memory": "8"
}
},
"volumes": [{
"volume": {
"hostPath": "/data/host/path",
"mountPath": "/container/path",
"readOnly": false
},
"name": "test-vol"
}],
"secrets": [{
"secretName": "mySecret",
"items": [{
"type": "env",
"dataKey": "abc",
"keyOrPath": "SRECT_ENV"
},
{
"type": "file",
"dataKey": "abc",
"keyOrPath": "/data/container/path/filename.conf",
"subPath": "relativedir/",
"readOnly": false,
"user": "root"
}
]
}],
"configmaps": [{
"name": "template-configmap",
"items": [{
"type": "env",
"dataKey": "config-one",
"keyOrPath": "SECRET_ENV"
},
{
"type": "file",
"dataKey": "config_two",
"dataKeyAlias": "config-two",
"KeyOrPath": "/data/contianer/path/filename.txt",
"readOnly": false,
"user": "root"
}
]
}]
}],
"networkMode": "BRIDGE",
"networkType": "cnm",
"netLimit": {
"egressLimit": 100
}
}
}
}
}
restartPolicy字段说明:
constraint字段用于定义调度策略
该字段为数组,策略为:所有元素同时满足时才进行调度。使用多个IntersectionItem可以同时满足多个条件限制。
每个IntersectionItem中支持多个UnionData为规则细节字段,用于填写调度匹配规则,也为数组,该数组含义为:所有元素只需要满足一个即可。使用UnionData可以实现多个条件满足其一即可。 UnionData字段说明:
{
"name": "hostname",
"operate": "ClUSTER",
"type": 3|4,
"set": {
"item": ["mesos-slave-1", "mesos-slave-2", "mesos-slave-3"]
},
"text":{
"value": "mesos-slave-1"
}
}
案例说明:
{
"name": "hostname",
"operate": "UNIQUE"
}
{
"name": "section",
"operate": "ClUSTER",
"type": 4,
"set": {
"item": ["shenzhen", "dongguan"]
}
}
{
"name": "hostname",
"operate": "LIKE",
"type": 3,
"text": {
"value": "mesos-slave-[1-2]"
}
}
当容器网络使用bcs-cni方案的时,如果想针对容器指定IP,可以使用以下label
当容器指定Ip时,不同的taskgroup需要调度到特定的宿主机上面,宿主机的制定方式与constraint调度约束一致,如下是使用InnerIp: io.tencent.bcs.netsvc.requestip.[i]: "127.0.0.1|InnerIp=127.0.0.1;127.0.0.2" 使用分隔符"|"分隔,"|"前面为容器Ip,后面为需要调度到的宿主机Ip,多个宿主机之间使用分隔符";"分隔,宿主机Ip支持正则表示式,方式如下: io.tencent.bcs.netsvc.requestip.[i]: "127.0.0.1|InnerIp=127.0.0.[12-25];127.0.0.[11-13]"
application容器中env环境变量的配置,支持几种bcs系统常量
例如
"env": [
{
"name": "namespace",
"value": "${bcs.namespace}"
},
{
"name": "http-port",
"value": "${bcs.ports.http_port}"
}
]
对容器的网络流量进行限制,包括ingress(进流量)和egress(出流量),默认情况下不限制。 暂时只支持对egress的限制。
支持主机磁盘挂载
主要功能是引用configmap数据,并作为环境变量/文件注入容器中。
环境变量注入
文件注入
secret在k8s和mesos中实现存在差异。在k8s中,即为默认支持的secret数据,并存储在etcd中;在mesos中,secret为bcs-scheduler增加 的数据结构,数据默认存储在vault中,读写控制需要通过bcs-authserver。secrets的数据默认可以注入环境变量/文件。
在k8s中,secret只能存储一项数据,所以不存在子项数据结构。mesos下,一个secret可以存储多项数据。
注入环境变量:
注入文件
ports字段说明:
特别说明:
端口随机的状态下,scheduler会根据ports字段序号,生成PORT0 ~ n的环境变量,以便业务读取该随机端口。不支持PORT_NAME的方式
statuses
field.此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。