第六章 通过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的监听端口