第六章 通过Service访问Pod(下)

6.4 外网如何访问service

 (1)ClusterIp:

   Service通过Cluster内部的IP对外提供服务,只有Cluster内的节点和Pod可以访问,这是默认的Service类型。

 (2)NodePort:

   Service通过Cluster节点的静态端口对外提供服务。Cluster外部可以通过<NodeIp>.<NodePort>访问Service. 

 (3)LoadBalancer:

      Service利用cloud provider特有的load balancer对外提供服务。

 

       下面实践一下NodePort:

apiVersion: v1
kind: Service
metadata:
  name: httpd-svc
spec:
  type: NodePort
  selector:
    run: httpd
  ports:
  - protocol: TCP
    port: 8080
    targetPort: 80
    

 

如下:   8080是Cluster IP监听的端口;  7028是Node(节点的)端口 

kubeusr@GalaxyKubernetesMaster:~$ kubectl get service
NAME         TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)         AGE
httpd-svc    NodePort    10.109.31.118   <none>        8080:7028/TCP   18s         
kubernetes   ClusterIP   10.96.0.1       <none>        443/TCP         128d

kubeusr@GalaxyKubernetesMaster:~$ curl 9.42.80.172:7028
<html><body><h1>It works!</h1></body></html>

上面的配置没有指定Nodeport的端口号,那么就是随机选择的,也可以指定Nodeport

apiVersion: v1
kind: Service
metadata:
  name: httpd-svc
spec:
  type: NodePort
  selector:
    run: httpd
  ports:
  - protocol: TCP
    nodePort: 30000                # 节点上的监听端口
    port: 8080                     # Cluster 上的监听端口
    targetPort: 80                 # Port的监听端口

 

       

     

        

posted @ 2018-12-29 16:31  刘大飞  阅读(522)  评论(0编辑  收藏  举报