同步操作将从 腾讯蓝鲸智云/bk-bcs 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
service主要用服务发现,DNS基础数据,loadbalance服务导出。
{
"apiVersion":"v4",
"kind":"service",
"metadata":{
"name":"template-service",
"namespace":"defaultGroup",
"labels":{
"BCSGROUP": "external",
"BCSBALANCE": "source|roundrobin|leastconn",
"BCS-WEIGHT-summer": "3",
"BCS-WEIGHT-wingame": "7"
}
},
"spec": {
"selector": {
"label-one": "summer",
"label-two": "wingame"
},
"type": "ClusterIP|NodePort|None|Integration",
"clusterIP": ["127.0.0.1", "127.0.0.2"],
"ports": [
{
"name": "http_8080",
"domainName": "a.business.qq.com",
"path": "/local/path",
"protocol": "http",
"servicePort": 80,
"targetPort": 8080,
"nodePort": 31000
},
{
"name": "tcp-28800",
"domainName": "tcp.a.business.qq.com",
"path": "/local/path",
"protocol": "tcp",
"servicePort": 28800,
"targetPort": 8080,
"nodePort": 31001
}
]
}
}
如果存在endpoints,DNS直接watch并直接关联DNS解析记录。 如果没有,自行关联service和taskgroup信息,解析status信息提取IP。
{
"apiVersion":"v1",
"kind":"endpoint",
"metadata":{
"name":"template-endpoint",
"namespace":"defaultGroup",
"label":{
"io.tencent.bcs.cluster": "SET-SH-setname"
}
},
"eps": [
{
"nodeIP": "127.0.0.1",
"containerIP": "127.0.1.2"
},{
"nodeIP": "127.0.0.2",
"containerIP": "127.0.1.1"
}
]
}
clusterIP:考虑未来需要做外部域名访问和服务发现,clusterIP暂留用于指向proxyIP信息
ports[x]说明:
BCSGROUP: 用于service导出标识 BCSBALANCE:用于服务导出负载均衡算法,默认值为roundrobin BCS-WEIGHT-: 当使用selector匹配多个application时,用于表达多个application之间的权重,该值为大于等于0的整数,类型为string。如果等于0,则该application没有流量导入。
如果要启动loadbalance的功能,需要:
ports信息在loadbalance中的含义说明:
bcs-loadbalance可以工作两种环境下:
服务端口数据来源于镜像字段ports,主要包含:
填写端口信息,至少需要填写name、protocol、containerPort、servicePort信息。如果不需要实现端口映射,hostPort无需填写。
docker存在网络模式:None,Host,Bridge,User(CNM/CNI),端口映射对None(当前Executor暂未校验)
hostPort使用定义:-1为不使用,0为随机端口,正数为指定端口
针对docker容器端口映射实现,端口绑定有两个情况:
下发参数中没有parameter参数-P,并直接指定hostPort,executor默认直接将该指定参数提交给docker进行绑定。端口冲突是否需要用户执行决断。 如果没有特别指定调度策略将实例分开,有极大几率造成端口冲突。
Host模式下hostPort保持和containerPort一致,方便datawatch处理
随机端口绑定
下发参数中存在-P,并且有ports字段,hostPort字段默认为0,scheduler使用offer上报的端口信息确认端口,更新taskgroup字段,并下发给Executor。 随机端口绑定可以消除端口冲突的问题。有随机端口的情况下,为了方便应用获取到端口信息,需要将port端口根据需要导入环境变量PORT0 ~ PORTn
更新(2017-05-22,根据LOL需求更新):
executor上报容器状态时,增加ports字段,结构包括name,hostPort,containerPort,protocol
使用随机端口时,默认hostPort直接填写0,使用offer里面端口资源更新hostPort信息,不使用HostPort,建议默认值为负数
上报ExportService时,结构调整,当前为
//ExportService info to hold export service
type ExportService struct {
Cluster string `json:"cluster"` //cluster info
Namespace string `json:"namespace"` //namespace info, for business
ServiceName string `json:"serviceName"` //service name
ServicePort []ExportPort `json:"ports"` //export ports info
BCSGroup []string `json:"BCSGroup"` //service export group
SSLCert bool `json:"sslcert"` //SSL certificate for ser
Balance string `json:"balance"` //loadbalance algorithm, default source
MaxConn int `json:"maxconn"` //max connection setting
}
字段信息:
调整ServicePort和Backends字段,对其进行合并
type ExportPort struct {
BCSVHost string `json:"BCSVHost"`
Protocol string `json:"protocol"`
Path string `json:"path"`
ServicePort int `json:"servicePort"`
Backends []Backend `json:"backends"`
}
type Backend struct {
TargetIP string `json:"targetIP"`
TargetPort int `json:"targetPort"`
}
datawatch构建ExportService时需要按照新结构进行。构建ExportService信息需要结合Service和TaskGroup信息。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。