k8s service的yaml定义
 

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社区为您提供最前沿的新闻资讯和知识内容

更多推荐