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的节点。

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐