首页 » 翻译 » Kubernetes » 正文

Kubernete如何通过一个yaml文件创建一个service

官方文档地址:https://cloud.google.com/container-engine/docs/services/operations

先看一个服务的配置文件

{
“kind”: “Service”,
“apiVersion”: “v1″,
“metadata”: {
“name”: string
},
“spec”: {
“ports”: [{
“port”: int,
“targetPort”: int
}],
“selector”: {
string: string
},
“type”: “LoadBalancer”
}
}

创建服务的命令也是kubectl create -f FILE

针对配置文件的选项:

kind:永远是Service(因为创建的使service,纯废话)
apiVersion:现在使v1
metadata 包含如下字段:
name:服务的名称

spec:包含如下字段:
ports:需要座端口转发的端口(就是对应的端口),就是服务暴露给集群的端口,通过这个端口可以访问服务,targetPort 是那些真正组成这个服务的那些node暴露的端口
selector:标签选择器,根据这个值与pod的标签值,来确定这个服务有哪些Pod组成
type:这个使可选的,LoadBalancer的话会申请一个负载群衡器来给服务使用

如下配置文件是建立在我们已经创建了一系列的Pod,这些pod都暴露的9376端口,并且都包含标签app=example

第一个:
{
“kind”: “Service”,
“apiVersion”: “v1″,
“metadata”: {
“name”: “myapp”
},
“spec”: {
“ports”: [{
“port”: 8765,
“targetPort”: 9376
}],
“selector”: {
“app”: “example”
}
}
}

第二个:
{
“kind”: “Service”,
“apiVersion”: “v1″,
“metadata”: {
“name”: “myapp”
},
“spec”: {
“ports”: [{
“port”: 8765,
“targetPort”: 9376
}],
“selector”: {
“app”: “example”
},
“type”: “LoadBalancer”
}
}

第一个创建的并没有load balancer;我们可以通过访问任何node的8765端口访问;第二个使用了LoadBalancer,这个时候创建了一个单独的IP地址,这个IP地址会转发相关的请求到各个NODE,为了访问这个服务,

Zhiming Zhang

Senior devops at Appannie
一个奔跑在运维路上的胖子
Zhiming Zhang

Latest posts by Zhiming Zhang (see all)