Service分类

Service主要分为3种类型,分别为ClusterIP、NodePort、LoadBlancer

1)ClusterIP

该方式为默认类型,即,不定义type字段时(如上面service的示例),就是该类型。

spec:
  selector:
    app: myng
  type: ClusterIP
  ports:
  - protocol: TCP
    port: 8080  ##service的port
    targetPort: 80  ##pod的port

2)NodePort

如果想直接通过k8s节点的IP直接访问到service对应的资源,可以使用NodePort,Nodeport对应的端口范围:30000-32767

spec:
  selector:
    app: myng
  type: NodePort
  ports:
  - protocol: TCP
    port: 8080  ##service的port
    targetPort: 80  ##pod的port
    nodePort: 30009  ##可以自定义,也可以不定义,它会自动获取一个端口

3)LoadBlancer

这种方式,需要配合公有云资源比如阿里云、亚马逊云来实现,这里需要一个公网IP作为入口,然后来负载均衡所有的Pod。

spec:
  selector:
    app: myng
  type: LoadBlancer
  ports:
  - protocol: TCP
    port: 8080  ##service的port
    targetPort: 80  ##pod的port

Service示例

Service简称(svc) YAML示例:

1、创建YAML文件

$ vim ng-svc.yaml
apiVersion: v1
kind: Service
metadata:
  name: ngx-svc
  namespace: aming
spec:
  selector:
    app: myng
  ports:
  - protocol: TCP
    port: 8080  ##service的port
    targetPort: 80  ##pod的port

2、使用YAML创建service

$ k apply -f ng-svc.yaml

3、查看,默认为ClusterIP类型

$ k get svc -n aming

NAME      TYPE        CLUSTER-IP    EXTERNAL-IP   PORT(S)    AGE
ngx-svc   ClusterIP   10.0.57.177   <none>        8080/TCP   4s

4、恢复

$ k delete -f ng-svc.yaml