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