使用Service连结到应用

kubernetes假设pod可与其他pod通信,不管他们在哪个主机上
kubernetes给每一个Pod分配一个集群私有ip地址
没必要在pod与pod之间创建链接或将容器的端口映射到主机端口
同一个pod内的所有容器都能通过localhost上的端口互相连通
集群中的所有pod也不需要通过nat转换就能够互相看到

创建Service

有一组在一个扁平的,集群范围的地址空间中运行nginx服务的pod
我们虽然可以直接链接到某个pod,但是如果某个节点关机,pod会终止,deployment内的replicaset将创建新的Pod,且使用不同的Ip,基于这种情况,所以要提出service
kubernetes service是集群中提供相同功能的一组pod的抽象表达
kubernetes service是集群中提供相同功能的一组pod的抽象表达
当每个service创建时,会被分配一个唯一的Ip地址,也称为clusterip
clusterip地址与service的生命周期绑定在一起,只要service存在,它就不会改变
只要service存在,它就不会改变
可以配置pod使它与service进行通信
pod知道与service通信将被自动的负载均衡到该service中的某些pod上

使用expose命令为nginx副本创建service
kubectl expose deployment/my-nginx

apiVersion: v1
kind: Service
metadata:
	name: my-nginx
	labels:
		run: my-nginx
spec:
	ports:
	- port: 80
	  protocol: TCP
  	selector:
  		run: my-nginx
  		

创建的Service会将具有标签run:my-nginx的Pod的TCP 80端口暴露到一个抽象的Service端口上

暴露service

将service暴露在一个外部ip地址有两种方式
NodePort和LoadBanlancer

你可能感兴趣的:(kubernetes)