k8s service的yaml定义
Service:Service有四种type: ClusterIP(默认)、NodePort、LoadBalancer、ExternalName. 其中NodePort和LoadBalancer两类型的Services可以对外提供服务。engine.yaml:apiVersion: v1#API的版本号,版本号可以用 kubectl api-versions...
·
Service:
Service有四种type: ClusterIP(默认)、NodePort、LoadBalancer、ExternalName. 其中NodePort和LoadBalancer两类型的Services可以对外提供服务。
engine.yaml:
apiVersion: v1 #API的版本号,版本号可以用 kubectl api-versions 查询到
kind: Service #表明资源对象,例如Pod、RC、Service、Namespace及Node等
metadata: #资源对象的元数据定义
name: engine #service名称
spec: #资源对象的详细定义,持久化到etcd中保存
type: ClusterIP #Service类型,ClusterIP供kubernates集群内部pod访问
ports: #暴露的端口列表
- port: 8080 #Service监听的端口,对应ClusterIP,即ClusterIP+ServicePort供集群内部pod访问的
targetPort: 8080 #对应pod中容器的端口
protocol: TCP #协议,支持TCP、UDP,默认TCP
name: http #端口名称
selector: #label选择器,管理label对应的pod
name: enginehttpmanage #pod的label
kubectl create -f engine.yaml
kubectl get services | grep engine
kubectl delete service engine
图片参考:kubernetes pod、service文件yaml模版格式
备用:
apiVersion: v1
kind: Service
metadata:
name: servicename
labels:
name: servicename
spec:
type: NodePort
ports:
- port: 8080
targetPort: 8080
nodePort: 8080 #port和nodePort都是service的端口,前者暴露给k8s集群内部服务访问,后者暴露给
#k8s集群外部流量访问。从上两个端口过来的数据都需要经过反向代理kube-proxy,流
#入后端pod的targetPort上,最后到达pod内的容器。
name: http
protocol: tcp
selector:
name: servicename
补充:NodePort类型的service可供外部集群访问是因为service监听了宿主机上的端口,即监听了(所有节点)nodePort,该端口的请求会发送给service,service再经由负载均衡转发给Endpoints的节点。
更多推荐
已为社区贡献4条内容
所有评论(0)